* decl.cs: If possible, use lookuptypedirect here. We can only do
this if there is no `.' after the namespace. Avoids using
LookupType, which does lots of slow processing.
(FindNestedType) New method, does what it says :-).
* namespace.cs: use LookupTypeDirect.
* rootcontext.cs: use membercache, if possible.
* typemanager.cs (LookupTypeDirect): Cache negative hits too.
svn path=/trunk/mcs/; revision=28523

* expression.cs:
According to the spec,
In a member access of the form E.I, if E is a single identifier,
and if the meaning of E as a simple-name (�7.5.2) is a constant,
field, property, localvariable, or parameter with the same type as
the meaning of E as a type-name (�3.8), then both possible
meanings of E are permitted.
We did not check that E as a simple-name had the same type as E as
a type name.
This trivial check gives us 5-7% on bootstrap time.
2004-05-30 Ben Maurer <bmaurer@users.sourceforge.net>
* expression.cs (Invocation.OverloadResolve): Avoid the
use of hashtables and boxing here by allocating on demand.
svn path=/trunk/mcs/; revision=28522

* expression.cs:
According to the spec,
In a member access of the form E.I, if E is a single identifier,
and if the meaning of E as a simple-name (�7.5.2) is a constant,
field, property, localvariable, or parameter with the same type as
the meaning of E as a type-name (�3.8), then both possible
meanings of E are permitted.
We did not check that E as a simple-name had the same type as E as
a type name.
This trivial check gives us 5-7% on bootstrap time.
svn path=/trunk/mcs/; revision=28505