New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ioGetClockLogSizeUsecsIdxMsecsIdx prototype is not 64bits compatible #23
Comments
OK, this is when I changed type inference. |
Fix published in VMMaker.oscog-nice.1973 |
estebanlm
added a commit
to estebanlm/pharo-vm
that referenced
this issue
Nov 1, 2016
…6:56.788065 pm UUID: b8f53d80-3c51-4659-b944-1466fda618d4 Ancestors: VMMaker.oscog-eem.1972 Fix bug OpenSmalltalk/opensmalltalk-vm#23 ioGetClockLogSizeUsecsIdxMsecsIdx prototype is not 64bits compatible The problem is in primitiveClockLogAddresses for which type inference for #runInNOut result into an int. But ioGetClockLogSizeUsecsIdxMsecsIdx expect a pointer on a sqInt, not a pointer on an int as first parameter. Workaround by explicitely decalring #runInNOut as sqInt. The fix is in oscogLLP64 branch (http://smalltalkhub.com/mc/nice/NiceVMExperiments/main) since VMMaker.oscogLLP64-nice.1915, Time: 29 July 2016, 12:36:23.284336 am
estebanlm
added a commit
to estebanlm/pharo-vm
that referenced
this issue
Nov 2, 2016
…6:56.788065 pm UUID: b8f53d80-3c51-4659-b944-1466fda618d4 Ancestors: VMMaker.oscog-eem.1972 Fix bug OpenSmalltalk/opensmalltalk-vm#23 ioGetClockLogSizeUsecsIdxMsecsIdx prototype is not 64bits compatible The problem is in primitiveClockLogAddresses for which type inference for #runInNOut result into an int. But ioGetClockLogSizeUsecsIdxMsecsIdx expect a pointer on a sqInt, not a pointer on an int as first parameter. Workaround by explicitely decalring #runInNOut as sqInt. The fix is in oscogLLP64 branch (http://smalltalkhub.com/mc/nice/NiceVMExperiments/main) since VMMaker.oscogLLP64-nice.1915, Time: 29 July 2016, 12:36:23.284336 am
eliotmiranda
added a commit
that referenced
this issue
Nov 2, 2016
Fix the root cause of the bugs wrngly fixed in VMMaker.oscog-eem.1971 & 1972. Eliminate the extBFirstZero variable and its effects on assembling a signed extB. This restores the Newspeak and no-access-control Cadence Newspeak VMs. Eliminate C compiler warning about taking absolute value of positive integer: correctly store the value in a signed integer, then take the absolute value, in #rewriteCPICJumpAt:target: and #findEmptySegNearestInSizeTo: Fix a typo in #flushICacheFrom:to:. Use #sqLong type in is32BitSignedImmediate: because it's guaranteed to be 64bits long. #long can be 32bits for LLP64 compilers. Another 64bits fix for MacMenuBarPlugin. Fix bug #23 ioGetClockLogSizeUsecsIdxMsecsIdx prototype is not 64bits compatible The problem is in primitiveClockLogAddresses for which type inference for a pointer on a sqInt, not a pointer on an int as first parameter. Workaround by explicitly declaring #runInNOut as sqInt.
integrated in 5551b4d |
lukego
added a commit
to studio/opensmalltalk-vm
that referenced
this issue
Feb 25, 2019
Flatten overlay
guillep
pushed a commit
to pharo-project/pharo-vm
that referenced
this issue
Jul 2, 2019
ioGetClockLogSizeUsecsIdxMsecsIdx prototype is not 64bits compatible The problem is in primitiveClockLogAddresses for which type inference for #runInNOut result into an int. But ioGetClockLogSizeUsecsIdxMsecsIdx expect a pointer on a sqInt, not a pointer on an int as first parameter. Workaround by explicitely decalring #runInNOut as sqInt. The fix is in oscogLLP64 branch (http://smalltalkhub.com/mc/nice/NiceVMExperiments/main) since VMMaker.oscogLLP64-nice.1915, Time: 29 July 2016, 12:36:23.284336 am
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The first argument runInNOutp is declared sqInt* in the prorotype sq.h and implementation in platforms specific files sq*Heartbeat.c
BUT: the function is explicitely used with a int * argument in VMMaker generated VM sources (primitiveClockLogAddresses).
That's not 64bits compatible.
Note that the content of the pointer is copied to a static int logClock in various implementations.
This could theoretically lead to truncation, but as I understand it, the content is a boolean (0 or 1), so there won't be any truncation. If we want to use pedantic C compiler warnings it would be better to declare the parameter as int * though.
The text was updated successfully, but these errors were encountered: