نهان‌سازی درخط
تعریف نهان‌سازی در خط و پیاده‌سازی اولیه

مفهوم نهان‌سازی در خط مبتنی بر این مشاهده تجربی است که اشیاء مورد استفاده در یک نقطه فراخوانی خاص معمولاً از یک نوع هستند. در این موارد ، با ذخیره کردن نتیجه جستجوی تابع به صورت "در خط"، یعنی مستقیماً در نقطه فراخوانی، می‌توان عملکرد را مقدار خوبی بهبود بخشید. برای تسهیل این فرایند، به نقاط فراخوانی وضعیت‌های مختلفی اختصاص داده می‌شود. در ابتدا، به یک نقطه فراخوانی وضعیت "ناشناخته" نسبت داده می‌شود. هنگامی که اجرای برنامه به یک نقطه فراخوانی خاص با وضعیت ناشناخته رسید، یک جستجوی پویای تابع انجام می‌شود و نتیجه را در نقطه فراخوانی ذخیره می‌کند و وضعیت آن نقطه فراخوانی به "تک‌ریخت" تغییر پیدا می‌کند. اگر اجرای برنامه دوباره به همان نقطه فراخوانی برسد، پذیرنده اصلی (تابع مقصد، تابعی که واقعاً باید اجرا شود و ممکن است در کلاس پدر شیء مورد نظر پیاده ساری شده باشد) را از آن بازیابی می‌کند و مستقیماً بدون انجام هرگونه جستجوی بیشتر، آن را فراخوانی می‌کند. برای آن که احتمال وجود انواع مختلفی از اشیاء در یک نقطه فراخوانی وجود دارد، زبان برنامه‌نویسی در زمان اجرا باید شرایط محافظت را درون کد وارد کند (چک کند که نوع شیءای که تابع آن فراخوانی شده با نوع قبلی و مورد انتظار آن برابر باشد). به طور معمول برای پیاده‌سازی این موارد از نقطه فراخوانی استفاده نمی‌شود و در بخشی به نام مقدمه پذیرنده (بخشی که پیش از اجرای تابع مقصد، فراخوانی می‌شود) قرار می‌گیرند تا بتوان از پیش‌بینی‌کننده پرش بهتری استفاده کرد. با این کار به جای چندبار کپی کردن در نقاط فراخوانی مختلف یک بار شرایط محافظت در مقدمه پذیرنده قرار می‌گیرد در نتیجه فضای کمتری اشغال می‌شود. اگر نقطه فراخوانی در وضعیت "تک‌ریخت" با نوع دیگری شیء، غیر از آنچه انتظار دارد مواجه شود، باید مجدداً به حالت "ناشناخته" تغییر یابد و دوباره یک جستجوی پویای تابع انجام شود.
پیاده‌سازی ابتدایی با استفاده از یک ثبات و یک دستورالعمل فراخوانی است. با رسیدن به نقطه فراخوانی، مقدار ثبات با آدرس شیءای که تابع را فراخوانده است بارگذاری می‌شود (در مثال بالا آدرس obj که تابع toString را فراخوانی کرده در ثبات قرار می‌گیرد) اگر نقطه فراخوانی در وضعیت ناشناخته باشد دستورالعملی اجرا می‌شود که با استفاده از حافظه نهان جستجوی تابع سطح اول که در بالا اشاره شد، تابع مقصد (پذیرنده) را پیدا می‌کند، سپس وضعیت نقطه فراخوانی به "تک‌ریخت" تغییر پیدا می‌کند.
اگر نقطه فراخوانی در وضعیت "تک‌ریخت" باشد، در زمان اجرا دستورالعمل‌ها جای‌گذاری می‌شوند، به این صورت که فراخوانی یافتن تابع اصلی با فراخوانی مقدمه پذیرنده تعویض می‌شود (که پیش از این بوسیله جستجوی پویای تابع یافت شده بود). اکنون پیوند نقطه فراخوانی با تابع هدف (پذیرنده) ایجاده شده است. در مقدمه پذیرنده، شرایط محافظت نوشته شده است که در آن مطابقت نوع شیء فعلی (که در ثبات ذخیره شده) با نوع شیء مورد انتظار بررسی می‌شود، اگر نوع شیءها تطبیق داده شوند تابع به اجرای خود ادامه می‌دهد به عبارتی اجرای تابع هدف بلافاصله پس از اجرای مقدمه انجام می‌شود، در غیر این صورت اجرا به نقطه فراخوانی بازمی‌گردد و استراتژی های مختلفی امکان پذیر است، به عنوان مثال می‌توان وضعیت نقطه فراخوانی را به حالت "ناشناخته" تغییر داده و نهان‌سازی خطی را برای نوع شیء جدید انجام داد.
"نهان‌سازی در خط" در مقایسه با "حافظه نهان جستجوی تابع سطح اول" به جای استفاده از انتخاب‌گر (که وظیفه آن انتخاب تابع هدف مناسب به ازای نوع شیء مورد نظر می‌باشد) فقط یک بررسی نوع شیء دارد و همچنین به جای یک فراخوانی غیرمستقیم یا استفاده از جداول توابع مجازی، از یک فراخوانی مستقیم استفاده می‌کند (که برای بارگذاری چند دستور همزمان و همچنین پیاده سازی خط لوله مفید است)، به همین دلیل نهان‌سازی در خط کارایی بهتری دارد.