@Override public WasmExpression apply(InvocationExpr invocation, WasmIntrinsicManager manager) { WasmInt32Constant constant = new WasmInt32Constant(0); constant.setLocation(invocation.getLocation()); constants.add(constant); int callSiteSize = classGenerator.getClassSize(CallSite.class.getName()); WasmExpression id = manager.generate(invocation.getArguments().get(0)); WasmExpression offset = new WasmIntBinary(WasmIntType.INT32, WasmIntBinaryOperation.MUL, id, new WasmInt32Constant(callSiteSize)); return new WasmIntBinary(WasmIntType.INT32, WasmIntBinaryOperation.ADD, constant, offset); } }
private WasmExpression fieldAccess(WasmIntrinsicManager manager, InvocationExpr expr, FieldReference field) { QualificationExpr qualification = new QualificationExpr(); qualification.setField(field); qualification.setQualified(expr.getArguments().get(0)); qualification.setLocation(expr.getLocation()); return manager.generate(qualification); } }
public static String getStringLiteral(IntrinsicContext context, InvocationExpr invocation, Expr expr) { if (expr instanceof ConstantExpr) { Object cst = ((ConstantExpr) expr).getValue(); if (cst instanceof String) { return (String) cst; } } context.getDiagnotics().error( new CallLocation(context.getCallingMethod(), invocation.getLocation()), "This method should take string literal"); return ""; } }
public static String getClassLiteral(IntrinsicContext context, InvocationExpr invocation, Expr expr) { if (expr instanceof ConstantExpr) { Object cst = ((ConstantExpr) expr).getValue(); if (cst instanceof ValueType.Object) { return ((ValueType.Object) cst).getClassName(); } } context.getDiagnotics().error( new CallLocation(context.getCallingMethod(), invocation.getLocation()), "This method should take class literal"); return "java.lang.Object"; }
args = Arrays.copyOfRange(args, 1, args.length); InvocationExpr constructrExpr = Expr.constructObject(expr.getMethod(), args); constructrExpr.setLocation(expr.getLocation()); assignment.setRightValue(constructrExpr); readFrequencies[var.getIndex()]--;
@Override public void visit(InvocationExpr expr) { pushLocation(expr.getLocation()); try { Expr[] args = expr.getArguments().toArray(new Expr[0]); int barrierPos; for (barrierPos = 0; barrierPos < args.length; ++barrierPos) { if (!isSideEffectFree(args[barrierPos])) { break; } } Statement barrier = addBarrier(); if (barrierPos == args.length) { removeBarrier(barrier); } for (int i = args.length - 1; i >= 0; --i) { args[i].acceptVisitor(this); args[i] = resultExpr; if (i == barrierPos) { removeBarrier(barrier); } } for (int i = 0; i < args.length; ++i) { expr.getArguments().set(i, args[i]); } resultExpr = expr; } finally { popLocation(); } }
@Override public void visit(InvocationExpr expr) { try { if (expr.getLocation() != null) { pushLocation(expr.getLocation()); if (expr.getLocation() != null) { popLocation();
expr.getLocation())));
@Override public void visit(InvocationExpr expr) { pushLocation(expr.getLocation()); try { Expr[] args = new Expr[expr.getArguments().size()]; for (int i = expr.getArguments().size() - 1; i >= 0; --i) { expr.getArguments().get(i).acceptVisitor(this); args[i] = resultExpr; } for (int i = 0; i < args.length; ++i) { expr.getArguments().set(i, args[i]); } resultExpr = expr; } finally { popLocation(); } }
@Override public WasmExpression apply(InvocationExpr invocation, WasmIntrinsicManager manager) { WasmInt32Constant constant = new WasmInt32Constant(0); constant.setLocation(invocation.getLocation()); constants.add(constant); int callSiteSize = classGenerator.getClassSize(CallSite.class.getName()); WasmExpression id = manager.generate(invocation.getArguments().get(0)); WasmExpression offset = new WasmIntBinary(WasmIntType.INT32, WasmIntBinaryOperation.MUL, id, new WasmInt32Constant(callSiteSize)); return new WasmIntBinary(WasmIntType.INT32, WasmIntBinaryOperation.ADD, constant, offset); } }
args = Arrays.copyOfRange(args, 1, args.length); InvocationExpr constructrExpr = Expr.constructObject(expr.getMethod(), args); constructrExpr.setLocation(expr.getLocation()); assignment.setRightValue(constructrExpr); readFrequencies[var.getIndex()]--;
expr.getLocation())));
@Override public void visit(InvocationExpr expr) { try { if (expr.getLocation() != null) { pushLocation(expr.getLocation()); if (expr.getLocation() != null) { popLocation();