gpfs
GPFs
- gpfs can be cause by code that does not compile.
- use the script below to find it.
- then execute 'EmMethodEdition useLinker: false' and reload the code/classes.
[
| apps cms |
cms := Dictionary new.
apps := Application currentlyLoaded select: [ :app |
"app name startsWith: 'S'."
app name = #DeflateInflateApp. ].
apps do: [ :app | | classes |
Transcript cr;
show: 'Testing app: ', app printString.
EsLogManager loggerNamed: 'test' info: 'test' object: 'Testing: ', app printString.
app isEdition ifFalse: [ app newEdition. ].
classes := OrderedCollection new
addAll: app classes;
addAll: ( app classes collect: [ :cls | cls class ] ); yourself.
classes := classes reject: [ :cls | cls name asString = 'Object' ].
classes := classes reject: [ :cls | cls name asString = 'Object class' ].
classes do: [ :cls |
( cls methodNamesIn: app ) do: [ :sel | | cm |
cm := cls compiledMethodAt: sel.
( cms at: cls ifAbsentPut: [ Dictionary new ] ) at: sel put: cm. ]. ].
classes do: [ :cls |
EsLogManager loggerNamed: 'test' info: 'test' object: 'Testing: ', app printString, ' ', cls printString.
Compiler
evaluate: cls definitionString
for: ( EmEvaluationRedirectionToCurrentImage new )
ifFail: [ :error | ].
( cls methodNamesIn: app ) do: [ :sel | | cm src ncm |
cm := ( cms at: cls ) at: sel.
src := cls sourceCodeAt: sel.
ncm := cls basicCompile: src notifying: cls ifFail: [].
cm bytecodes = ncm bytecodes ifFalse: [
Transcript cr;
show: 'Failed method: ', cm printString.
EsLogManager loggerNamed: 'test' info: 'test' object: 'Failed method: ', cm printString.
].
].
].
].
] forkNamed: 'Recompile'
===============================================================
CompiledMethod withAllSubclasses
inject: OrderedCollection new
into: [:all :cmCls | | failedToCompile |
failedToCompile := cmCls allInstances reject: [:e | e compiledCorrectly].
all addAll: failedToCompile; yourself]
gpfs.txt · Last modified: 2015/05/13 14:51 by 127.0.0.1
