parsav  Diff

Differences From Artifact [12858be43d]:

To Artifact [60b64e2aea]:


     1      1   -- vim: ft=terra
     2      2   local m = {
     3      3   	shorthand = {maxlen = 14};
     4         -	ll = {
     5         -		ctpop_u8 = terralib.intrinsic('llvm.ctpop.i8', uint8 -> uint8);
     6         -	};
     7      4   }
            5  +m.shorthand.t = int8[m.shorthand.maxlen]
     8      6   
     9      7   local pstring = lib.mem.ptr(int8)
    10      8   
    11      9   -- swap in place -- faster on little endian
    12     10   m.netswap_ip = macro(function(ty, src, dest)
    13     11   	if ty:astype().type ~= 'integer' then error('bad type') end
    14     12   	local bytes = ty:astype().bytes
................................................................................
    64     62   	var o = n
    65     63   	for i=0,fac do n = n * o end
    66     64   	return n
    67     65   end
    68     66   
    69     67   terra m.shorthand.gen(val: uint64, dest: rawstring): ptrdiff
    70     68   	var lst = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz"
    71         -	var buf: int8[m.shorthand.maxlen]
           69  +	var buf: m.shorthand.t
    72     70   	var ptr = [&int8](buf)
    73     71   	while val ~= 0 do
    74     72   		var v = val % 64
    75     73   		@ptr = lst[v]
    76     74   		ptr = ptr + 1
    77     75   		val = val / 64
    78     76   	end