On Mar 26, 2008, at 10:15 AM, David Chisnall wrote: > > On 26 Mar 2008, at 16:40, Devang Patel wrote: > >> >> On Mar 26, 2008, at 8:09 AM, David Chisnall wrote: >> >>>> In this method you do a field lookup by iterating over all ObjectTy >>>> ivars. Would not it be more efficient to keep a map just like >>>> normal C >>>> struct fields ? >>> >>> You'd need to generate the map at some point, possibly the first >>> time it's called? >> >> The map is collected for C structure while determining its layout >> (in ConvertType()). >> >>> Since it works as-is, I'd rather do this later if profiling >>> indicates this is a bottleneck. >> >> A class is defined once but its fields are referenced multiple >> times, so it makes sense to avoid lookups during field access. >> That's what we do for C structures. Let's not diverge here. > > I have added a map from decls to field numbers which is filled in > when the LLVM type of the object is generated. This isn't quite > ideal, since subclasses have the same ivars at the same locations > and this is not taken into account, but is simpler (and might be > faster) than calculating the offset every lookup. > >>> + assert(!verifyFunction(*CurFn)); >> >> nit-pick, add a message here. > > That code was copied-and-pasted from the GenerateCode method used > for generating functions. For completeness I've added a message in > to where I originally copied it from as well.
Great!. I'll apply this later today (or go ahead if you've commit access). - Devang _______________________________________________ cfe-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
