Clean up jitCopy method.

This commit is contained in:
Andy Nguyen 2021-11-13 13:37:58 +01:00
parent 25523978fd
commit efad4e8928

View File

@ -155,29 +155,28 @@ public final class JIT {
} }
public void jitCopy(long dest, byte[] src, long n) { public void jitCopy(long dest, byte[] src, long n) {
long req = api.malloc(COMPILER_AGENT_REQUEST_SIZE); Buffer req = new Buffer(COMPILER_AGENT_REQUEST_SIZE);
long resp = api.malloc(Int8.SIZE); Int8 resp = new Int8();
byte[] chunk = new byte[CHUNK_SIZE];
for (long i = 0; i < n; i += CHUNK_SIZE) { for (long i = 0; i < n; i += CHUNK_SIZE) {
byte[] chunk = new byte[CHUNK_SIZE]; api.memset(chunk, 0, CHUNK_SIZE);
System.arraycopy(src, (int) i, chunk, 0, (int) Math.min(n - i, CHUNK_SIZE)); System.arraycopy(src, (int) i, chunk, 0, (int) Math.min(n - i, CHUNK_SIZE));
api.memset(req, 0, COMPILER_AGENT_REQUEST_SIZE); req.fill((byte) 0);
api.memcpy(req + 0x00, chunk, Math.min(n - i, CHUNK_SIZE)); req.put(0x00, chunk);
api.write64(req + 0x38, dest + i - 0x28); req.putLong(0x38, dest + i - 0x28);
api.call(write, compilerAgentSocket, req, COMPILER_AGENT_REQUEST_SIZE); api.call(write, compilerAgentSocket, req.address(), req.size());
api.write8(resp, (byte) 0); resp.set((byte) 0);
api.call(read, compilerAgentSocket, resp, Int8.SIZE); api.call(read, compilerAgentSocket, resp.address(), resp.size());
if (api.read8(resp) != ACK_MAGIC_NUMBER) { if (resp.get() != ACK_MAGIC_NUMBER) {
throw new AssertionError("wrong compiler response"); throw new AssertionError("wrong compiler response");
} }
} }
api.free(resp);
api.free(req);
} }
public long mapPayload(String path, long dataSectionOffset) throws Exception { public long mapPayload(String path, long dataSectionOffset) throws Exception {