You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Pavel Rebriy (JIRA)" <ji...@apache.org> on 2007/03/13 11:26:09 UTC
[jira] Created: (HARMONY-3380) [drlvm][jit][winx64] JET operates
incorrectly with long values.
[drlvm][jit][winx64] JET operates incorrectly with long values.
---------------------------------------------------------------
Key: HARMONY-3380
URL: https://issues.apache.org/jira/browse/HARMONY-3380
Project: Harmony
Issue Type: Bug
Components: DRLVM
Environment: windows/em64t
Reporter: Pavel Rebriy
Priority: Critical
While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
Here is the test:
public class Test {
public static void main(String[] args) {
long a = 0x00100000000L;
long b = 0x01010101010L;
test(a,b);
}
static void test( long a, long b ) {
System.out.format("a I b = %1$x%n", (a|b) );
}
}
RI prints:
a | b = 1110101010
Harmony (with JET):
a | b = 10101010
I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Assigned: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexey Varlamov reassigned HARMONY-3380:
----------------------------------------
Assignee: Alexey Varlamov
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Assigned To: Alexey Varlamov
> Priority: Critical
> Attachments: jet.fix, jet_2.fix
>
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mikhail Fursov updated HARMONY-3380:
------------------------------------
Attachment: jet_2.fix
jet_2.fix - new and complete diff with Pavel's suggestions implemented.
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Priority: Critical
> Attachments: jet.fix, jet_2.fix
>
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexey Varlamov resolved HARMONY-3380.
--------------------------------------
Resolution: Fixed
Fixed at r518134;
changed the patch to use FMT64 instead of ifdef,
fixed a couple of warnings.
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Assigned To: Alexey Varlamov
> Priority: Critical
> Attachments: jet.fix, jet_2.fix
>
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Pavel Rebriy (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Rebriy updated HARMONY-3380:
----------------------------------
Summary: [drlvm][winx64][jit] JET operates incorrectly with long values. (was: [drlvm][jit][winx64] JET operates incorrectly with long values.)
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Priority: Critical
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Pavel Rebriy (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480379 ]
Pavel Rebriy commented on HARMONY-3380:
---------------------------------------
It's better to use POINTER_SIZE_SINT instead of jlong, because jlong is uint64 on 32-bit architecture.
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Priority: Critical
> Attachments: jet.fix
>
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480665 ]
Alexey Varlamov commented on HARMONY-3380:
------------------------------------------
1) Curious - why rename?
+typedef POINTER_SIZE_SINT int_ptr;
Me personally dislikes name POINTER_SIZE_[S]INT, but it is widely adopted in DRLVM sources.
2) I suggest to use the define PI_FMT from open/types.h instead:
- snprintf(buf, sizeof(buf), "%ld(0x%LX)", (long int)s.lval(), (long long)s.lval());
+#ifdef _WIN32
+ snprintf(buf, sizeof(buf), "%I64d(0x%I64X)", s.lval(), s.lval());
+#else
+ snprintf(buf, sizeof(buf), "%ld(0x%LX)", (long int)s.lval(), s.lval());
+#endif
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Priority: Critical
> Attachments: jet.fix, jet_2.fix
>
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mikhail Fursov updated HARMONY-3380:
------------------------------------
Attachment: jet.fix
sizeof(long) is 4 on windows64bit.
This patch must fix he problem above.
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Priority: Critical
> Attachments: jet.fix
>
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (HARMONY-3380) [drlvm][winx64][jit] JET operates
incorrectly with long values.
Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HARMONY-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480722 ]
Mikhail Fursov commented on HARMONY-3380:
-----------------------------------------
1) Historical reasons. int_ptr was already used by JET
2) I agree. I have never heard about PI_FMT before, so I used classic ifdef here.
> [drlvm][winx64][jit] JET operates incorrectly with long values.
> ---------------------------------------------------------------
>
> Key: HARMONY-3380
> URL: https://issues.apache.org/jira/browse/HARMONY-3380
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: windows/em64t
> Reporter: Pavel Rebriy
> Assigned To: Alexey Varlamov
> Priority: Critical
> Attachments: jet.fix, jet_2.fix
>
>
> While debugging DRLVM on Windows Intel64 platform I've found that JET operates incorrectly with long values and prevents some benchmarks to pass.
> Here is the test:
> public class Test {
> public static void main(String[] args) {
> long a = 0x00100000000L;
> long b = 0x01010101010L;
> test(a,b);
> }
> static void test( long a, long b ) {
> System.out.format("a I b = %1$x%n", (a|b) );
> }
> }
> RI prints:
> a | b = 1110101010
> Harmony (with JET):
> a | b = 10101010
> I think the cause is a problem in JET code generation on Windows Intel64.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.