कुछ प्रस्तुति पर जाकर, मैं निम्नलिखित दावे में आया हूं: जब JVM कक्षा को लोड करता है, तो यह इसकी सामग्री का विश्लेषण कर सकता है और सुनिश्चित कर सकता है कि ऑपरेंड स्टैक का कोई ओवरफ़्लो या अंडरफ़्लो नहीं है। मुझे a lot of sources मिल गया है जो एक ही दावा करता है, लेकिन यह निर्दिष्ट किए बिना कि यह कैसे किया जाता है।कक्षा लोड करते समय JVM सत्यापित करने के लिए कोई संभावित ऑपरेंड स्टैक ओवरफ़्लो कैसे सत्यापित कर सकता है?
यह स्पष्ट नहीं है कि स्थिर विश्लेषण का उपयोग करके ऐसा सत्यापन कैसे किया जा सकता है। मान लें कि मेरे पास एक (दुर्भावनापूर्ण) विधि है जो तर्क के रूप में कुछ मान प्राप्त करती है, और पॉप की एक श्रृंखला करने के लिए इसका उपयोग करती है। लोड समय पर, पुनरावृत्तियों की संख्या ज्ञात नहीं है, क्योंकि यह विधि के कॉलर द्वारा दिए गए तर्क पर निर्भर करती है। इसलिए, ऐसा लगता है कि केवल रनटाइम पर यह निर्धारित करना संभव है कि कोई अंडरफ्लो होगा या नहीं। मुझे यहां क्या समझ नहीं आ रहा है?
वैधकर्ता लूप में पॉप करने के किसी भी प्रयास को अस्वीकार कर सकता है। –
@ मार्कोटोपॉलिक, मैंने 'पॉप' को सबसे स्पष्ट उदाहरण के रूप में इस्तेमाल किया। अन्य पॉपिंग आदेशों का भी उपयोग किया जा सकता है, जैसे विभिन्न 'स्टोर'। – eran
ठीक है, तो क्या आपको कोई वैध मामला दिखाई देता है जहां एक लूप चरण में धक्का देने के सापेक्ष कोड के पास पॉप (अतिरिक्त निर्देश द्वारा) होगा? –