Branch: refs/heads/WIN64_UNICODE
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 92c1b26589db8deea97b8cc7659ecc8b6aef8983
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/92c1b26589db8deea9…
Author: Nicolas Cellier <nicolas.cellier.aka.nice(a)gmail.com>
Date: 2018-12-29 (Sat, 29 Dec 2018)
Changed paths:
M platforms/win32/vm/sqWin32.h
M platforms/win32/vm/sqWin32Main.c
M platforms/win32/vm/sqWin32Prefs.c
M platforms/win32/vm/sqWin32Service.c
M platforms/win32/vm/sqWin32Window.c
Log Message:
-----------
Handle both an ASCII (UTF8) and a WIDE (UTF16) version of image/vm name/path
Note:
the Microsoft windows API mostly uses the W version (for enabling internationalized image name/path)
the image uses UTF8 encoded bytes string for communication with the VM (this is best for compatibility with Unix/Mac)
The idea here is that the implementation maintains both versions of the UTF8 and UTF16 path/name
The appropriate macro returning a TCHAR * are also provided.
This is in order to support the generic version using TCHAR, which are normally used to ease transition to UNICODE.
Note about string length:
No effort has been made so far to support long path names for image and VM.
The path is limited to MAX_PATH in UTF16.
UTF8 can eventually consume more characters than UTF16 (not necessarily more bytes).
Thus, the ASCII version has been made longer (MAX_PATH_UTF8) in order to avoid an even more restrictive limit.
**NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/
Functionality will be removed from GitHub.com on January 31st, 2019.
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 7294c0b7e9a4265574a38bb9ae74db83c3350822
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/7294c0b7e9a4265574…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2018-12-29 (Sat, 29 Dec 2018)
Changed paths:
M image/Slang Test Workspace.text
M nsspur64src/vm/cogit.h
M nsspur64src/vm/cogitX64SysV.c
M nsspur64src/vm/cogitX64WIN64.c
M nsspur64src/vm/cointerp.c
M nsspur64src/vm/cointerp.h
M nsspur64src/vm/gcc3x-cointerp.c
M nsspursrc/vm/cogit.h
M nsspursrc/vm/cogitARMv5.c
M nsspursrc/vm/cogitIA32.c
M nsspursrc/vm/cogitMIPSEL.c
M nsspursrc/vm/cointerp.c
M nsspursrc/vm/cointerp.h
M nsspursrc/vm/gcc3x-cointerp.c
M nsspurstack64src/vm/gcc3x-interp.c
M nsspurstack64src/vm/interp.c
M nsspurstacksrc/vm/gcc3x-interp.c
M nsspurstacksrc/vm/interp.c
M spur64src/vm/cogit.h
M spur64src/vm/cogitX64SysV.c
M spur64src/vm/cogitX64WIN64.c
M spur64src/vm/cointerp.c
M spur64src/vm/cointerp.h
M spur64src/vm/cointerpmt.c
M spur64src/vm/cointerpmt.h
M spur64src/vm/gcc3x-cointerp.c
M spur64src/vm/gcc3x-cointerpmt.c
M spurlowcode64src/vm/cogit.h
M spurlowcode64src/vm/cogitX64SysV.c
M spurlowcode64src/vm/cogitX64WIN64.c
M spurlowcode64src/vm/cointerp.c
M spurlowcode64src/vm/cointerp.h
M spurlowcode64src/vm/gcc3x-cointerp.c
M spurlowcodesrc/vm/cogit.h
M spurlowcodesrc/vm/cogitARMv5.c
M spurlowcodesrc/vm/cogitIA32.c
M spurlowcodesrc/vm/cogitMIPSEL.c
M spurlowcodesrc/vm/cointerp.c
M spurlowcodesrc/vm/cointerp.h
M spurlowcodesrc/vm/gcc3x-cointerp.c
M spurlowcodestack64src/vm/gcc3x-interp.c
M spurlowcodestack64src/vm/interp.c
M spurlowcodestacksrc/vm/gcc3x-interp.c
M spurlowcodestacksrc/vm/interp.c
M spursista64src/vm/cogit.h
M spursista64src/vm/cogitX64SysV.c
M spursista64src/vm/cogitX64WIN64.c
M spursista64src/vm/cointerp.c
M spursista64src/vm/cointerp.h
M spursista64src/vm/gcc3x-cointerp.c
M spursistasrc/vm/cogit.h
M spursistasrc/vm/cogitARMv5.c
M spursistasrc/vm/cogitIA32.c
M spursistasrc/vm/cogitMIPSEL.c
M spursistasrc/vm/cointerp.c
M spursistasrc/vm/cointerp.h
M spursistasrc/vm/gcc3x-cointerp.c
M spursrc/vm/cogit.h
M spursrc/vm/cogitARMv5.c
M spursrc/vm/cogitIA32.c
M spursrc/vm/cogitMIPSEL.c
M spursrc/vm/cointerp.c
M spursrc/vm/cointerp.h
M spursrc/vm/cointerpmt.c
M spursrc/vm/cointerpmt.h
M spursrc/vm/gcc3x-cointerp.c
M spursrc/vm/gcc3x-cointerpmt.c
M spurstack64src/vm/gcc3x-interp.c
M spurstack64src/vm/interp.c
M spurstacksrc/vm/gcc3x-interp.c
M spurstacksrc/vm/interp.c
M src/plugins/FileAttributesPlugin/FileAttributesPlugin.c
M src/vm/cogit.h
M src/vm/cogitARMv5.c
M src/vm/cogitIA32.c
M src/vm/cogitMIPSEL.c
M src/vm/cointerp.c
M src/vm/cointerp.h
M src/vm/cointerpmt.c
M src/vm/cointerpmt.h
M src/vm/gcc3x-cointerp.c
M src/vm/gcc3x-cointerpmt.c
M stacksrc/vm/gcc3x-interp.c
M stacksrc/vm/interp.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.2504/FileAttributesPlugin.oscog-akg.49
Slang:
Fix a bug in type inferrence that resulted in the inferred return type of
findMapLocationForMcpc:inMethod: to flip between usqInt (correct) and sqInt
(incorrect). addTypesFor:to:in: needed to answer if it was inferring a return
type from an untyped variable, as well as an untyped method.
Plugins: FileAttributesPlugin v2.0.8
Fix some of the doits in Slang Test Workspace.text
**NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/
Functionality will be removed from GitHub.com on January 31st, 2019.
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2504.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2504
Author: eem
Time: 29 December 2018, 5:52:25.481882 pm
UUID: a00b0fad-c04c-47a6-8a11-5dbff110ac11
Ancestors: VMMaker.oscog-eem.2503
Make the fix more precise. ^self does map to a return type of #void, so only answer in the positive for variables other than self.
=============== Diff against VMMaker.oscog-eem.2503 ===============
Item was changed:
----- Method: TMethod>>addTypesFor:to:in: (in category 'type inference') -----
addTypesFor: node to: typeSet in: aCodeGen
"Add the value types for the node to typeSet.
Answer if any type was derived from an as-yet-untyped method or variable, which allows us to abort
inferReturnTypeFromReturnsIn: if the return type depends on a yet-to-be-typed method or variable."
| expr |
expr := node.
[expr isAssignment or: [expr isStmtList]] whileTrue:
[expr isAssignment ifTrue:
[expr := expr variable].
expr isStmtList ifTrue:
[expr := expr statements last]].
expr isSend ifTrue:
[(#(ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:) includes: expr selector) ifTrue:
[^expr args
inject: false
into: [:asYetUntyped :block|
asYetUntyped | (self addTypesFor: block to: typeSet in: aCodeGen)]].
(aCodeGen returnTypeForSend: expr in: self ifNil: nil)
ifNil: [^(aCodeGen methodNamed: expr selector) notNil and: [expr selector ~~ selector]]
ifNotNil:
[:type |
typeSet add: type.
^false]].
expr isVariable ifTrue:
[(aCodeGen typeOfVariable: expr name)
ifNotNil: [:type| typeSet add: type]
+ ifNil: [(typeSet add: (expr name = 'self'
- ifNil: [typeSet add: (expr name = 'self'
ifTrue: [#void]
+ ifFalse: [#sqInt])) == #sqInt ifTrue:
+ [^true]]].
- ifFalse: [#sqInt]).
- ^true]].
expr isConstant ifTrue:
[(expr value isInteger and: [expr value >= 0]) "cannot determine if signed or unsigned yet..."
ifTrue: [typeSet add: expr value]
ifFalse:
[(expr typeOrNilFrom: aCodeGen in: self) ifNotNil:
[:type | typeSet add: type]]].
^false!
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2503.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2503
Author: eem
Time: 29 December 2018, 5:39:12.429171 pm
UUID: ba90817f-4122-4ed1-9cce-68164b5f81d3
Ancestors: VMMaker.oscog-eem.2502
Fix a bug in type inferrence that resulted in the inferred return type of findMapLocationForMcpc:inMethod: to flip between usqInt (correct) and sqInt (incorrect). addTypesFor:to:in: needed to answer if it was inferring a return type from an untyped variable, as well as an untyped method.
=============== Diff against VMMaker.oscog-eem.2502 ===============
Item was changed:
----- Method: TMethod>>addTypesFor:to:in: (in category 'type inference') -----
addTypesFor: node to: typeSet in: aCodeGen
"Add the value types for the node to typeSet.
+ Answer if any type was derived from an as-yet-untyped method or variable, which allows us to abort
+ inferReturnTypeFromReturnsIn: if the return type depends on a yet-to-be-typed method or variable."
- Answer if any type was derived from an as-yet-untyped method, which allows us to abort
- inferReturnTypeFromReturnsIn: if the return type depends on a yet-to-be-typed method."
| expr |
expr := node.
[expr isAssignment or: [expr isStmtList]] whileTrue:
[expr isAssignment ifTrue:
[expr := expr variable].
expr isStmtList ifTrue:
[expr := expr statements last]].
expr isSend ifTrue:
[(#(ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:) includes: expr selector) ifTrue:
[^expr args
inject: false
into: [:asYetUntyped :block|
asYetUntyped | (self addTypesFor: block to: typeSet in: aCodeGen)]].
(aCodeGen returnTypeForSend: expr in: self ifNil: nil)
ifNil: [^(aCodeGen methodNamed: expr selector) notNil and: [expr selector ~~ selector]]
ifNotNil:
[:type |
typeSet add: type.
+ ^false]].
- ^false].].
expr isVariable ifTrue:
[(aCodeGen typeOfVariable: expr name)
ifNotNil: [:type| typeSet add: type]
ifNil: [typeSet add: (expr name = 'self'
ifTrue: [#void]
+ ifFalse: [#sqInt]).
+ ^true]].
- ifFalse: [#sqInt])]].
expr isConstant ifTrue:
[(expr value isInteger and: [expr value >= 0]) "cannot determine if signed or unsigned yet..."
ifTrue: [typeSet add: expr value]
ifFalse:
[(expr typeOrNilFrom: aCodeGen in: self) ifNotNil:
[:type | typeSet add: type]]].
^false!