Skip to content
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

Closed
nicolas-cellier-aka-nice opened this issue Jul 6, 2016 · 3 comments

Comments

@nicolas-cellier-aka-nice
Copy link
Contributor

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.

@nicolas-cellier-aka-nice
Copy link
Contributor Author

OK, this is when I changed type inference.
Tests (== < > <= >= ~=) are typed int now.
The workaround is to force sqInt type by appropriate annotation in primitiveClockLogAddresses

@nicolas-cellier-aka-nice
Copy link
Contributor Author

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.
@nicolas-cellier-aka-nice
Copy link
Contributor Author

integrated in 5551b4d

lukego added a commit to studio/opensmalltalk-vm that referenced this issue Feb 25, 2019
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
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant