[PR #795] Vendor org.graalvm.collections #740

Open
opened 2025-12-30 01:26:28 +01:00 by adam · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/apple/pkl/pull/795
Author: @odenix
Created: 11/10/2024
Status: 🔄 Open

Base: mainHead: vendor-collections


📝 Commits (1)

  • 7a12edd Vendor org.graalvm.collections

📊 Changes

63 files changed (+2608 additions, -492 deletions)

View changed files

📝 pkl-core/src/main/java/org/pkl/core/ast/builder/AstBuilder.java (+12 -13)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorElementNode.java (+1 -2)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorEntryNode.java (+1 -2)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorMemberNode.java (+3 -4)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorPredicateMemberNode.java (+5 -6)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorPropertyNode.java (+1 -2)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorSpreadNode.java (+7 -8)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/WriteForVariablesNode.java (+2 -3)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/AmendModuleNode.java (+1 -1)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/ConstantEntriesLiteralNode.java (+1 -1)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/ElementsEntriesLiteralNode.java (+6 -6)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/ElementsLiteralNode.java (+5 -6)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/EntriesLiteralNode.java (+7 -10)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/PropertiesLiteralNode.java (+1 -1)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/SpecializedObjectLiteralNode.java (+9 -10)
📝 pkl-core/src/main/java/org/pkl/core/ast/expression/unary/ReadGlobNode.java (+1 -1)
📝 pkl-core/src/main/java/org/pkl/core/ast/member/ClassNode.java (+1 -1)
📝 pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java (+9 -9)
pkl-core/src/main/java/org/pkl/core/collection/EconomicMap.java (+275 -0)
pkl-core/src/main/java/org/pkl/core/collection/EconomicMapImpl.java (+869 -0)

...and 43 more files

📄 Description

Motivation:
Package org.graalvm.collections is used throughout the Pkl codebase. It is most heavily used in the Truffle interpreter, which requires putting most collection methods behind @TruffleBoundary. At the moment, this is done by wrapping collection methods with static methods declared in classes EconomicMaps and EconomicSets. However, static wrapper methods are inconvenient to use, decrease code readability, add some overhead, and are easy to forget about.

Changes:

  • vendor package org.graalvm.collections into org.pkl.core.collection
  • inline and remove EconomicMaps/Sets wrapper methods
  • replace usages of EconomicMaps.equals/hashCode with EconomicMapUtil.equals/hashCode
  • fix ProjectDeps.hashCode()

Result:
Cleaner, safer, and more efficient code.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/apple/pkl/pull/795 **Author:** [@odenix](https://github.com/odenix) **Created:** 11/10/2024 **Status:** 🔄 Open **Base:** `main` ← **Head:** `vendor-collections` --- ### 📝 Commits (1) - [`7a12edd`](https://github.com/apple/pkl/commit/7a12edd8d724fc36d69331ab529f097dce1ba2d5) Vendor org.graalvm.collections ### 📊 Changes **63 files changed** (+2608 additions, -492 deletions) <details> <summary>View changed files</summary> 📝 `pkl-core/src/main/java/org/pkl/core/ast/builder/AstBuilder.java` (+12 -13) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorElementNode.java` (+1 -2) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorEntryNode.java` (+1 -2) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorMemberNode.java` (+3 -4) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorPredicateMemberNode.java` (+5 -6) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorPropertyNode.java` (+1 -2) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorSpreadNode.java` (+7 -8) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/generator/WriteForVariablesNode.java` (+2 -3) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/literal/AmendModuleNode.java` (+1 -1) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/literal/ConstantEntriesLiteralNode.java` (+1 -1) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/literal/ElementsEntriesLiteralNode.java` (+6 -6) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/literal/ElementsLiteralNode.java` (+5 -6) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/literal/EntriesLiteralNode.java` (+7 -10) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/literal/PropertiesLiteralNode.java` (+1 -1) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/literal/SpecializedObjectLiteralNode.java` (+9 -10) 📝 `pkl-core/src/main/java/org/pkl/core/ast/expression/unary/ReadGlobNode.java` (+1 -1) 📝 `pkl-core/src/main/java/org/pkl/core/ast/member/ClassNode.java` (+1 -1) 📝 `pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java` (+9 -9) ➕ `pkl-core/src/main/java/org/pkl/core/collection/EconomicMap.java` (+275 -0) ➕ `pkl-core/src/main/java/org/pkl/core/collection/EconomicMapImpl.java` (+869 -0) _...and 43 more files_ </details> ### 📄 Description Motivation: Package org.graalvm.collections is used throughout the Pkl codebase. It is most heavily used in the Truffle interpreter, which requires putting most collection methods behind @TruffleBoundary. At the moment, this is done by wrapping collection methods with static methods declared in classes EconomicMaps and EconomicSets. However, static wrapper methods are inconvenient to use, decrease code readability, add some overhead, and are easy to forget about. Changes: - vendor package org.graalvm.collections into org.pkl.core.collection - org.graalvm.collections is licensed under: The Universal Permissive License (UPL), Version 1.0 - vendored version: https://github.com/oracle/graal/tree/graal-23.0.3/sdk/src/org.graalvm.collections/src/org/graalvm/collections - add package-info.java with original license - annotate most public methods with `@TruffleBoundary` - add `@Nullable` annotations - switching to JSpecify will enable more accurate nullability checks - remove prefix tree classes (not used in Pkl) - make no other code changes to simplify review/updates - inline and remove EconomicMaps/Sets wrapper methods - replace usages of EconomicMaps.equals/hashCode with EconomicMapUtil.equals/hashCode - fix ProjectDeps.hashCode() Result: Cleaner, safer, and more efficient code. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
adam added the pull-request label 2025-12-30 01:26:28 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/pkl#740