<html><head><base href="x-msg://2438/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 16, 2009, at 5:50 AM, Nicolas Capens wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div lang="EN-US" link="blue" vlink="purple"><div class="Section1"><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 11pt; font-family: Calibri, sans-serif; ">Hi all,<o:p></o:p></div><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 11pt; font-family: Calibri, sans-serif; "><o:p> </o:p></div><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 11pt; font-family: Calibri, sans-serif; ">While profiling I discovered that the Function::getIntrinsicID() method is called a lot, and every time it uses string comparison to recompute the ID number. As far as I know the name of an intrinsic function doesn’t change, so the ID could be determined just once at Function construction time.<o:p></o:p></div><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 11pt; font-family: Calibri, sans-serif; "><o:p> </o:p></div><div style="margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 11pt; font-family: Calibri, sans-serif; ">I’ve attached a patch that does this and it appears to work for the code I tested it with. Could anyone look at potential caveats and if there are none commit it?</div></div></div></span></blockquote><div><br></div>Hi Nicolas,</div><div><br></div><div>Sorry for the delay.  I don't think that this is the right way to go.  Making Function larger is an extremely expensive thing to do.  There are use cases in LLVM where apps load large modules lazily and stream in functions on demand.  The way this works currently is that the function objects are created eagerly, but their bodies are lazy.  Increasing hte size of function can substantially penalize these cases.</div><div><br></div><div>Also, as Jeffrey points out, it is not safe with setName().</div><div><br></div><div>However, this would be a great thing to have.  Instead of adding a new field, is there space in the "SubClassData" field in Value?</div><div><br></div><div>-Chris</div><div><br></div></body></html>