ObjectMemory:
added: #lookupMethodForSelectorUnwindProtect:
#unwindHandlerInContext:aContext
--- a/ObjectMemory.st Sat Oct 01 19:43:30 2011 +0100
+++ b/ObjectMemory.st Sat Oct 01 20:05:39 2011 +0100
@@ -916,6 +916,32 @@
%}
! !
+!ObjectMemory class methodsFor:'VM unwind protect support'!
+
+unwindHandlerInContext:aContext
+
+ "
+ Return an unwind handler block for given context.
+ Selector of that context denotes which unwind handler
+ to use.
+
+ Occasionally, the VM needs to unwind-protect some C code.
+ If so, it creates and artificial context on the stack and
+ marks it for unwind, so stack unwinding logic finds it
+ and handles it.
+
+ Now, only #lookupMethodForSelectorUnwindProtect is supported
+ (ensures the lookup is popped out from the lookupActications)
+ "
+ aContext selector == #lookupMethodForSelectorUnwindProtect: ifTrue:[
+ ^[Transcript showCR:'externalMethodLookupPop!!!!!!']
+ ].
+
+ self internalError:'Unknown VM unwind protect action'
+
+ "Created: / 01-10-2011 / 19:15:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!ObjectMemory class methodsFor:'access debugging'!
setTrapOnAccessFor:anObject
@@ -5528,7 +5554,7 @@
!
version_SVN
- ^ '$Id: ObjectMemory.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+ ^ '$Id: ObjectMemory.st 10705 2011-10-01 19:05:39Z vranyj1 $'
! !
ObjectMemory initialize!