ماذا يفعل بالضبط خيار GCC -FOBJC-DIRECT-DISPATCH؟
-
04-10-2019 - |
سؤال
يقول دليل مجلس التعاون الخليجي:
-fobjc-direct-dispatch
السماح بسرعة إلى مرسل الرسائل. على داروين يتم إنجاز هذا عبر صفحة Comm.
هل يمكنني افتراض أن هذا العلم يلغي الإرسال الديناميكي؟ كيف يعمل؟ أعتقد أنه يجب أن يكون بالسرعة مثل استدعاء وظيفة C إذا تم ربطه مباشرة.
المحلول
لا ، لا يزال الإرسال الديناميكي موجودًا (لا تزال المكالمات تسير objc_msgSend
). وهذا الخيار لا يقدم أي فرق حاليًا مع x86 (-64).
لبعض الوظائف (مثل
objc_msgSend
) التي تسمى بشكل متكرر للغاية بواسطة برامج Objective-C ، توجد نقاط دخول خاصة في الذاكرة العالية التي يمكن القفز إليها مباشرة (على سبيل المثال ، عبر "bla
"تعليمات على PowerPC) لتحسين الأداء.fobjc-direct-dispatch
سوف يتسبب الخيار في إنشاء مثل هذه القفزات. هذا الخيار متاح فقط بالتزامن مع وقت التشغيل التالي ؛ علاوة على ذلك ، تم تصميم البرامج مع-fobjc-direct-dispatch
سيتم تشغيل الخيار فقط على Mac OS X 10.4 (Tiger) أو الأنظمة اللاحقة.