[code-reflection] RFR: Missing conversion for some unary operators
Maurizio Cimadamore
mcimadamore at openjdk.org
Thu Apr 18 16:39:33 UTC 2024
`ReflectMethods` is missing the logic for converting operands for unary operators `!` and `-`.
I've fixed calling the correct `value` method (the one with a target type).
When running tests, it seems like the test `CoreBinaryOpsTest` fails.
This failure also occurs w/o my patch, so it seems unrelated.
The problem is likely due to another missing conversion - e.g. for this code:
@CodeReflection
static int leftShiftIL(int left, long right) {
return left << right;
}
We get this model:
func @"leftShiftIL" (%0 : int, %1 : long)int -> {
%2 : Var<int> = var %0 @"left";
%3 : Var<long> = var %1 @"right";
%4 : int = var.load %2;
%5 : long = var.load %3;
%6 : int = lshl %4 %5;
return %6;
};
This seems to want to do a shift between an int and a long (so should use a long shift, whose result is also long). But there's no conversion on the way in and also on the way out.
Since this is unrelated with the fix here, I'd suggest to integrate this in the meantime.
-------------
Commit messages:
- Initial push
Changes: https://git.openjdk.org/babylon/pull/55/files
Webrev: https://webrevs.openjdk.org/?repo=babylon&pr=55&range=00
Stats: 67 lines in 3 files changed: 64 ins; 0 del; 3 mod
Patch: https://git.openjdk.org/babylon/pull/55.diff
Fetch: git fetch https://git.openjdk.org/babylon.git pull/55/head:pull/55
PR: https://git.openjdk.org/babylon/pull/55
More information about the babylon-dev
mailing list