[code-reflection] RFR: Add HATPtrOps to array view
Juan Fumero
jfumero at openjdk.org
Fri Dec 19 08:12:11 UTC 2025
On Thu, 18 Dec 2025 20:42:08 GMT, Ruby Chen <duke at openjdk.org> wrote:
> Add four new HATPtrOps to support array views.
>
> Also update array view tests and add a new test to check for correct memory copies for a write only buffer.
>
> Minor change in BufferTagger to change access types into bytes.
Thanks @rbrchen . I added some comments.
All tests passing from my side.
hat/core/src/main/java/hat/buffer/BF16Array.java line 51:
> 49: }
> 50:
> 51: default BF16Impl[] arrayview() {return null;}
Rename to `arrayView` for consistency with the other types.
hat/core/src/main/java/hat/codebuilders/C99HATKernelBuilder.java line 535:
> 533: }
> 534:
> 535: T ptrAccess(ScopedCodeBuilderContext builderContext, HATPtrOp hatPtrOp) {
method private to this class? Consider adding `private`
hat/core/src/main/java/hat/codebuilders/C99HATKernelBuilder.java line 571:
> 569: return switch (op) {
> 570: case CoreOp.VarOp varOp -> varOp.varName();
> 571: case HATLocalVarOp hatLocalVarOp -> hatLocalVarOp.varName();
Consider using the base class for both Local and Private `HATMemoryOp` and call the varName method. So the switch will be simplified.
hat/core/src/main/java/hat/phases/HATDialectifyArrayViewPhase.java line 226:
> 224: record Node<T>(T value, List<Node<T>> edges) {
> 225: ArrayAccessInfo getInfo(Map<Op.Result, Op.Result> replaced) {
> 226: List<Node<T>> wl = new ArrayList<>();
what `wl` stands for?
hat/core/src/main/java/hat/phases/HATDialectifyArrayViewPhase.java line 237:
> 235: if (res.op() instanceof JavaOp.ArrayAccessOp || res.op() instanceof JavaOp.ArrayLengthOp) {
> 236: buffer = res;
> 237: indices.addFirst(res.op() instanceof JavaOp.ArrayAccessOp ? ((Op.Result) res.op().operands().get(1)) : ((Op.Result) res.op().operands().get(0)));
Consider adding a private method that returns the right operand.
private Op.Result getOperand(...) {
return res.op() instanceof JavaOp.ArrayAccessOp ? ((Op.Result) res.op().operands().get(1)) : ((Op.Result) res.op().operands().get(0));
}
```
-------------
Changes requested by jfumero (Reviewer).
PR Review: https://git.openjdk.org/babylon/pull/765#pullrequestreview-3597382361
PR Review Comment: https://git.openjdk.org/babylon/pull/765#discussion_r2634053525
PR Review Comment: https://git.openjdk.org/babylon/pull/765#discussion_r2634074070
PR Review Comment: https://git.openjdk.org/babylon/pull/765#discussion_r2634087399
PR Review Comment: https://git.openjdk.org/babylon/pull/765#discussion_r2634104833
PR Review Comment: https://git.openjdk.org/babylon/pull/765#discussion_r2634115923
More information about the babylon-dev
mailing list