में ढेर को बहाल करें रूबी का callcc
वर्तमान निरंतरता को कैप्चर करता है, जिसे बाद में नियंत्रण बहाल करने के लिए कहा जा सकता है, लेकिन डेटा नहीं। मैं स्मृति की वर्तमान छवि के साथ वर्तमान निरंतरता को पकड़ना चाहता हूं।चेकपॉइंट और रूबी
ऐसा लगता है कि ढेर को पकड़ना बहुत मुश्किल नहीं होना चाहिए; मैं ObjectSpace::each_object
और ObjectSpace::dump_all
, या Marshal.dump
पर भरोसा कर सकता हूं, या बस Object.clone
पर भरोसा कर सकता हूं। हालांकि, मुझे ढेर को बहाल करने के लिए कोई सीधा तरीका नहीं दिख रहा है। आदर्श रूप से, मैं object_id -> object
मानचित्र को पार करना चाहता हूं, प्रत्येक object_id
(और object_id
को फिर से जोड़कर, यदि संबंधित ऑब्जेक्ट जीसी किया गया था) के लिए ऑब्जेक्ट की पुरानी छवि को पुनर्स्थापित करना है। अनजाने में, कोई रूबी-स्तर एपीआई नहीं है जो मुझे ऐसा करने देता है। मैं सोच रहा हूं कि रुबी के जीसी में कोई निम्न स्तर के हुक हैं जो मैं उपयोग कर सकता हूं।
वैकल्पिक दृष्टिकोण के बारे में सुझाव सहित किसी भी मदद की सराहना की जाती है।