Use inlined FNV1a hash for String
...and do not use __symbolHash(). Although currently the VM also
uses FNV1a hash for Symbols, the __symbolHash() does not handle
properly character with codepoint 0 (because '\0' is used as a
string terminator). This causes problems with Unicode16/32Strigs whose
version of FNV1a hash is using object size from header to determine
string's end.
Added Symbol>>hash that actually *uses* the __symbolHash() to make
sure it's hash is the the same as used bu the VM. Symbols with zeroes
are rare and there's no Unicode16/32Symbol.
This commit fixes issue #65.
"{ Package: 'stx:libbasic' }"
Object subclass:#AbstractSourceFileReader
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Kernel-Classes-Support'
!
!AbstractSourceFileReader class methodsFor:'documentation'!
documentation
"
Abstract common superclass for source file readers
"
! !
!AbstractSourceFileReader class methodsFor:'fileIn'!
fileIn: aFilename
^self new fileIn: aFilename
"Created: / 16-08-2009 / 10:14:51 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
fileInStream: aStream
^self new fileInStream: aStream
"Created: / 16-08-2009 / 10:15:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!AbstractSourceFileReader methodsFor:'fileIn'!
fileIn:aFilename
| stream |
[stream := aFilename asFilename readStream.
self fileInStream: stream]
ensure:
[stream notNil ifTrue:[stream close]]
"Modified: / 15-08-2009 / 14:47:29 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 08-08-2010 / 14:38:35 / cg"
!
fileInStream:arg
"raise an error: must be redefined in concrete subclass(es)"
^ self subclassResponsibility
! !
!AbstractSourceFileReader class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libbasic/AbstractSourceFileReader.st,v 1.7 2013-06-23 22:22:01 cg Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/libbasic/AbstractSourceFileReader.st,v 1.7 2013-06-23 22:22:01 cg Exp $'
!
version_SVN
^'$Id: AbstractSourceFileReader.st,v 1.7 2013-06-23 22:22:01 cg Exp $'
! !