[pypy-commit] lang-smalltalk stmgc-c7: added actual interpretation to forked stm process. changed stmprocess class in the image
Patrick Rein
noreply at buildbot.pypy.org
Thu May 22 14:08:18 CEST 2014
Author: Patrick Rein <patrick.rein at student.hpi.uni-potsdam.de>
Branch: stmgc-c7
Changeset: r836:9e020878c717
Date: 2014-05-22 13:07 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/9e020878c717/
Log: added actual interpretation to forked stm process. changed
stmprocess class in the image
diff --git a/images/Squeak4.5-12568.changes b/images/Squeak4.5-12568.changes
--- a/images/Squeak4.5-12568.changes
+++ b/images/Squeak4.5-12568.changes
@@ -440,4 +440,4 @@
at: 14 at: 13 put: 1;
at: 12 at: 14 put: 1.
((numberOfRows > 16) and: (numberOfColumns > 16)) ifTrue: [
newField
at: 20 at: 3 put: 1;
at: 20 at: 4 put: 1;
at: 21 at: 2 put: 1;
at: 21 at: 5 put: 1;
at: 22 at: 3 put: 1;
at: 22 at: 4 put: 1;
at: 20 at: 20 put: 1;
at: 20 at: 21 put: 1;
at: 20 at: 22 put: 1.
].
- ^ newField! !
----SNAPSHOT----{21 January 2014 . 2:05:40 pm} Squeak4.5-12568.image priorSource: 84405!
----STARTUP----{17 May 2014 . 11:47:50 pm} as /home/hub/hpi/stm/src/lang-smalltalk/images/Squeak4.5-12568.image!
FileStream stdout nextPutAll: 'release.st'; cr; flush.!
----SNAPSHOT----{17 May 2014 . 11:48:30 pm} Squeak4.5-12568.image priorSource: 86737!
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'hh 5/17/2014 23:49'!
stmBenchmarkTest
FileStream stdout nextPutAll: 'starting stm process.'.
"^ StmProcess new fork"! !
----QUIT----{17 May 2014 . 11:49:16 pm} Squeak4.5-12568.image priorSource: 86999!
----STARTUP----{17 May 2014 . 11:50:46 pm} as /home/hub/hpi/stm/src/lang-smalltalk/images/Squeak4.5-12568.image!
Process subclass: #StmProcess
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Processes'!
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'hh 5/17/2014 23:53' prior: 33641587!
stmBenchmarkTest
FileStream stdout nextPutAll: 'starting stm process.'.
^ StmProcess new fork.! !
!StmProcess methodsFor: 'nil' stamp: 'hh 5/17/2014 23:54'!
fork <primitive: 787> FileStream stdout nextPutAll: 'Primitive stmFork failed'. self primitiveFailed! !
!StmProcess methodsFor: 'as yet unclassified' stamp: 'hh 5/17/2014 23:55' prior: 33642264!
fork
<primitive: 787>
self primitiveFailed! !
----SNAPSHOT----{17 May 2014 . 11:55:14 pm} Squeak4.5-12568.image priorSource: 87255!
----QUIT----{17 May 2014 . 11:55:30 pm} Squeak4.5-12568.image priorSource: 88078!
----STARTUP----{22 May 2014 . 11:48:49 am} as D:\code\python\spy-vm\lang-smalltalk\images\Squeak4.5-12568.image!
!StmProcess methodsFor: 'as yet unclassified' stamp: 'pre 5/22/2014 11:49'!
wait
<primitive: 789>
self primitiveFailed! !
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'pre 5/22/2014 11:50' prior: 33642105!
stmBenchmarkTest
| p |
FileStream stdout nextPutAll: 'starting stm process.'.
p := StmProcess new fork.
p join! !
!StmProcess methodsFor: 'as yet unclassified' stamp: 'pre 5/22/2014 11:50'!
join
<primitive: 789>
self primitiveFailed! !
StmProcess removeSelector: #wait!
----QUIT----{22 May 2014 . 11:50:32 am} Squeak4.5-12568.image priorSource: 88165!
\ No newline at end of file
+ ^ newField! !
----SNAPSHOT----{21 January 2014 . 2:05:40 pm} Squeak4.5-12568.image priorSource: 84405!
----STARTUP----{17 May 2014 . 11:47:50 pm} as /home/hub/hpi/stm/src/lang-smalltalk/images/Squeak4.5-12568.image!
FileStream stdout nextPutAll: 'release.st'; cr; flush.!
----SNAPSHOT----{17 May 2014 . 11:48:30 pm} Squeak4.5-12568.image priorSource: 86737!
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'hh 5/17/2014 23:49'!
stmBenchmarkTest
FileStream stdout nextPutAll: 'starting stm process.'.
"^ StmProcess new fork"! !
----QUIT----{17 May 2014 . 11:49:16 pm} Squeak4.5-12568.image priorSource: 86999!
----STARTUP----{17 May 2014 . 11:50:46 pm} as /home/hub/hpi/stm/src/lang-smalltalk/images/Squeak4.5-12568.image!
Process subclass: #StmProcess
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Processes'!
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'hh 5/17/2014 23:53' prior: 33641587!
stmBenchmarkTest
FileStream stdout nextPutAll: 'starting stm process.'.
^ StmProcess new fork.! !
!StmProcess methodsFor: 'nil' stamp: 'hh 5/17/2014 23:54'!
fork <primitive: 787> FileStream stdout nextPutAll: 'Primitive stmFork failed'. self primitiveFailed! !
!StmProcess methodsFor: 'as yet unclassified' stamp: 'hh 5/17/2014 23:55' prior: 33642264!
fork
<primitive: 787>
self primitiveFailed! !
----SNAPSHOT----{17 May 2014 . 11:55:14 pm} Squeak4.5-12568.image priorSource: 87255!
----QUIT----{17 May 2014 . 11:55:30 pm} Squeak4.5-12568.image priorSource: 88078!
----STARTUP----{22 May 2014 . 11:48:49 am} as D:\code\python\spy-vm\lang-smalltalk\images\Squeak4.5-12568.image!
!StmProcess methodsFor: 'as yet unclassified' stamp: 'pre 5/22/2014 11:49'!
wait
<primitive: 789>
self primitiveFailed! !
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'pre 5/22/2014 11:50' prior: 33642105!
stmBenchmarkTest
| p |
FileStream stdout nextPutAll: 'starting stm process.'.
p := StmProcess new fork.
p join! !
!StmProcess methodsFor: 'as yet unclassified' stamp: 'pre 5/22/2014 11:50'!
join
<primitive: 789>
self primitiveFailed! !
StmProcess removeSelector: #wait!
----QUIT----{22 May 2014 . 11:50:32 am} Squeak4.5-12568.image priorSource: 88165!
----STARTUP----{22 May 2014 . 1:53:40 pm} as D:\code\python\spy-vm\lang-smalltalk\images\Squeak4.5-12568.image!
!BlockClosure methodsFor: 'STM' stamp: 'pre 5/22/2014 13:58'!
newStmProcess
^ StmProcess forContext: [self value] asContext priority: Processor activePriority! !
!BlockClosure methodsFor: 'STM' stamp: 'pre 5/22/2014 13:59' prior: 33568777!
parallelFork
^ (self newStmProcess) fork; yourself! !
BlockClosure removeSelector: #newStmProcess!
!BlockClosure methodsFor: 'STM' stamp: 'pre 5/22/2014 13:59' prior: 33643726!
parallelFork
^ (self newSTMProcess) fork; yourself! !
!STMProcess methodsFor: 'as yet unclassified' stamp: 'pre 5/22/2014 14:00' prior: 33556280!
primWait
<primitive: 789>
SPyVM print: ' Failed to wait for process!! '
self primitiveFailed.! !
!STMProcess methodsFor: 'as yet unclassified' stamp: 'pre 5/22/2014 14:00' prior: 33644052!
primWait
<primitive: 789>
SPyVM print: ' Failed to wait for process!! '.
self primitiveFailed.! !
!STMProcess methodsFor: 'as yet unclassified' stamp: 'pre 5/22/2014 14:00' prior: 42636506!
fork
<primitive: 787>
Transcript show: '* STM Process did not fork *' , Character cr.
self primitiveFailed.
self resume! !
STMProcess removeSelector: #initialize!
Process subclass: #STMProcess
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-STM'!
Process subclass: #STMProcess
instanceVariableNames: 'lock'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-STM'!
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'pre 5/22/2014 14:02' prior: 33643008!
stmBenchmarkTest
| p |
FileStream stdout nextPutAll: 'starting stm process.'.
p := STMProcess new fork.
p join! !
Smalltalk removeClassNamed: #StmProcess!
Process subclass: #STMProcess
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-STM'!
Process subclass: #STMProcess
instanceVariableNames: 'lock'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-STM'!
!Integer methodsFor: '*SPy-Benchmarks' stamp: 'pre 5/22/2014 14:03' prior: 33644952!
stmBenchmarkTest
| p |
FileStream stdout nextPutAll: 'starting stm process.'.
p := [ 1 + 1. ] parallelFork.
p join! !
----SNAPSHOT----{22 May 2014 . 2:03:31 pm} Squeak4.5-12568.image priorSource: 88855!
----QUIT----{22 May 2014 . 2:06:55 pm} Squeak4.5-12568.image priorSource: 91148!
\ No newline at end of file
diff --git a/images/Squeak4.5-12568.image b/images/Squeak4.5-12568.image
index afbdfb32577e6a5f8388a264d6ff6ee8e350c64b..aa8ba78091bb620da5e2b213eb8a616801bb8b73
GIT binary patch
[cut]
diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -115,19 +115,12 @@
print "Me is started", bootstrapper.num_threads
bootstrapper.release()
- # ...aaaaand go!
- # wrapper.StmProcessWrapper(interp.space, w_stm_process).store_lock(1)
-
- # interp.interpret_with_w_frame(w_frame, may_context_switch=False)
- time.sleep(2.5)
-
- s_stm_process = w_stm_process.as_special_get_shadow(interp.space, StmProcessShadow)
- s_stm_process.lock.release()
-
- # Signal waiting processes
- #wrapper.StmProcessWrapper(interp.space, w_stm_process).signal('thread')
+ interp.interpret_with_w_frame(w_frame) #, may_context_switch=False
# cleanup
+ s_stm_process = w_stm_process.as_special_get_shadow(interp.space, StmProcessShadow)
+ s_stm_process.signal()
+
bootstrapper.num_threads -= 1
bootstrap = staticmethod(bootstrap)
diff --git a/spyvm/shadow.py b/spyvm/shadow.py
--- a/spyvm/shadow.py
+++ b/spyvm/shadow.py
@@ -1139,4 +1139,7 @@
lock_result = self.lock.acquire(blocking)
if lock_result:
self.lock.release()
- return lock_result
\ No newline at end of file
+ return lock_result
+
+ def signal(self):
+ self.lock.release()
\ No newline at end of file
diff --git a/spyvm/wrapper.py b/spyvm/wrapper.py
--- a/spyvm/wrapper.py
+++ b/spyvm/wrapper.py
@@ -116,9 +116,6 @@
class StmProcessWrapper(ProcessWrapper):
- # Mis-using priority as lock, we don't need prios :P
- lock, store_lock = make_int_getter_setter(2)
-
def put_to_sleep(self):
# Must not queue
pass
More information about the pypy-commit
mailing list