LazyMethod.st
changeset 89 f0c8faf27ceb
parent 88 202c3b1fbc0b
child 102 77e4d1119ff2
equal deleted inserted replaced
88:202c3b1fbc0b 89:f0c8faf27ceb
    19 
    19 
    20 LazyMethod comment:'
    20 LazyMethod comment:'
    21 COPYRIGHT (c) 1994 by Claus Gittinger
    21 COPYRIGHT (c) 1994 by Claus Gittinger
    22 	      All Rights Reserved
    22 	      All Rights Reserved
    23 
    23 
    24 $Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.10 1995-05-16 17:11:47 claus Exp $
    24 $Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.11 1995-05-18 15:38:13 claus Exp $
    25 '!
    25 '!
    26 
    26 
    27 !LazyMethod class methodsFor:'documentation'!
    27 !LazyMethod class methodsFor:'documentation'!
    28 
    28 
    29 copyright
    29 copyright
    40 "
    40 "
    41 !
    41 !
    42 
    42 
    43 version
    43 version
    44 "
    44 "
    45 $Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.10 1995-05-16 17:11:47 claus Exp $
    45 $Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.11 1995-05-18 15:38:13 claus Exp $
    46 "
    46 "
    47 !
    47 !
    48 
    48 
    49 documentation
    49 documentation
    50 "
    50 "
    70 	CompilationFailedSignal := ExecutionErrorSignal newSignalMayProceed:true.
    70 	CompilationFailedSignal := ExecutionErrorSignal newSignalMayProceed:true.
    71 	CompilationFailedSignal nameClass:self message:#compilationFailedSignal.
    71 	CompilationFailedSignal nameClass:self message:#compilationFailedSignal.
    72 	CompilationFailedSignal notifierString:'compilation of lazy method failed'.
    72 	CompilationFailedSignal notifierString:'compilation of lazy method failed'.
    73 
    73 
    74 	Access := Semaphore forMutualExclusion.
    74 	Access := Semaphore forMutualExclusion.
       
    75 	"/ Access := RecursionLock new.
    75     ]
    76     ]
    76 ! !
    77 ! !
    77 
    78 
    78 !LazyMethod class methodsFor:'Signal constants'!
    79 !LazyMethod class methodsFor:'Signal constants'!
    79 
    80 
   102      Otherwise, we might get into trouble, if (due to a timeout)
   103      Otherwise, we might get into trouble, if (due to a timeout)
   103      another recompile is forced while compiling this one ...
   104      another recompile is forced while compiling this one ...
   104      (happened when autoloading animation demos)
   105      (happened when autoloading animation demos)
   105     "
   106     "
   106     [
   107     [
   107 	Access wait.
   108 	Access critical:[
   108 	[
       
   109 	    m := self asByteCodeMethod.
   109 	    m := self asByteCodeMethod.
   110 	] valueNowOrOnUnwindDo:[
       
   111 	    Access signal.
       
   112 	].
   110 	].
   113     ] valueUninterruptably.
   111     ] valueUninterruptably.
   114 
   112 
   115     (m isNil or:[(byteCode := m byteCode) isNil]) ifTrue:[
   113     (m isNil or:[(byteCode := m byteCode) isNil]) ifTrue:[
   116 	"
   114 	"