Hi Nicolas,
with Win64 what;s the right way to declare something as having an unsigned integer type as large as the word size (unsigned long long on 64-bits, unsigned long on 32-bits)?
This is to declare the following correctly. Its return type is used to declare the function pointers inside a plugin correctly. Currently it is not correctly defined for Win64:
InterpreterProxy>>positiveMachineIntegerValueOf: oop <returnTypeC: #'unsigned long'> oop isInteger ifFalse:[self error: 'Not an integer object']. ^oop < 0 ifTrue: [self primitiveFail. 0] ifFalse: [oop]
_,,,^..^,,,_ best, Eliot
Hi Eliot, we just have to integrate the usqIntptr_t changes that are ready in oscogLLP64 branch. I'm uploading an up-to-date version (if no timeout)
2016-11-04 19:30 GMT+01:00 Eliot Miranda eliot.miranda@gmail.com:
Hi Nicolas,
with Win64 what;s the right way to declare something as having an
unsigned integer type as large as the word size (unsigned long long on 64-bits, unsigned long on 32-bits)?
This is to declare the following correctly. Its return type is used to declare the function pointers inside a plugin correctly. Currently it is not correctly defined for Win64:
InterpreterProxy>>positiveMachineIntegerValueOf: oop <returnTypeC: #'unsigned long'> oop isInteger ifFalse:[self error: 'Not an integer object']. ^oop < 0 ifTrue: [self primitiveFail. 0] ifFalse: [oop]
_,,,^..^,,,_ best, Eliot
Hi Eliot, I decomposed the CMMake.oscogLLP64 changes and applied them on oscog branch: These changes are essentially a rename: - long -> sqInt (unsigned long -> usqInt) for oops - long -> sqIntptr_t (unsigned long -> usqIntptr_t) for target machine words (pointer/address). Since the types are equivalent on ILP32 and LP64 the changes are very superficial and should not break anything.
I have not applied other changes because they touch code generation a bit more. They are not strictly necessary, they should be independent, and we'd better wait for the CI smoke tests to be operational. That's the sole way to test codeGeneration changes...
2016-11-04 19:52 GMT+01:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
Hi Eliot, we just have to integrate the usqIntptr_t changes that are ready in oscogLLP64 branch. I'm uploading an up-to-date version (if no timeout)
2016-11-04 19:30 GMT+01:00 Eliot Miranda eliot.miranda@gmail.com:
Hi Nicolas,
with Win64 what;s the right way to declare something as having an
unsigned integer type as large as the word size (unsigned long long on 64-bits, unsigned long on 32-bits)?
This is to declare the following correctly. Its return type is used to declare the function pointers inside a plugin correctly. Currently it is not correctly defined for Win64:
InterpreterProxy>>positiveMachineIntegerValueOf: oop <returnTypeC: #'unsigned long'> oop isInteger ifFalse:[self error: 'Not an integer object']. ^oop < 0 ifTrue: [self primitiveFail. 0] ifFalse: [oop]
_,,,^..^,,,_ best, Eliot
I've forgotten a few longs, at least these: - signed32BitValueOf: because it was mixed with another change (simplify and inline the 64 bits version) - SpurGenerationScavenger remembered table (population) : seems to be only a ref count - VMProfiling primitives seems less clear
Eliot, do you have a hint for the last two?
2016-11-06 22:12 GMT+01:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
Hi Eliot, I decomposed the CMMake.oscogLLP64 changes and applied them on oscog branch: These changes are essentially a rename:
- long -> sqInt (unsigned long -> usqInt) for oops
- long -> sqIntptr_t (unsigned long -> usqIntptr_t) for target machine
words (pointer/address). Since the types are equivalent on ILP32 and LP64 the changes are very superficial and should not break anything.
I have not applied other changes because they touch code generation a bit more. They are not strictly necessary, they should be independent, and we'd better wait for the CI smoke tests to be operational. That's the sole way to test codeGeneration changes...
2016-11-04 19:52 GMT+01:00 Nicolas Cellier <nicolas.cellier.aka.nice@ gmail.com>:
Hi Eliot, we just have to integrate the usqIntptr_t changes that are ready in oscogLLP64 branch. I'm uploading an up-to-date version (if no timeout)
2016-11-04 19:30 GMT+01:00 Eliot Miranda eliot.miranda@gmail.com:
Hi Nicolas,
with Win64 what;s the right way to declare something as having an
unsigned integer type as large as the word size (unsigned long long on 64-bits, unsigned long on 32-bits)?
This is to declare the following correctly. Its return type is used to declare the function pointers inside a plugin correctly. Currently it is not correctly defined for Win64:
InterpreterProxy>>positiveMachineIntegerValueOf: oop <returnTypeC: #'unsigned long'> oop isInteger ifFalse:[self error: 'Not an integer object']. ^oop < 0 ifTrue: [self primitiveFail. 0] ifFalse: [oop]
_,,,^..^,,,_ best, Eliot
vm-dev@lists.squeakfoundation.org