@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
31 lines (29 loc) • 4.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
const Helper_1 = require("../Helper");
class CreateGlobalObjectHelper extends Helper_1.Helper {
emit(sb, node, optionsIn) {
sb.emitOp(node, 'DEPTH');
sb.emitOp(node, 'PACK');
sb.emitOp(node, 'NEWMAP');
sb.emitOp(node, 'TUCK');
sb.emitPushInt(node, constants_1.GlobalProperty.Arguments);
sb.emitOp(node, 'ROT');
sb.emitOp(node, 'SETITEM');
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, constants_1.GlobalProperty.Modules);
sb.emitPushInt(node, 0);
sb.emitOp(node, 'NEWARRAY');
sb.emitOp(node, 'SETITEM');
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, constants_1.GlobalProperty.CallingScriptHash);
sb.emitSysCall(node, 'System.ExecutionEngine.GetCallingScriptHash');
sb.emitOp(node, 'SETITEM');
if (!optionsIn.pushValue) {
sb.emitOp(node, 'DROP');
}
}
}
exports.CreateGlobalObjectHelper = CreateGlobalObjectHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyZWF0ZUdsb2JhbE9iamVjdEhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUFpRDtBQUdqRCxzQ0FBbUM7QUFJbkMsTUFBYSx3QkFBeUIsU0FBUSxlQUFNO0lBQzNDLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUVuRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV6QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUxQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSwwQkFBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTNCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLDBCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFM0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsMEJBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXZELEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLDZDQUE2QyxDQUFDLENBQUM7UUFFcEUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0NBQ0Y7QUF2Q0QsNERBdUNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2dsb2JhbC9DcmVhdGVHbG9iYWxPYmplY3RIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBHbG9iYWxQcm9wZXJ0eSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuLy8gSW5wdXQ6IFtdXG4vLyBPdXRwdXQ6IFtnbG9iYWxPYmplY3RdXG5leHBvcnQgY2xhc3MgQ3JlYXRlR2xvYmFsT2JqZWN0SGVscGVyIGV4dGVuZHMgSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gW2xlbmd0aCwgLi4uYXJnc11cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ0RFUFRIJyk7XG4gICAgLy8gW2FyZ3ZdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdQQUNLJyk7XG4gICAgLy8gW21hcCwgYXJndl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ05FV01BUCcpO1xuICAgIC8vIFttYXAsIGFyZ3YsIG1hcF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAvLyBbbnVtYmVyLCBtYXAsIGFyZ3YsIG1hcF1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCBHbG9iYWxQcm9wZXJ0eS5Bcmd1bWVudHMpO1xuICAgIC8vIFthcmd2LCBudW1iZXIsIG1hcCwgbWFwXVxuICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgLy8gW21hcF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NFVElURU0nKTtcbiAgICAvLyBbbWFwLCBtYXBdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdEVVAnKTtcbiAgICAvLyBbbnVtYmVyLCBtYXAsIG1hcF1cbiAgICBzYi5lbWl0UHVzaEludChub2RlLCBHbG9iYWxQcm9wZXJ0eS5Nb2R1bGVzKTtcbiAgICAvLyBbbnVtYmVyLCBudW1iZXIsIG1hcCwgbWFwXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgIC8vIFthcnIsIG51bWJlciwgbWFwLCBtYXBdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdORVdBUlJBWScpO1xuICAgIC8vIFttYXBdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdTRVRJVEVNJyk7XG4gICAgLy8gW21hcCwgbWFwXVxuICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgLy8gW251bWJlciwgbWFwLCBtYXBdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgR2xvYmFsUHJvcGVydHkuQ2FsbGluZ1NjcmlwdEhhc2gpO1xuICAgIC8vIFtidWZmZXIsIG51bWJlciwgbWFwLCBtYXBdXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ1N5c3RlbS5FeGVjdXRpb25FbmdpbmUuR2V0Q2FsbGluZ1NjcmlwdEhhc2gnKTtcbiAgICAvLyBbbWFwXVxuICAgIHNiLmVtaXRPcChub2RlLCAnU0VUSVRFTScpO1xuXG4gICAgaWYgKCFvcHRpb25zSW4ucHVzaFZhbHVlKSB7XG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==