@Override public void visit(SubscriptExpr expr) { try { output.writeByte(11); writeExpr(expr.getArray()); writeExpr(expr.getIndex()); output.writeByte(expr.getType().ordinal()); } catch (IOException e) { throw new IOExceptionWrapper(e); } }
@Override public void visit(SubscriptExpr expr) { writer.print("ARRAY_AT("); expr.getArray().acceptVisitor(this); writer.print(", ").print(getArrayType(expr.getType())).print(", "); expr.getIndex().acceptVisitor(this); writer.print(")"); }
@Override public void visit(SubscriptExpr expr) { WasmExpression ptr = getArrayElementPointer(expr); switch (expr.getType()) { case BYTE: result = new WasmLoadInt32(1, ptr, WasmInt32Subtype.INT8); break; case SHORT: result = new WasmLoadInt32(2, ptr, WasmInt32Subtype.INT16); break; case CHAR: result = new WasmLoadInt32(2, ptr, WasmInt32Subtype.UINT16); break; case INT: case OBJECT: result = new WasmLoadInt32(4, ptr, WasmInt32Subtype.INT32); break; case LONG: result = new WasmLoadInt64(8, ptr, WasmInt64Subtype.INT64); break; case FLOAT: result = new WasmLoadFloat32(4, ptr); break; case DOUBLE: result = new WasmLoadFloat64(8, ptr); break; } }
private void storeArrayItem(SubscriptExpr leftValue, Expr rightValue) { WasmExpression ptr = getArrayElementPointer(leftValue); accept(rightValue); switch (leftValue.getType()) { case BYTE: result = new WasmStoreInt32(1, ptr, result, WasmInt32Subtype.INT8); break; case SHORT: result = new WasmStoreInt32(2, ptr, result, WasmInt32Subtype.INT16); break; case CHAR: result = new WasmStoreInt32(2, ptr, result, WasmInt32Subtype.UINT16); break; case INT: case OBJECT: result = new WasmStoreInt32(4, ptr, result, WasmInt32Subtype.INT32); break; case LONG: result = new WasmStoreInt64(8, ptr, result, WasmInt64Subtype.INT64); break; case FLOAT: result = new WasmStoreFloat32(4, ptr, result); break; case DOUBLE: result = new WasmStoreFloat64(8, ptr, result); break; } }
switch (expr.getType()) { case BYTE: size = 0;
@Override public void visit(SubscriptExpr expr) { try { output.writeByte(11); writeExpr(expr.getArray()); writeExpr(expr.getIndex()); output.writeByte(expr.getType().ordinal()); } catch (IOException e) { throw new IOExceptionWrapper(e); } }
@Override public void visit(SubscriptExpr expr) { WasmExpression ptr = getArrayElementPointer(expr); switch (expr.getType()) { case BYTE: result = new WasmLoadInt32(1, ptr, WasmInt32Subtype.INT8); break; case SHORT: result = new WasmLoadInt32(2, ptr, WasmInt32Subtype.INT16); break; case CHAR: result = new WasmLoadInt32(2, ptr, WasmInt32Subtype.UINT16); break; case INT: case OBJECT: result = new WasmLoadInt32(4, ptr, WasmInt32Subtype.INT32); break; case LONG: result = new WasmLoadInt64(8, ptr, WasmInt64Subtype.INT64); break; case FLOAT: result = new WasmLoadFloat32(4, ptr); break; case DOUBLE: result = new WasmLoadFloat64(8, ptr); break; } }
switch (expr.getType()) { case BYTE: size = 0;
private void storeArrayItem(SubscriptExpr leftValue, Expr rightValue) { WasmExpression ptr = getArrayElementPointer(leftValue); accept(rightValue); switch (leftValue.getType()) { case BYTE: result = new WasmStoreInt32(1, ptr, result, WasmInt32Subtype.INT8); break; case SHORT: result = new WasmStoreInt32(2, ptr, result, WasmInt32Subtype.INT16); break; case CHAR: result = new WasmStoreInt32(2, ptr, result, WasmInt32Subtype.UINT16); break; case INT: case OBJECT: result = new WasmStoreInt32(4, ptr, result, WasmInt32Subtype.INT32); break; case LONG: result = new WasmStoreInt64(8, ptr, result, WasmInt64Subtype.INT64); break; case FLOAT: result = new WasmStoreFloat32(4, ptr, result); break; case DOUBLE: result = new WasmStoreFloat64(8, ptr, result); break; } }