Skip to content

Commit 1fadb83

Browse files
committed
Merge pull request #473 in G/truffleruby from opt-pointer to master
* commit '6eb2b31f33e0925e8d0765b5511862e6e7dc3066': Add missing primitives for reading/writing float and double Optimize pointer accesses Invoke the primitive directly instead of adding one indirection Build the Array with the right size instead of using #<< Simplify condition
2 parents 72b39b7 + 6eb2b31 commit 1fadb83

File tree

6 files changed

+958
-1044
lines changed

6 files changed

+958
-1044
lines changed

src/main/java/org/truffleruby/core/CoreLibrary.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,6 +1423,7 @@ public DynamicObject getWarningModule() {
14231423
"/core/true.rb",
14241424
"/core/type.rb",
14251425
"/core/truffle/ffi/pointer.rb",
1426+
"/core/truffle/ffi/pointer_access.rb",
14261427
"/core/truffle/internal.rb",
14271428
"/core/kernel.rb",
14281429
"/core/truffle/boot.rb",

src/main/java/org/truffleruby/extra/ffi/Pointer.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,16 @@ public void writeLong(long offset, long value) {
8080
UNSAFE.putLong(address + offset, value);
8181
}
8282

83+
public void writeFloat(long offset, float value) {
84+
assert address + offset != 0;
85+
UNSAFE.putFloat(address + offset, value);
86+
}
87+
88+
public void writeDouble(long offset, double value) {
89+
assert address + offset != 0;
90+
UNSAFE.putDouble(address + offset, value);
91+
}
92+
8393
public void writePointer(long offset, Pointer value) {
8494
writeLong(offset, value.getAddress());
8595
}
@@ -147,6 +157,11 @@ public long readLong(long offset) {
147157
return UNSAFE.getLong(address + offset);
148158
}
149159

160+
public float readFloat(long offset) {
161+
assert address + offset != 0;
162+
return UNSAFE.getFloat(address + offset);
163+
}
164+
150165
public double readDouble(long offset) {
151166
assert address + offset != 0;
152167
return UNSAFE.getDouble(address + offset);

0 commit comments

Comments
 (0)