[04/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/vm_ppc.dasc
--
diff --git a/lib/luajit/src/vm_ppc.dasc b/lib/luajit/src/vm_ppc.dasc
new file mode 100644
index 000..ad8a023
--- /dev/null
+++ b/lib/luajit/src/vm_ppc.dasc
@@ -0,0 +1,5160 @@
+|// Low-level VM code for PowerPC CPUs.
+|// Bytecode interpreter, fast functions and helper functions.
+|// Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+|
+|.arch ppc
+|.section code_op, code_sub
+|
+|.actionlist build_actionlist
+|.globals GLOB_
+|.globalnames globnames
+|.externnames extnames
+|
+|// Note: The ragged indentation of the instructions is intentional.
+|//   The starting columns indicate data dependencies.
+|
+|//---
+|
+|// DynASM defines used by the PPC port:
+|//
+|// P64 64 bit pointers (only for GPR64 testing).
+|// Note: a full PPC64 _LP64 port is not planned.
+|// GPR64   64 bit registers (but possibly 32 bit pointers, e.g. PS3).
+|// Affects reg saves, stack layout, carry/overflow/dot flags etc.
+|// FRAME32 Use 32 bit frame layout, even with GPR64 (Xbox 360).
+|// TOC Need table of contents (64 bit or 32 bit variant, e.g. PS3).
+|// Function pointers are really a struct: code, TOC, env (optional).
+|// TOCENV  Function pointers have an environment pointer, too (not on PS3).
+|// PPE Power Processor Element of Cell (PS3) or Xenon (Xbox 360).
+|// Must avoid (slow) micro-coded instructions.
+|
+|.if P64
+|.define TOC, 1
+|.define TOCENV, 1
+|.macro lpx, a, b, c; ldx a, b, c; .endmacro
+|.macro lp, a, b; ld a, b; .endmacro
+|.macro stp, a, b; std a, b; .endmacro
+|.define decode_OPP, decode_OP8
+|.if FFI
+|// Missing: Calling conventions, 64 bit regs, TOC.
+|.error lib_ffi not yet implemented for PPC64
+|.endif
+|.else
+|.macro lpx, a, b, c; lwzx a, b, c; .endmacro
+|.macro lp, a, b; lwz a, b; .endmacro
+|.macro stp, a, b; stw a, b; .endmacro
+|.define decode_OPP, decode_OP4
+|.endif
+|
+|// Convenience macros for TOC handling.
+|.if TOC
+|// Linker needs a TOC patch area for every external call relocation.
+|.macro blex, target; bl extern target@plt; nop; .endmacro
+|.macro .toc, a, b; a, b; .endmacro
+|.if P64
+|.define TOC_OFS,   8
+|.define ENV_OFS,  16
+|.else
+|.define TOC_OFS,  4
+|.define ENV_OFS,  8
+|.endif
+|.else  // No TOC.
+|.macro blex, target; bl extern target@plt; .endmacro
+|.macro .toc, a, b; .endmacro
+|.endif
+|.macro .tocenv, a, b; .if TOCENV; a, b; .endif; .endmacro
+|
+|.macro .gpr64, a, b; .if GPR64; a, b; .endif; .endmacro
+|
+|.macro andix., y, a, i
+|.if PPE
+|  rlwinm y, a, 0, 31-lj_fls(i), 31-lj_ffs(i)
+|  cmpwi y, 0
+|.else
+|  andi. y, a, i
+|.endif
+|.endmacro
+|
+|.macro clrso, reg
+|.if PPE
+|  li reg, 0
+|  mtxer reg
+|.else
+|  mcrxr cr0
+|.endif
+|.endmacro
+|
+|.macro checkov, reg, noov
+|.if PPE
+|  mfxer reg
+|  add reg, reg, reg
+|  cmpwi reg, 0
+|   li reg, 0
+|   mtxer reg
+|  bgey noov
+|.else
+|  mcrxr cr0
+|  bley noov
+|.endif
+|.endmacro
+|
+|//---
+|
+|// Fixed register assignments for the interpreter.
+|// Don't use: r1 = sp, r2 and r13 = reserved (TOC, TLS or SDATA)
+|
+|// The following must be C callee-save (but BASE is often refetched).
+|.define BASE, r14 // Base of current Lua stack frame.
+|.define KBASE,r15 // Constants of current Lua function.
+|.define PC,   r16 // Next PC.
+|.define DISPATCH, r17 // Opcode dispatch table.
+|.define LREG, r18 // Register holding lua_State (also in SAVE_L).
+|.define MULTRES,  r19 // Size of multi-result: (nresults+1)*8.
+|.define JGL,  r31 // On-trace: global_State + 32768.
+|
+|// Constants for type-comparisons, stores and conversions. C callee-save.
+|.define TISNUM,   r22
+|.define TISNIL,   r23
+|.define ZERO, r24
+|.define TOBIT,f30 // 2^52 + 2^51.
+|.define TONUM,f31 // 2^52 + 2^51 + 2^31.
+|
+|// The following temporaries are not saved across C calls, except for RA.
+|.define RA,   r20 // Callee-save.
+|.define RB,   r10
+|.define RC,   r11
+|.define RD,   r12
+|.define INS,  r7  // Overlaps CARG5.
+|
+|.define TMP0, r0
+|.define TMP1, r8
+|.define TMP2, r9
+|.define TMP3, r6  // Overlaps CARG4.
+|
+|// Saved temporaries.
+|.define SAVE0,r21
+|
+|// Calling conventions.
+|.define CARG1,r3
+|.define CARG2,r4
+|.define CARG3,r5
+|.define CARG4,r6  // Overlaps TMP3.
+|.define CARG5,r7  // Overlaps INS.
+|
+|.define FARG1,f1
+|.define FARG2,f2
+|
+|.define CRET1,   

[11/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_parse.c
--
diff --git a/lib/luajit/src/lj_parse.c b/lib/luajit/src/lj_parse.c
new file mode 100644
index 000..abfac3c
--- /dev/null
+++ b/lib/luajit/src/lj_parse.c
@@ -0,0 +1,2754 @@
+/*
+** Lua parser (source code - bytecode).
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+**
+** Major portions taken verbatim or adapted from the Lua interpreter.
+** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
+*/
+
+#define lj_parse_c
+#define LUA_CORE
+
+#include lj_obj.h
+#include lj_gc.h
+#include lj_err.h
+#include lj_debug.h
+#include lj_str.h
+#include lj_tab.h
+#include lj_func.h
+#include lj_state.h
+#include lj_bc.h
+#if LJ_HASFFI
+#include lj_ctype.h
+#endif
+#include lj_lex.h
+#include lj_parse.h
+#include lj_vm.h
+#include lj_vmevent.h
+
+/* -- Parser structures and definitions --- */
+
+/* Expression kinds. */
+typedef enum {
+  /* Constant expressions must be first and in this order: */
+  VKNIL,
+  VKFALSE,
+  VKTRUE,
+  VKSTR,   /* sval = string value */
+  VKNUM,   /* nval = number value */
+  VKLAST = VKNUM,
+  VKCDATA, /* nval = cdata value, not treated as a constant expression */
+  /* Non-constant expressions follow: */
+  VLOCAL,  /* info = local register, aux = vstack index */
+  VUPVAL,  /* info = upvalue index, aux = vstack index */
+  VGLOBAL, /* sval = string value */
+  VINDEXED,/* info = table register, aux = index reg/byte/string const */
+  VJMP,/* info = instruction PC */
+  VRELOCABLE,  /* info = instruction PC */
+  VNONRELOC,   /* info = result register */
+  VCALL,   /* info = instruction PC, aux = base */
+  VVOID
+} ExpKind;
+
+/* Expression descriptor. */
+typedef struct ExpDesc {
+  union {
+struct {
+  uint32_t info;   /* Primary info. */
+  uint32_t aux;/* Secondary info. */
+} s;
+TValue nval;   /* Number value. */
+GCstr *sval;   /* String value. */
+  } u;
+  ExpKind k;
+  BCPos t; /* True condition jump list. */
+  BCPos f; /* False condition jump list. */
+} ExpDesc;
+
+/* Macros for expressions. */
+#define expr_hasjump(e)((e)-t != (e)-f)
+
+#define expr_isk(e)((e)-k = VKLAST)
+#define expr_isk_nojump(e) (expr_isk(e)  !expr_hasjump(e))
+#define expr_isnumk(e) ((e)-k == VKNUM)
+#define expr_isnumk_nojump(e)  (expr_isnumk(e)  !expr_hasjump(e))
+#define expr_isstrk(e) ((e)-k == VKSTR)
+
+#define expr_numtv(e)  check_exp(expr_isnumk((e)), (e)-u.nval)
+#define expr_numberV(e)numberVnum(expr_numtv((e)))
+
+/* Initialize expression. */
+static LJ_AINLINE void expr_init(ExpDesc *e, ExpKind k, uint32_t info)
+{
+  e-k = k;
+  e-u.s.info = info;
+  e-f = e-t = NO_JMP;
+}
+
+/* Check number constant for +-0. */
+static int expr_numiszero(ExpDesc *e)
+{
+  TValue *o = expr_numtv(e);
+  return tvisint(o) ? (intV(o) == 0) : tviszero(o);
+}
+
+/* Per-function linked list of scope blocks. */
+typedef struct FuncScope {
+  struct FuncScope *prev;  /* Link to outer scope. */
+  MSize vstart;/* Start of block-local variables. */
+  uint8_t nactvar; /* Number of active vars outside the scope. */
+  uint8_t flags;   /* Scope flags. */
+} FuncScope;
+
+#define FSCOPE_LOOP0x01/* Scope is a (breakable) loop. */
+#define FSCOPE_BREAK   0x02/* Break used in scope. */
+#define FSCOPE_GOLA0x04/* Goto or label used in scope. */
+#define FSCOPE_UPVAL   0x08/* Upvalue in scope. */
+#define FSCOPE_NOCLOSE 0x10/* Do not close upvalues. */
+
+#define NAME_BREAK ((GCstr *)(uintptr_t)1)
+
+/* Index into variable stack. */
+typedef uint16_t VarIndex;
+#define LJ_MAX_VSTACK  (65536 - LJ_MAX_UPVAL)
+
+/* Variable/goto/label info. */
+#define VSTACK_VAR_RW  0x01/* R/W variable. */
+#define VSTACK_GOTO0x02/* Pending goto. */
+#define VSTACK_LABEL   0x04/* Label. */
+
+/* Per-function state. */
+typedef struct FuncState {
+  GCtab *kt;   /* Hash table for constants. */
+  LexState *ls;/* Lexer state. */
+  lua_State *L;/* Lua state. */
+  FuncScope *bl;   /* Current scope. */
+  struct FuncState *prev;  /* Enclosing function. */
+  BCPos pc;/* Next bytecode position. */
+  BCPos lasttarget;/* Bytecode position of last jump target. */
+  BCPos jpc;   /* Pending jump list to next bytecode. */
+  BCReg freereg;   /* First free register. */
+  BCReg nactvar;   /* Number of active local variables. */
+  BCReg nkn, nkgc; /* Number of lua_Number/GCobj constants */
+  

[05/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/vm_mips.dasc
--
diff --git a/lib/luajit/src/vm_mips.dasc b/lib/luajit/src/vm_mips.dasc
new file mode 100644
index 000..ac8346b
--- /dev/null
+++ b/lib/luajit/src/vm_mips.dasc
@@ -0,0 +1,4241 @@
+|// Low-level VM code for MIPS CPUs.
+|// Bytecode interpreter, fast functions and helper functions.
+|// Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+|
+|.arch mips
+|.section code_op, code_sub
+|
+|.actionlist build_actionlist
+|.globals GLOB_
+|.globalnames globnames
+|.externnames extnames
+|
+|// Note: The ragged indentation of the instructions is intentional.
+|//   The starting columns indicate data dependencies.
+|
+|//---
+|
+|// Fixed register assignments for the interpreter.
+|// Don't use: r0 = 0, r26/r27 = reserved, r28 = gp, r29 = sp, r31 = ra
+|
+|// The following must be C callee-save (but BASE is often refetched).
+|.define BASE, r16 // Base of current Lua stack frame.
+|.define KBASE,r17 // Constants of current Lua function.
+|.define PC,   r18 // Next PC.
+|.define DISPATCH, r19 // Opcode dispatch table.
+|.define LREG, r20 // Register holding lua_State (also in SAVE_L).
+|.define MULTRES,  r21 // Size of multi-result: (nresults+1)*8.
+|// NYI: r22 currently unused.
+|
+|.define JGL,  r30 // On-trace: global_State + 32768.
+|
+|// Constants for type-comparisons, stores and conversions. C callee-save.
+|.define TISNIL,   r30
+|.define TOBIT,f30 // 2^52 + 2^51.
+|
+|// The following temporaries are not saved across C calls, except for RA.
+|.define RA,   r23 // Callee-save.
+|.define RB,   r8
+|.define RC,   r9
+|.define RD,   r10
+|.define INS,  r11
+|
+|.define AT,   r1  // Assembler temporary.
+|.define TMP0, r12
+|.define TMP1, r13
+|.define TMP2, r14
+|.define TMP3, r15
+|
+|// Calling conventions.
+|.define CFUNCADDR,r25
+|.define CARG1,r4
+|.define CARG2,r5
+|.define CARG3,r6
+|.define CARG4,r7
+|
+|.define CRET1,r2
+|.define CRET2,r3
+|
+|.define FARG1,f12
+|.define FARG2,f14
+|
+|.define FRET1,f0
+|.define FRET2,f2
+|
+|// Stack layout while in interpreter. Must match with lj_frame.h.
+|.define CFRAME_SPACE, 112 // Delta for sp.
+|
+|.define SAVE_ERRF,124(sp) // 32 bit C frame info.
+|.define SAVE_NRES,120(sp)
+|.define SAVE_CFRAME,  116(sp)
+|.define SAVE_L,   112(sp)
+|//- 8 byte aligned,  16 byte register save area, owned by interpreter.
+|.define SAVE_GPR_,72  // .. 72+10*4: 32 bit GPR saves.
+|.define SAVE_FPR_,24  // .. 24+6*8: 64 bit FPR saves.
+|.define SAVE_PC,  20(sp)
+|.define ARG5, 16(sp)
+|.define CSAVE_4,  12(sp)
+|.define CSAVE_3,  8(sp)
+|.define CSAVE_2,  4(sp)
+|.define CSAVE_1,  0(sp)
+|//- 8 byte aligned,  16 byte register save area, owned by callee.
+|
+|.define ARG5_OFS, 16
+|.define SAVE_MULTRES, ARG5
+|
+|.macro saveregs
+|  addiu sp, sp, -CFRAME_SPACE
+|  sw ra, SAVE_GPR_+9*4(sp)
+|  sw r30, SAVE_GPR_+8*4(sp)
+|   sdc1 f30, SAVE_FPR_+5*8(sp)
+|  sw r23, SAVE_GPR_+7*4(sp)
+|  sw r22, SAVE_GPR_+6*4(sp)
+|   sdc1 f28, SAVE_FPR_+4*8(sp)
+|  sw r21, SAVE_GPR_+5*4(sp)
+|  sw r20, SAVE_GPR_+4*4(sp)
+|   sdc1 f26, SAVE_FPR_+3*8(sp)
+|  sw r19, SAVE_GPR_+3*4(sp)
+|  sw r18, SAVE_GPR_+2*4(sp)
+|   sdc1 f24, SAVE_FPR_+2*8(sp)
+|  sw r17, SAVE_GPR_+1*4(sp)
+|  sw r16, SAVE_GPR_+0*4(sp)
+|   sdc1 f22, SAVE_FPR_+1*8(sp)
+|   sdc1 f20, SAVE_FPR_+0*8(sp)
+|.endmacro
+|
+|.macro restoreregs_ret
+|  lw ra, SAVE_GPR_+9*4(sp)
+|  lw r30, SAVE_GPR_+8*4(sp)
+|   ldc1 f30, SAVE_FPR_+5*8(sp)
+|  lw r23, SAVE_GPR_+7*4(sp)
+|  lw r22, SAVE_GPR_+6*4(sp)
+|   ldc1 f28, SAVE_FPR_+4*8(sp)
+|  lw r21, SAVE_GPR_+5*4(sp)
+|  lw r20, SAVE_GPR_+4*4(sp)
+|   ldc1 f26, SAVE_FPR_+3*8(sp)
+|  lw r19, SAVE_GPR_+3*4(sp)
+|  lw r18, SAVE_GPR_+2*4(sp)
+|   ldc1 f24, SAVE_FPR_+2*8(sp)
+|  lw r17, SAVE_GPR_+1*4(sp)
+|  lw r16, SAVE_GPR_+0*4(sp)
+|   ldc1 f22, SAVE_FPR_+1*8(sp)
+|   ldc1 f20, SAVE_FPR_+0*8(sp)
+|  jr ra
+|  addiu sp, sp, CFRAME_SPACE
+|.endmacro
+|
+|// Type definitions. Some of these are only used for documentation.
+|.type L,  lua_State,  LREG
+|.type GL, global_State
+|.type TVALUE, TValue
+|.type GCOBJ,  GCobj
+|.type STR,GCstr
+|.type TAB,GCtab
+|.type LFUNC,  GCfuncL
+|.type CFUNC,  GCfuncC
+|.type PROTO,  GCproto
+|.type UPVAL,  GCupval
+|.type NODE,   Node
+|.type NARGS8, int
+|.type TRACE, 

[59/62] [abbrv] trafficserver git commit: TS-3800: HostDB UI: support json output, improve srv records, add hostnames

2015-07-28 Thread zwoop
TS-3800: HostDB UI: support json output, improve srv records, add hostnames


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0e703e1e
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0e703e1e
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0e703e1e

Branch: refs/heads/6.0.x
Commit: 0e703e1e3b7198f5c4b0648971fd35d56421e4fd
Parents: 95f45d4
Author: Brian Geffon bri...@apache.org
Authored: Mon Jul 27 22:14:09 2015 -0700
Committer: Brian Geffon bri...@apache.org
Committed: Mon Jul 27 22:14:09 2015 -0700

--
 iocore/hostdb/HostDB.cc   | 169 ++---
 iocore/hostdb/I_HostDBProcessor.h |   3 +
 proxy/Show.h  |  16 +++-
 3 files changed, 153 insertions(+), 35 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0e703e1e/iocore/hostdb/HostDB.cc
--
diff --git a/iocore/hostdb/HostDB.cc b/iocore/hostdb/HostDB.cc
index 9d5ece3..5a9c85a 100644
--- a/iocore/hostdb/HostDB.cc
+++ b/iocore/hostdb/HostDB.cc
@@ -1364,6 +1364,12 @@ HostDBContinuation::lookup_done(IpAddr const ip, char 
const *aname, bool around
   }
 }
   }
+
+  const size_t s_size = strlen(aname) + 1;
+  void *host_dest = hostDB.alloc(i-hostname_offset, s_size);
+  ink_strlcpy((char *)host_dest, aname, s_size);
+  *((char *)host_dest + s_size) = '\0';
+
   if (from_cont)
 do_put_response(from, i, from_cont);
   ink_assert(!i-round_robin || !i-reverse_dns);
@@ -2311,6 +2317,17 @@ HostDBInfo::hostname()
   return (char *)hostDB.ptr(data.hostname_offset, 
hostDB.ptr_to_partition((char *)this));
 }
 
+/*
+ * The perm_hostname exists for all records not just reverse dns records.
+ */
+char *
+HostDBInfo::perm_hostname()
+{
+  if (hostname_offset == 0)
+return NULL;
+
+  return (char *)hostDB.ptr(hostname_offset, hostDB.ptr_to_partition((char 
*)this));
+}
 
 HostDBRoundRobin *
 HostDBInfo::rr()
@@ -2373,6 +2390,8 @@ struct ShowHostDB : public ShowCont {
   uint16_t port;
   IpEndpoint ip;
   bool force;
+  bool output_json;
+  int records_seen;
 
   int
   showMain(int event, Event *e)
@@ -2412,8 +2431,12 @@ struct ShowHostDB : public ShowCont {
   int
   showAll(int event, Event *e)
   {
-CHECK_SHOW(begin(HostDB All Records));
-CHECK_SHOW(show(hr));
+if (!output_json) {
+  CHECK_SHOW(begin(HostDB All Records));
+  CHECK_SHOW(show(hr));
+} else {
+  CHECK_SHOW(show([));
+}
 SET_HANDLER(ShowHostDB::showAllEvent);
 hostDBProcessor.iterate(this);
 return EVENT_CONT;
@@ -2424,22 +2447,54 @@ struct ShowHostDB : public ShowCont {
   {
 if (event == EVENT_INTERVAL) {
   HostDBInfo *r = reinterpret_castHostDBInfo *(e);
+  if (output_json  records_seen++  0) {
+CHECK_SHOW(show(,)); // we need to seperate records
+  }
   showOne(r, false, event, e);
   if (r-round_robin) {
 HostDBRoundRobin *rr_data = r-rr();
 if (rr_data) {
-  CHECK_SHOW(show(table border=1\n));
-  CHECK_SHOW(show(trtd%s/tdtd%d/td/tr\n, Total, 
rr_data-rrcount));
-  CHECK_SHOW(show(trtd%s/tdtd%d/td/tr\n, Good, 
rr_data-good));
-  CHECK_SHOW(show(trtd%s/tdtd%d/td/tr\n, Current, 
rr_data-current));
-  CHECK_SHOW(show(/table\n));
+  if (!output_json) {
+CHECK_SHOW(show(table border=1\n));
+CHECK_SHOW(show(trtd%s/tdtd%d/td/tr\n, Total, 
rr_data-rrcount));
+CHECK_SHOW(show(trtd%s/tdtd%d/td/tr\n, Good, 
rr_data-good));
+CHECK_SHOW(show(trtd%s/tdtd%d/td/tr\n, Current, 
rr_data-current));
+CHECK_SHOW(show(/table\n));
+  } else {
+CHECK_SHOW(show(,\%s\:\%d\,, rr_total, rr_data-rrcount));
+CHECK_SHOW(show(\%s\:\%d\,, rr_good, rr_data-good));
+CHECK_SHOW(show(\%s\:\%d\,, rr_current, rr_data-current));
+CHECK_SHOW(show(\rr_records\:[));
+  }
 
-  for (int i = 0; i  rr_data-rrcount; i++)
-showOne(rr_data-info[i], true, event, e);
+  for (int i = 0; i  rr_data-rrcount; i++) {
+showOne(rr_data-info[i], true, event, e, rr_data);
+if (output_json) {
+  CHECK_SHOW(show(})); // we need to seperate records
+  if (i  (rr_data-rrcount - 1))
+CHECK_SHOW(show(,));
+}
+  }
+
+  if (!output_json) {
+CHECK_SHOW(show(br /\nbr /\n));
+  } else {
+CHECK_SHOW(show(]));
+  }
 }
   }
+
+  if (output_json) {
+CHECK_SHOW(show(}));
+  }
+
 } else if (event == EVENT_DONE) {
-  return complete(event, e);
+  if (output_json) {
+CHECK_SHOW(show(]));
+return 

[50/62] [abbrv] trafficserver git commit: Revert TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a global continuation, saves a possible race condition

2015-07-28 Thread zwoop
Revert TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a 
global continuation, saves a possible race condition

This reverts commit 3678a6e11b53520c35d06c7d8baed79f43f812e2.

I have no idea what happened here, but it seems tangled with the Luajit commit
for reason. Going to try it again.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/c14f8743
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/c14f8743
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/c14f8743

Branch: refs/heads/6.0.x
Commit: c14f874378383b6abaef0238097a066b4f900f90
Parents: a43a124
Author: Leif Hedstrom zw...@apache.org
Authored: Fri Jul 24 01:51:00 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Fri Jul 24 01:51:38 2015 -0600

--
 .../experimental/cache_promote/cache_promote.cc | 25 +---
 1 file changed, 6 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c14f8743/plugins/experimental/cache_promote/cache_promote.cc
--
diff --git a/plugins/experimental/cache_promote/cache_promote.cc 
b/plugins/experimental/cache_promote/cache_promote.cc
index dab961d..9c2edb6 100644
--- a/plugins/experimental/cache_promote/cache_promote.cc
+++ b/plugins/experimental/cache_promote/cache_promote.cc
@@ -34,8 +34,6 @@
 
 
 static const char *PLUGIN_NAME = cache_promote;
-TSCont gNocacheCont;
-
 
 
//
 // Note that all options for all policies has to go here. Not particularly 
pretty...
@@ -374,20 +372,6 @@ private:
 
 
 
//
-// Little helper continuation, to turn off writing to the cache. ToDo: when we 
have proper
-// APIs to make requests / responses, we can remove this completely.
-static int
-cont_nocache_response(TSCont contp, TSEvent event, void *edata)
-{
-  TSHttpTxn txnp = static_castTSHttpTxn(edata);
-
-  TSHttpTxnServerRespNoStoreSet(txnp, 1);
-  // Reenable and continue with the state machine.
-  TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
-  return 0;
-}
-
-//
 // Main plugin, a TXN hook in the TS_HTTP_READ_CACHE_HDR_HOOK. Unless the 
policy allows
 // caching, we will turn off the cache from here on for the TXN.
 //
@@ -415,7 +399,7 @@ cont_handle_policy(TSCont contp, TSEvent event, void *edata)
 TSDebug(PLUGIN_NAME, cache-status is %d, and leaving cache on 
(promoted), obj_status);
   } else {
 TSDebug(PLUGIN_NAME, cache-status is %d, and turning off the 
cache (not promoted), obj_status);
-TSHttpTxnHookAdd(txnp, TS_HTTP_READ_RESPONSE_HDR_HOOK, 
gNocacheCont);
+TSHttpTxnHookAdd(txnp, TS_HTTP_READ_RESPONSE_HDR_HOOK, contp);
   }
   break;
 default:
@@ -429,6 +413,11 @@ cont_handle_policy(TSCont contp, TSEvent event, void 
*edata)
 }
 break;
 
+  // Temporaray hack, to deal with the fact that we can turn off the cache 
earlier
+  case TS_EVENT_HTTP_READ_RESPONSE_HDR:
+TSHttpTxnServerRespNoStoreSet(txnp, 1);
+break;
+
   // Should not happen
   default:
 TSDebug(PLUGIN_NAME, Unhandled event %d, (int)event);
@@ -458,8 +447,6 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int 
errbuf_size)
 return TS_ERROR;
   }
 
-  gNocacheCont = TSContCreate(cont_nocache_response, NULL);
-
   TSDebug(PLUGIN_NAME, remap plugin is successfully initialized);
   return TS_SUCCESS; /* success */
 }



[06/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/vm_arm.dasc
--
diff --git a/lib/luajit/src/vm_arm.dasc b/lib/luajit/src/vm_arm.dasc
new file mode 100644
index 000..457efa6
--- /dev/null
+++ b/lib/luajit/src/vm_arm.dasc
@@ -0,0 +1,4486 @@
+|// Low-level VM code for ARM CPUs.
+|// Bytecode interpreter, fast functions and helper functions.
+|// Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+|
+|.arch arm
+|.section code_op, code_sub
+|
+|.actionlist build_actionlist
+|.globals GLOB_
+|.globalnames globnames
+|.externnames extnames
+|
+|// Note: The ragged indentation of the instructions is intentional.
+|//   The starting columns indicate data dependencies.
+|
+|//---
+|
+|// Fixed register assignments for the interpreter.
+|
+|// The following must be C callee-save.
+|.define MASKR8,   r4  // 255*8 constant for fast bytecode decoding.
+|.define KBASE,r5  // Constants of current Lua function.
+|.define PC,   r6  // Next PC.
+|.define DISPATCH, r7  // Opcode dispatch table.
+|.define LREG, r8  // Register holding lua_State (also in SAVE_L).
+|
+|// C callee-save in EABI, but often refetched. Temporary in iOS 3.0+.
+|.define BASE, r9  // Base of current Lua stack frame.
+|
+|// The following temporaries are not saved across C calls, except for RA/RC.
+|.define RA,   r10 // Callee-save.
+|.define RC,   r11 // Callee-save.
+|.define RB,   r12
+|.define OP,   r12 // Overlaps RB, must not be lr.
+|.define INS,  lr
+|
+|// Calling conventions. Also used as temporaries.
+|.define CARG1,r0
+|.define CARG2,r1
+|.define CARG3,r2
+|.define CARG4,r3
+|.define CARG12,   r0  // For 1st soft-fp double.
+|.define CARG34,   r2  // For 2nd soft-fp double.
+|
+|.define CRET1,r0
+|.define CRET2,r1
+|
+|// Stack layout while in interpreter. Must match with lj_frame.h.
+|.define SAVE_R4,  [sp, #28]
+|.define CFRAME_SPACE, #28
+|.define SAVE_ERRF,[sp, #24]
+|.define SAVE_NRES,[sp, #20]
+|.define SAVE_CFRAME,  [sp, #16]
+|.define SAVE_L,   [sp, #12]
+|.define SAVE_PC,  [sp, #8]
+|.define SAVE_MULTRES, [sp, #4]
+|.define ARG5, [sp]
+|
+|.define TMPDhi,   [sp, #4]
+|.define TMPDlo,   [sp]
+|.define TMPD, [sp]
+|.define TMPDp,sp
+|
+|.if FPU
+|.macro saveregs
+|  push {r5, r6, r7, r8, r9, r10, r11, lr}
+|  vpush {d8-d15}
+|  sub sp, sp, CFRAME_SPACE+4
+|  str r4, SAVE_R4
+|.endmacro
+|.macro restoreregs_ret
+|  ldr r4, SAVE_R4
+|  add sp, sp, CFRAME_SPACE+4
+|  vpop {d8-d15}
+|  pop {r5, r6, r7, r8, r9, r10, r11, pc}
+|.endmacro
+|.else
+|.macro saveregs
+|  push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+|  sub sp, sp, CFRAME_SPACE
+|.endmacro
+|.macro restoreregs_ret
+|  add sp, sp, CFRAME_SPACE
+|  pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
+|.endmacro
+|.endif
+|
+|// Type definitions. Some of these are only used for documentation.
+|.type L,  lua_State,  LREG
+|.type GL, global_State
+|.type TVALUE, TValue
+|.type GCOBJ,  GCobj
+|.type STR,GCstr
+|.type TAB,GCtab
+|.type LFUNC,  GCfuncL
+|.type CFUNC,  GCfuncC
+|.type PROTO,  GCproto
+|.type UPVAL,  GCupval
+|.type NODE,   Node
+|.type NARGS8, int
+|.type TRACE,  GCtrace
+|
+|//---
+|
+|// Trap for not-yet-implemented parts.
+|.macro NYI; ud; .endmacro
+|
+|//---
+|
+|// Access to frame relative to BASE.
+|.define FRAME_FUNC,   #-8
+|.define FRAME_PC, #-4
+|
+|.macro decode_RA8, dst, ins; and dst, MASKR8, ins, lsr #5; .endmacro
+|.macro decode_RB8, dst, ins; and dst, MASKR8, ins, lsr #21; .endmacro
+|.macro decode_RC8, dst, ins; and dst, MASKR8, ins, lsr #13; .endmacro
+|.macro decode_RD, dst, ins; lsr dst, ins, #16; .endmacro
+|.macro decode_OP, dst, ins; and dst, ins, #255; .endmacro
+|
+|// Instruction fetch.
+|.macro ins_NEXT1
+|  ldrb OP, [PC]
+|.endmacro
+|.macro ins_NEXT2
+|   ldr INS, [PC], #4
+|.endmacro
+|// Instruction decode+dispatch.
+|.macro ins_NEXT3
+|  ldr OP, [DISPATCH, OP, lsl #2]
+|   decode_RA8 RA, INS
+|   decode_RD RC, INS
+|  bx OP
+|.endmacro
+|.macro ins_NEXT
+|  ins_NEXT1
+|  ins_NEXT2
+|  ins_NEXT3
+|.endmacro
+|
+|// Instruction footer.
+|.if 1
+|  // Replicated dispatch. Less unpredictable branches, but higher I-Cache use.
+|  .define ins_next, ins_NEXT
+|  .define ins_next_, ins_NEXT
+|  .define ins_next1, ins_NEXT1
+|  .define ins_next2, ins_NEXT2
+|  .define ins_next3, ins_NEXT3
+|.else
+|  // Common 

[02/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/vm_x86.dasc
--
diff --git a/lib/luajit/src/vm_x86.dasc b/lib/luajit/src/vm_x86.dasc
new file mode 100644
index 000..6cdb8cb
--- /dev/null
+++ b/lib/luajit/src/vm_x86.dasc
@@ -0,0 +1,6377 @@
+|// Low-level VM code for x86 CPUs.
+|// Bytecode interpreter, fast functions and helper functions.
+|// Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+|
+|.if P64
+|.arch x64
+|.else
+|.arch x86
+|.endif
+|.section code_op, code_sub
+|
+|.actionlist build_actionlist
+|.globals GLOB_
+|.globalnames globnames
+|.externnames extnames
+|
+|//---
+|
+|.if P64
+|.define X64, 1
+|.define SSE, 1
+|.if WIN
+|.define X64WIN, 1
+|.endif
+|.endif
+|
+|// Fixed register assignments for the interpreter.
+|// This is very fragile and has many dependencies. Caveat emptor.
+|.define BASE, edx // Not C callee-save, refetched anyway.
+|.if not X64
+|.define KBASE,edi // Must be C callee-save.
+|.define KBASEa,   KBASE
+|.define PC,   esi // Must be C callee-save.
+|.define PCa,  PC
+|.define DISPATCH, ebx // Must be C callee-save.
+|.elif X64WIN
+|.define KBASE,edi // Must be C callee-save.
+|.define KBASEa,   rdi
+|.define PC,   esi // Must be C callee-save.
+|.define PCa,  rsi
+|.define DISPATCH, ebx // Must be C callee-save.
+|.else
+|.define KBASE,r15d// Must be C callee-save.
+|.define KBASEa,   r15
+|.define PC,   ebx // Must be C callee-save.
+|.define PCa,  rbx
+|.define DISPATCH, r14d// Must be C callee-save.
+|.endif
+|
+|.define RA,   ecx
+|.define RAH,  ch
+|.define RAL,  cl
+|.define RB,   ebp // Must be ebp (C callee-save).
+|.define RC,   eax // Must be eax.
+|.define RCW,  ax
+|.define RCH,  ah
+|.define RCL,  al
+|.define OP,   RB
+|.define RD,   RC
+|.define RDW,  RCW
+|.define RDL,  RCL
+|.if X64
+|.define RAa, rcx
+|.define RBa, rbp
+|.define RCa, rax
+|.define RDa, rax
+|.else
+|.define RAa, RA
+|.define RBa, RB
+|.define RCa, RC
+|.define RDa, RD
+|.endif
+|
+|.if not X64
+|.define FCARG1,   ecx // x86 fastcall arguments.
+|.define FCARG2,   edx
+|.elif X64WIN
+|.define CARG1,rcx // x64/WIN64 C call arguments.
+|.define CARG2,rdx
+|.define CARG3,r8
+|.define CARG4,r9
+|.define CARG1d,   ecx
+|.define CARG2d,   edx
+|.define CARG3d,   r8d
+|.define CARG4d,   r9d
+|.define FCARG1,   CARG1d  // Upwards compatible to x86 fastcall.
+|.define FCARG2,   CARG2d
+|.else
+|.define CARG1,rdi // x64/POSIX C call arguments.
+|.define CARG2,rsi
+|.define CARG3,rdx
+|.define CARG4,rcx
+|.define CARG5,r8
+|.define CARG6,r9
+|.define CARG1d,   edi
+|.define CARG2d,   esi
+|.define CARG3d,   edx
+|.define CARG4d,   ecx
+|.define CARG5d,   r8d
+|.define CARG6d,   r9d
+|.define FCARG1,   CARG1d  // Simulate x86 fastcall.
+|.define FCARG2,   CARG2d
+|.endif
+|
+|// Type definitions. Some of these are only used for documentation.
+|.type L,  lua_State
+|.type GL, global_State
+|.type TVALUE, TValue
+|.type GCOBJ,  GCobj
+|.type STR,GCstr
+|.type TAB,GCtab
+|.type LFUNC,  GCfuncL
+|.type CFUNC,  GCfuncC
+|.type PROTO,  GCproto
+|.type UPVAL,  GCupval
+|.type NODE,   Node
+|.type NARGS,  int
+|.type TRACE,  GCtrace
+|
+|// Stack layout while in interpreter. Must match with lj_frame.h.
+|//---
+|.if not X64   // x86 stack layout.
+|
+|.define CFRAME_SPACE, aword*7 // Delta for esp (see --).
+|.macro saveregs_
+|  push edi; push esi; push ebx
+|  sub esp, CFRAME_SPACE
+|.endmacro
+|.macro saveregs
+|  push ebp; saveregs_
+|.endmacro
+|.macro restoreregs
+|  add esp, CFRAME_SPACE
+|  pop ebx; pop esi; pop edi; pop ebp
+|.endmacro
+|
+|.define SAVE_ERRF,aword [esp+aword*15]// vm_pcall/vm_cpcall only.
+|.define SAVE_NRES,aword [esp+aword*14]
+|.define SAVE_CFRAME,  aword [esp+aword*13]
+|.define SAVE_L,   aword [esp+aword*12]
+|//- 16 byte aligned, ^^^ arguments from C caller
+|.define SAVE_RET, aword [esp+aword*11]//-- esp entering interpreter.
+|.define SAVE_R4,  aword [esp+aword*10]
+|.define SAVE_R3,  aword [esp+aword*9]

[30/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lib_math.c
--
diff --git a/lib/luajit/src/lib_math.c b/lib/luajit/src/lib_math.c
new file mode 100644
index 000..40f2914
--- /dev/null
+++ b/lib/luajit/src/lib_math.c
@@ -0,0 +1,233 @@
+/*
+** Math library.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#include math.h
+
+#define lib_math_c
+#define LUA_LIB
+
+#include lua.h
+#include lauxlib.h
+#include lualib.h
+
+#include lj_obj.h
+#include lj_lib.h
+#include lj_vm.h
+
+/*  */
+
+#define LJLIB_MODULE_math
+
+LJLIB_ASM(math_abs)LJLIB_REC(.)
+{
+  lj_lib_checknumber(L, 1);
+  return FFH_RETRY;
+}
+LJLIB_ASM_(math_floor) LJLIB_REC(math_round IRFPM_FLOOR)
+LJLIB_ASM_(math_ceil)  LJLIB_REC(math_round IRFPM_CEIL)
+
+LJLIB_ASM(math_sqrt)   LJLIB_REC(math_unary IRFPM_SQRT)
+{
+  lj_lib_checknum(L, 1);
+  return FFH_RETRY;
+}
+LJLIB_ASM_(math_log10) LJLIB_REC(math_unary IRFPM_LOG10)
+LJLIB_ASM_(math_exp)   LJLIB_REC(math_unary IRFPM_EXP)
+LJLIB_ASM_(math_sin)   LJLIB_REC(math_unary IRFPM_SIN)
+LJLIB_ASM_(math_cos)   LJLIB_REC(math_unary IRFPM_COS)
+LJLIB_ASM_(math_tan)   LJLIB_REC(math_unary IRFPM_TAN)
+LJLIB_ASM_(math_asin)  LJLIB_REC(math_atrig FF_math_asin)
+LJLIB_ASM_(math_acos)  LJLIB_REC(math_atrig FF_math_acos)
+LJLIB_ASM_(math_atan)  LJLIB_REC(math_atrig FF_math_atan)
+LJLIB_ASM_(math_sinh)  LJLIB_REC(math_htrig IRCALL_sinh)
+LJLIB_ASM_(math_cosh)  LJLIB_REC(math_htrig IRCALL_cosh)
+LJLIB_ASM_(math_tanh)  LJLIB_REC(math_htrig IRCALL_tanh)
+LJLIB_ASM_(math_frexp)
+LJLIB_ASM_(math_modf)  LJLIB_REC(.)
+
+LJLIB_PUSH(57.29577951308232)
+LJLIB_ASM_(math_deg)   LJLIB_REC(math_degrad)
+
+LJLIB_PUSH(0.017453292519943295)
+LJLIB_ASM_(math_rad)   LJLIB_REC(math_degrad)
+
+LJLIB_ASM(math_log)LJLIB_REC(math_log)
+{
+  double x = lj_lib_checknum(L, 1);
+  if (L-base+1  L-top) {
+double y = lj_lib_checknum(L, 2);
+#ifdef LUAJIT_NO_LOG2
+x = log(x); y = 1.0 / log(y);
+#else
+x = lj_vm_log2(x); y = 1.0 / lj_vm_log2(y);
+#endif
+setnumV(L-base-1, x*y);  /* Do NOT join the expression to x / y. */
+return FFH_RES(1);
+  }
+  return FFH_RETRY;
+}
+
+LJLIB_ASM(math_atan2)  LJLIB_REC(.)
+{
+  lj_lib_checknum(L, 1);
+  lj_lib_checknum(L, 2);
+  return FFH_RETRY;
+}
+LJLIB_ASM_(math_pow)   LJLIB_REC(.)
+LJLIB_ASM_(math_fmod)
+
+LJLIB_ASM(math_ldexp)  LJLIB_REC(.)
+{
+  lj_lib_checknum(L, 1);
+#if LJ_DUALNUM  !LJ_TARGET_X86ORX64
+  lj_lib_checkint(L, 2);
+#else
+  lj_lib_checknum(L, 2);
+#endif
+  return FFH_RETRY;
+}
+
+LJLIB_ASM(math_min)LJLIB_REC(math_minmax IR_MIN)
+{
+  int i = 0;
+  do { lj_lib_checknumber(L, ++i); } while (L-base+i  L-top);
+  return FFH_RETRY;
+}
+LJLIB_ASM_(math_max)   LJLIB_REC(math_minmax IR_MAX)
+
+LJLIB_PUSH(3.14159265358979323846) LJLIB_SET(pi)
+LJLIB_PUSH(1e310) LJLIB_SET(huge)
+
+/*  */
+
+/* This implements a Tausworthe PRNG with period 2^223. Based on:
+**   Tables of maximally-equidistributed combined LFSR generators,
+**   Pierre L'Ecuyer, 1991, table 3, 1st entry.
+** Full-period ME-CF generator with L=64, J=4, k=223, N1=49.
+*/
+
+/* PRNG state. */
+struct RandomState {
+  uint64_t gen[4]; /* State of the 4 LFSR generators. */
+  int valid;   /* State is valid. */
+};
+
+/* Union needed for bit-pattern conversion between uint64_t and double. */
+typedef union { uint64_t u64; double d; } U64double;
+
+/* Update generator i and compute a running xor of all states. */
+#define TW223_GEN(i, k, q, s) \
+  z = rs-gen[i]; \
+  z = (((zq)^z)  (k-s)) ^ ((z((uint64_t)(int64_t)-1  (64-k)))s); \
+  r ^= z; rs-gen[i] = z;
+
+/* PRNG step function. Returns a double in the range 1.0 = d  2.0. */
+LJ_NOINLINE uint64_t LJ_FASTCALL lj_math_random_step(RandomState *rs)
+{
+  uint64_t z, r = 0;
+  TW223_GEN(0, 63, 31, 18)
+  TW223_GEN(1, 58, 19, 28)
+  TW223_GEN(2, 55, 24,  7)
+  TW223_GEN(3, 47, 21,  8)
+  return (r  U64x(000f,)) | U64x(3ff0,);
+}
+
+/* PRNG initialization function. */
+static void random_init(RandomState *rs, double d)
+{
+  uint32_t r = 0x11090601;  /* 64-k[i] as four 8 bit constants. */
+  int i;
+  for (i = 0; i  4; i++) {
+U64double u;
+uint32_t m = 1u  (r255);
+r = 8;
+u.d = d = d * 3.14159265358979323846 + 2.7182818284590452354;
+if (u.u64  m) u.u64 += m;  /* Ensure k[i] MSB of gen[i] are non-zero. */
+rs-gen[i] = u.u64;
+  }
+  rs-valid = 1;
+  for (i = 0; i  10; i++)
+lj_math_random_step(rs);
+}
+
+/* PRNG extract function. */
+LJLIB_PUSH(top-2)  /* Upvalue holds userdata with RandomState. */
+LJLIB_CF(math_random)  

trafficserver git commit: TS-3803: CID 1313322 CID 1313322: HostDB memory issues (introduced in TS-3800)

2015-07-28 Thread briang
Repository: trafficserver
Updated Branches:
  refs/heads/master ec7479243 - 0cd1ef3ed


TS-3803: CID 1313322 CID 1313322: HostDB memory issues (introduced in TS-3800)


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0cd1ef3e
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0cd1ef3e
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0cd1ef3e

Branch: refs/heads/master
Commit: 0cd1ef3ed5e4e6e3a332bccdd07220be717f2226
Parents: ec74792
Author: Brian Geffon bri...@apache.org
Authored: Tue Jul 28 19:43:35 2015 -0700
Committer: Brian Geffon bri...@apache.org
Committed: Tue Jul 28 19:43:35 2015 -0700

--
 iocore/hostdb/HostDB.cc | 16 
 1 file changed, 12 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0cd1ef3e/iocore/hostdb/HostDB.cc
--
diff --git a/iocore/hostdb/HostDB.cc b/iocore/hostdb/HostDB.cc
index 5a9c85a..0d36fd6 100644
--- a/iocore/hostdb/HostDB.cc
+++ b/iocore/hostdb/HostDB.cc
@@ -1365,10 +1365,18 @@ HostDBContinuation::lookup_done(IpAddr const ip, char 
const *aname, bool around
 }
   }
 
-  const size_t s_size = strlen(aname) + 1;
-  void *host_dest = hostDB.alloc(i-hostname_offset, s_size);
-  ink_strlcpy((char *)host_dest, aname, s_size);
-  *((char *)host_dest + s_size) = '\0';
+  if (aname) {
+const size_t s_size = strlen(aname) + 1;
+void *host_dest = hostDB.alloc(i-hostname_offset, s_size);
+if (host_dest) {
+  ink_strlcpy((char *)host_dest, aname, s_size);
+  *((char *)host_dest + s_size) = '\0';
+} else {
+  Warning(Out of room in hostdb for hostname (data area full!));
+  hostDB.delete_block(i);
+  return NULL;
+}
+  }
 
   if (from_cont)
 do_put_response(from, i, from_cont);



[23/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_bc.c
--
diff --git a/lib/luajit/src/lj_bc.c b/lib/luajit/src/lj_bc.c
new file mode 100644
index 000..a8f444c
--- /dev/null
+++ b/lib/luajit/src/lj_bc.c
@@ -0,0 +1,14 @@
+/*
+** Bytecode instruction modes.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_bc_c
+#define LUA_CORE
+
+#include lj_obj.h
+#include lj_bc.h
+
+/* Bytecode offsets and bytecode instruction modes. */
+#include lj_bcdef.h
+

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_bc.h
--
diff --git a/lib/luajit/src/lj_bc.h b/lib/luajit/src/lj_bc.h
new file mode 100644
index 000..7436fab
--- /dev/null
+++ b/lib/luajit/src/lj_bc.h
@@ -0,0 +1,261 @@
+/*
+** Bytecode instruction format.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _LJ_BC_H
+#define _LJ_BC_H
+
+#include lj_def.h
+#include lj_arch.h
+
+/* Bytecode instruction format, 32 bit wide, fields of 8 or 16 bit:
+**
+** +++++
+** | B  | C  | A  | OP | Format ABC
+** +++++
+** |D| A  | OP | Format AD
+** +
+** MSB   LSB
+**
+** In-memory instructions are always stored in host byte order.
+*/
+
+/* Operand ranges and related constants. */
+#define BCMAX_A0xff
+#define BCMAX_B0xff
+#define BCMAX_C0xff
+#define BCMAX_D0x
+#define BCBIAS_J   0x8000
+#define NO_REG BCMAX_A
+#define NO_JMP (~(BCPos)0)
+
+/* Macros to get instruction fields. */
+#define bc_op(i)   ((BCOp)((i)0xff))
+#define bc_a(i)((BCReg)(((i)8)0xff))
+#define bc_b(i)((BCReg)((i)24))
+#define bc_c(i)((BCReg)(((i)16)0xff))
+#define bc_d(i)((BCReg)((i)16))
+#define bc_j(i)((ptrdiff_t)bc_d(i)-BCBIAS_J)
+
+/* Macros to set instruction fields. */
+#define setbc_byte(p, x, ofs) \
+  ((uint8_t *)(p))[LJ_ENDIAN_SELECT(ofs, 3-ofs)] = (uint8_t)(x)
+#define setbc_op(p, x) setbc_byte(p, (x), 0)
+#define setbc_a(p, x)  setbc_byte(p, (x), 1)
+#define setbc_b(p, x)  setbc_byte(p, (x), 3)
+#define setbc_c(p, x)  setbc_byte(p, (x), 2)
+#define setbc_d(p, x) \
+  ((uint16_t *)(p))[LJ_ENDIAN_SELECT(1, 0)] = (uint16_t)(x)
+#define setbc_j(p, x)  setbc_d(p, (BCPos)((int32_t)(x)+BCBIAS_J))
+
+/* Macros to compose instructions. */
+#define BCINS_ABC(o, a, b, c) \
+  (((BCIns)(o))|((BCIns)(a)8)|((BCIns)(b)24)|((BCIns)(c)16))
+#define BCINS_AD(o, a, d) \
+  (((BCIns)(o))|((BCIns)(a)8)|((BCIns)(d)16))
+#define BCINS_AJ(o, a, j)  BCINS_AD(o, a, (BCPos)((int32_t)(j)+BCBIAS_J))
+
+/* Bytecode instruction definition. Order matters, see below.
+**
+** (name, filler, Amode, Bmode, Cmode or Dmode, metamethod)
+**
+** The opcode name suffixes specify the type for RB/RC or RD:
+** V = variable slot
+** S = string const
+** N = number const
+** P = primitive type (~itype)
+** B = unsigned byte literal
+** M = multiple args/results
+*/
+#define BCDEF(_) \
+  /* Comparison ops. ORDER OPR. */ \
+  _(ISLT,  var,___,var,lt) \
+  _(ISGE,  var,___,var,lt) \
+  _(ISLE,  var,___,var,le) \
+  _(ISGT,  var,___,var,le) \
+  \
+  _(ISEQV, var,___,var,eq) \
+  _(ISNEV, var,___,var,eq) \
+  _(ISEQS, var,___,str,eq) \
+  _(ISNES, var,___,str,eq) \
+  _(ISEQN, var,___,num,eq) \
+  _(ISNEN, var,___,num,eq) \
+  _(ISEQP, var,___,pri,eq) \
+  _(ISNEP, var,___,pri,eq) \
+  \
+  /* Unary test and copy ops. */ \
+  _(ISTC,  dst,___,var,___) \
+  _(ISFC,  dst,___,var,___) \
+  _(IST,   ___,___,var,___) \
+  _(ISF,   ___,___,var,___) \
+  \
+  /* Unary ops. */ \
+  _(MOV,   dst,___,var,___) \
+  _(NOT,   dst,___,var,___) \
+  _(UNM,   dst,___,var,unm) \
+  _(LEN,   dst,___,var,len) \
+  \
+  /* Binary ops. ORDER OPR. VV last, POW must be next. */ \
+  _(ADDVN, dst,var,num,add) \
+  _(SUBVN, dst,var,num,sub) \
+  _(MULVN, dst,var,num,mul) \
+  _(DIVVN, dst,var,num,div) \
+  _(MODVN, dst,var,num,mod) \
+  \
+  _(ADDNV, dst,var,num,add) \
+  _(SUBNV, dst,var,num,sub) \
+  _(MULNV, dst,var,num,mul) \
+  _(DIVNV, dst,var,num,div) \
+  _(MODNV, dst,var,num,mod) \
+  \
+  _(ADDVV, dst,var,var,add) \
+  _(SUBVV, dst,var,var,sub) \
+  _(MULVV, dst,var,var,mul) \
+  _(DIVVV, dst,var,var, 

[19/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_ctype.h
--
diff --git a/lib/luajit/src/lj_ctype.h b/lib/luajit/src/lj_ctype.h
new file mode 100644
index 000..3df26f0
--- /dev/null
+++ b/lib/luajit/src/lj_ctype.h
@@ -0,0 +1,461 @@
+/*
+** C type management.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _LJ_CTYPE_H
+#define _LJ_CTYPE_H
+
+#include lj_obj.h
+#include lj_gc.h
+
+#if LJ_HASFFI
+
+/* -- C type definitions -- */
+
+/* C type numbers. Highest 4 bits of C type info. ORDER CT. */
+enum {
+  /* Externally visible types. */
+  CT_NUM,  /* Integer or floating-point numbers. */
+  CT_STRUCT,   /* Struct or union. */
+  CT_PTR,  /* Pointer or reference. */
+  CT_ARRAY,/* Array or complex type. */
+  CT_MAYCONVERT = CT_ARRAY,
+  CT_VOID, /* Void type. */
+  CT_ENUM, /* Enumeration. */
+  CT_HASSIZE = CT_ENUM,  /* Last type where ct-size holds the actual size. */
+  CT_FUNC, /* Function. */
+  CT_TYPEDEF,  /* Typedef. */
+  CT_ATTRIB,   /* Miscellaneous attributes. */
+  /* Internal element types. */
+  CT_FIELD,/* Struct/union field or function parameter. */
+  CT_BITFIELD, /* Struct/union bitfield. */
+  CT_CONSTVAL, /* Constant value. */
+  CT_EXTERN,   /* External reference. */
+  CT_KW/* Keyword. */
+};
+
+LJ_STATIC_ASSERT(((int)CT_PTR  (int)CT_ARRAY) == CT_PTR);
+LJ_STATIC_ASSERT(((int)CT_STRUCT  (int)CT_ARRAY) == CT_STRUCT);
+
+/*
+**  -- info 
+** |type  flags...  A   cid | size   |  sib  | next  | name  |
+** +++---+---+---+--
+** |NUM   BFvcUL..  A   | size   |   | type  |   |
+** |STRUCT..vcU..V  A   | size   | field | name? | name? |
+** |PTR   ..vcR...  A   cid | size   |   | type  |   |
+** |ARRAY VCvc...V  A   cid | size   |   | type  |   |
+** |VOID  ..vc  A   | size   |   | type  |   |
+** |ENUMA   cid | size   | const | name? | name? |
+** |FUNC  VS.. cc   cid | nargs  | field | name? | name? |
+** |TYPEDEF cid ||   | name  | name  |
+** |ATTRIBattrnum   cid | attr   | sib?  | type? |   |
+** |FIELD   cid | offset | field |   | name? |
+** |BITFIELD  B.vcU csz bsz pos | offset | field |   | name? |
+** |CONSTVAL c  cid | value  | const | name  | name  |
+** |EXTERN  cid || sib?  | name  | name  |
+** |KW  tok | size   |   | name  | name  |
+** +++---+---+---+--
+**^^  ^^--- bits used for C type conversion dispatch
+*/
+
+/* C type info flags. TFFA  */
+#define CTF_BOOL   0x0800u /* Boolean: NUM, BITFIELD. */
+#define CTF_FP 0x0400u /* Floating-point: NUM. */
+#define CTF_CONST  0x0200u /* Const qualifier. */
+#define CTF_VOLATILE   0x0100u /* Volatile qualifier. */
+#define CTF_UNSIGNED   0x0080u /* Unsigned: NUM, BITFIELD. */
+#define CTF_LONG   0x0040u /* Long: NUM. */
+#define CTF_VLA0x0010u /* Variable-length: ARRAY, 
STRUCT. */
+#define CTF_REF0x0080u /* Reference: PTR. */
+#define CTF_VECTOR 0x0800u /* Vector: ARRAY. */
+#define CTF_COMPLEX0x0400u /* Complex: ARRAY. */
+#define CTF_UNION  0x0080u /* Union: STRUCT. */
+#define CTF_VARARG 0x0080u /* Vararg: FUNC. */
+#define CTF_SSEREGPARM 0x0040u /* SSE register parameters: FUNC. */
+
+#define CTF_QUAL   (CTF_CONST|CTF_VOLATILE)
+#define CTF_ALIGN  (CTMASK_ALIGNCTSHIFT_ALIGN)
+#define CTF_UCHAR  ((char)-1  0 ? CTF_UNSIGNED : 0)
+
+/* Flags used in parser.  .F.Ammvf   cp-attr  */
+#define CTFP_ALIGNED   0x0001u /* cp-attr + ALIGN */
+#define CTFP_PACKED0x0002u /* cp-attr */
+/*...C...f   cp-fattr */
+#define CTFP_CCONV 0x0001u /* cp-fattr + CCONV/[SSE]REGPARM */
+
+/* C type info bitfields. */
+#define CTMASK_CID 0xu /* Max. 65536 type IDs. */
+#define CTMASK_NUM 0xf000u /* Max. 16 type numbers. */
+#define CTSHIFT_NUM28
+#define CTMASK_ALIGN   15  /* Max. alignment is 2^15. */
+#define CTSHIFT_ALIGN  16
+#define CTMASK_ATTRIB  255 /* Max. 256 attributes. */
+#define CTSHIFT_ATTRIB 16
+#define CTMASK_CCONV   3   /* Max. 4 calling conventions. */
+#define CTSHIFT_CCONV  16
+#define CTMASK_REGPARM 3   /* Max. 0-3 regparms. */
+#define CTSHIFT_REGPARM18
+/* Bitfields only used in parser. */
+#define CTMASK_VSIZEP  15   

[55/62] [abbrv] trafficserver git commit: TS-3798: Copy server session sharing pool to local HttpSM configuration.

2015-07-28 Thread zwoop
TS-3798: Copy server session sharing pool to local HttpSM configuration.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/a90403e9
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/a90403e9
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/a90403e9

Branch: refs/heads/6.0.x
Commit: a90403e9f6220f5511cb9d1523a4db8c27a9316f
Parents: 0b160a7
Author: Alan M. Carroll a...@apache.org
Authored: Fri Jul 24 15:57:57 2015 -0500
Committer: Alan M. Carroll a...@apache.org
Committed: Fri Jul 24 15:57:57 2015 -0500

--
 proxy/http/HttpConfig.cc | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a90403e9/proxy/http/HttpConfig.cc
--
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index 27b6508..646173d 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -1207,6 +1207,7 @@ HttpConfig::reconfigure()
   }
 
   params-oride.server_session_sharing_match = 
m_master.oride.server_session_sharing_match;
+  params-server_session_sharing_pool = m_master.server_session_sharing_pool;
   params-oride.keep_alive_post_out = m_master.oride.keep_alive_post_out;
 
   params-oride.keep_alive_no_activity_timeout_in = 
m_master.oride.keep_alive_no_activity_timeout_in;



[32/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/jit/dis_x86.lua
--
diff --git a/lib/luajit/src/jit/dis_x86.lua b/lib/luajit/src/jit/dis_x86.lua
new file mode 100644
index 000..078d609
--- /dev/null
+++ b/lib/luajit/src/jit/dis_x86.lua
@@ -0,0 +1,836 @@
+
+-- LuaJIT x86/x64 disassembler module.
+--
+-- Copyright (C) 2005-2015 Mike Pall. All rights reserved.
+-- Released under the MIT license. See Copyright Notice in luajit.h
+
+-- This is a helper module used by the LuaJIT machine code dumper module.
+--
+-- Sending small code snippets to an external disassembler and mixing the
+-- output with our own stuff was too fragile. So I had to bite the bullet
+-- and write yet another x86 disassembler. Oh well ...
+--
+-- The output format is very similar to what ndisasm generates. But it has
+-- been developed independently by looking at the opcode tables from the
+-- Intel and AMD manuals. The supported instruction set is quite extensive
+-- and reflects what a current generation Intel or AMD CPU implements in
+-- 32 bit and 64 bit mode. Yes, this includes MMX, SSE, SSE2, SSE3, SSSE3,
+-- SSE4.1, SSE4.2, SSE4a and even privileged and hypervisor (VMX/SVM)
+-- instructions.
+--
+-- Notes:
+-- * The (useless) a16 prefix, 3DNow and pre-586 opcodes are unsupported.
+-- * No attempt at optimization has been made -- it's fast enough for my needs.
+-- * The public API may change when more architectures are added.
+--
+
+local type = type
+local sub, byte, format = string.sub, string.byte, string.format
+local match, gmatch, gsub = string.match, string.gmatch, string.gsub
+local lower, rep = string.lower, string.rep
+
+-- Map for 1st opcode byte in 32 bit mode. Ugly? Well ... read on.
+local map_opc1_32 = {
+--0x
+[0]=addBmr,addVmr,addBrm,addVrm,addBai,addVai,push es,pop es,
+orBmr,orVmr,orBrm,orVrm,orBai,orVai,push cs,opc2*,
+--1x
+adcBmr,adcVmr,adcBrm,adcVrm,adcBai,adcVai,push ss,pop ss,
+sbbBmr,sbbVmr,sbbBrm,sbbVrm,sbbBai,sbbVai,push ds,pop ds,
+--2x
+andBmr,andVmr,andBrm,andVrm,andBai,andVai,es:seg,daa,
+subBmr,subVmr,subBrm,subVrm,subBai,subVai,cs:seg,das,
+--3x
+xorBmr,xorVmr,xorBrm,xorVrm,xorBai,xorVai,ss:seg,aaa,
+cmpBmr,cmpVmr,cmpBrm,cmpVrm,cmpBai,cmpVai,ds:seg,aas,
+--4x
+incVR,incVR,incVR,incVR,incVR,incVR,incVR,incVR,
+decVR,decVR,decVR,decVR,decVR,decVR,decVR,decVR,
+--5x
+pushUR,pushUR,pushUR,pushUR,pushUR,pushUR,pushUR,pushUR,
+popUR,popUR,popUR,popUR,popUR,popUR,popUR,popUR,
+--6x
+sz*pushaw,pusha,sz*popaw,popa,boundVrm,arplWmr,
+fs:seg,gs:seg,o16:,a16,
+pushUi,imulVrmi,pushBs,imulVrms,
+insb,insVS,outsb,outsVS,
+--7x
+joBj,jnoBj,jbBj,jnbBj,jzBj,jnzBj,jbeBj,jaBj,
+jsBj,jnsBj,jpeBj,jpoBj,jlBj,jgeBj,jleBj,jgBj,
+--8x
+arith!Bmi,arith!Vmi,arith!Bmi,arith!Vms,
+testBmr,testVmr,xchgBrm,xchgVrm,
+movBmr,movVmr,movBrm,movVrm,
+movVmg,leaVrm,movWgm,popUm,
+--9x
+nop*xchgVaR|pause|xchgWaR|repne nop,xchgVaR,xchgVaR,xchgVaR,
+xchgVaR,xchgVaR,xchgVaR,xchgVaR,
+sz*cbw,cwde,cdqe,sz*cwd,cdq,cqo,call farViw,wait,
+sz*pushfw,pushf,sz*popfw,popf,sahf,lahf,
+--Ax
+movBao,movVao,movBoa,movVoa,
+movsb,movsVS,cmpsb,cmpsVS,
+testBai,testVai,stosb,stosVS,
+lodsb,lodsVS,scasb,scasVS,
+--Bx
+movBRi,movBRi,movBRi,movBRi,movBRi,movBRi,movBRi,movBRi,
+movVRI,movVRI,movVRI,movVRI,movVRI,movVRI,movVRI,movVRI,
+--Cx
+shift!Bmu,shift!Vmu,retBw,ret,$lesVrm,$ldsVrm,movBmi,movVmi,
+enterBwu,leave,retfBw,retf,int3,intBu,into,iretVS,
+--Dx
+shift!Bm1,shift!Vm1,shift!Bmc,shift!Vmc,aamBu,aadBu,salc,xlatb,
+fp*0,fp*1,fp*2,fp*3,fp*4,fp*5,fp*6,fp*7,
+--Ex
+loopneBj,loopeBj,loopBj,sz*jcxzBj,jecxzBj,jrcxzBj,
+inBau,inVau,outBua,outVua,
+callVj,jmpVj,jmp farViw,jmpBj,inBad,inVad,outBda,outVda,
+--Fx
+lock:,int1,repne:rep,rep:,hlt,cmc,testb!Bm,testv!Vm,
+clc,stc,cli,sti,cld,std,incb!Bm,incd!Vm,
+}
+assert(#map_opc1_32 == 255)
+
+-- Map for 1st opcode byte in 64 bit mode (overrides only).
+local map_opc1_64 = setmetatable({
+  [0x06]=false, [0x07]=false, [0x0e]=false,
+  [0x16]=false, [0x17]=false, [0x1e]=false, [0x1f]=false,
+  [0x27]=false, [0x2f]=false, [0x37]=false, [0x3f]=false,
+  [0x60]=false, [0x61]=false, [0x62]=false, [0x63]=movsxdVrDmt, 
[0x67]=a32:,
+  [0x40]=rex*,   [0x41]=rex*b,   [0x42]=rex*x,   [0x43]=rex*xb,
+  [0x44]=rex*r,  [0x45]=rex*rb,  [0x46]=rex*rx,  [0x47]=rex*rxb,
+  [0x48]=rex*w,  [0x49]=rex*wb,  [0x4a]=rex*wx,  [0x4b]=rex*wxb,
+  [0x4c]=rex*wr, [0x4d]=rex*wrb, [0x4e]=rex*wrx, [0x4f]=rex*wrxb,
+  [0x82]=false, [0x9a]=false, [0xc4]=false, [0xc5]=false, [0xce]=false,
+  [0xd4]=false, [0xd5]=false, [0xd6]=false, [0xea]=false,
+}, { __index = map_opc1_32 })
+
+-- Map for 2nd opcode byte (0F xx). True CISC hell. Hey, I told you.
+-- Prefix dependent MMX/SSE opcodes: (none)|rep|o16|repne, -|F3|66|F2

[27/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_asm_arm.h
--
diff --git a/lib/luajit/src/lj_asm_arm.h b/lib/luajit/src/lj_asm_arm.h
new file mode 100644
index 000..9e4cf43
--- /dev/null
+++ b/lib/luajit/src/lj_asm_arm.h
@@ -0,0 +1,2361 @@
+/*
+** ARM IR assembler (SSA IR - machine code).
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+/* -- Register allocator extensions --- */
+
+/* Allocate a register with a hint. */
+static Reg ra_hintalloc(ASMState *as, IRRef ref, Reg hint, RegSet allow)
+{
+  Reg r = IR(ref)-r;
+  if (ra_noreg(r)) {
+if (!ra_hashint(r)  !iscrossref(as, ref))
+  ra_sethint(IR(ref)-r, hint);  /* Propagate register hint. */
+r = ra_allocref(as, ref, allow);
+  }
+  ra_noweak(as, r);
+  return r;
+}
+
+/* Allocate a scratch register pair. */
+static Reg ra_scratchpair(ASMState *as, RegSet allow)
+{
+  RegSet pick1 = as-freeset  allow;
+  RegSet pick2 = pick1  (pick1  1)  RSET_GPREVEN;
+  Reg r;
+  if (pick2) {
+r = rset_picktop(pick2);
+  } else {
+RegSet pick = pick1  (allow  1)  RSET_GPREVEN;
+if (pick) {
+  r = rset_picktop(pick);
+  ra_restore(as, regcost_ref(as-cost[r+1]));
+} else {
+  pick = pick1  (allow  1)  RSET_GPRODD;
+  if (pick) {
+   r = ra_restore(as, regcost_ref(as-cost[rset_picktop(pick)-1]));
+  } else {
+   r = ra_evict(as, allow  (allow  1)  RSET_GPREVEN);
+   ra_restore(as, regcost_ref(as-cost[r+1]));
+  }
+}
+  }
+  lua_assert(rset_test(RSET_GPREVEN, r));
+  ra_modified(as, r);
+  ra_modified(as, r+1);
+  RA_DBGX((as, scratchpair$r $r, r, r+1));
+  return r;
+}
+
+#if !LJ_SOFTFP
+/* Allocate two source registers for three-operand instructions. */
+static Reg ra_alloc2(ASMState *as, IRIns *ir, RegSet allow)
+{
+  IRIns *irl = IR(ir-op1), *irr = IR(ir-op2);
+  Reg left = irl-r, right = irr-r;
+  if (ra_hasreg(left)) {
+ra_noweak(as, left);
+if (ra_noreg(right))
+  right = ra_allocref(as, ir-op2, rset_exclude(allow, left));
+else
+  ra_noweak(as, right);
+  } else if (ra_hasreg(right)) {
+ra_noweak(as, right);
+left = ra_allocref(as, ir-op1, rset_exclude(allow, right));
+  } else if (ra_hashint(right)) {
+right = ra_allocref(as, ir-op2, allow);
+left = ra_alloc1(as, ir-op1, rset_exclude(allow, right));
+  } else {
+left = ra_allocref(as, ir-op1, allow);
+right = ra_alloc1(as, ir-op2, rset_exclude(allow, left));
+  }
+  return left | (right  8);
+}
+#endif
+
+/* -- Guard handling -- */
+
+/* Generate an exit stub group at the bottom of the reserved MCode memory. */
+static MCode *asm_exitstub_gen(ASMState *as, ExitNo group)
+{
+  MCode *mxp = as-mcbot;
+  int i;
+  if (mxp + 4*4+4*EXITSTUBS_PER_GROUP = as-mctop)
+asm_mclimit(as);
+  /* str lr, [sp]; bl -vm_exit_handler; .long DISPATCH_address, group. */
+  *mxp++ = ARMI_STR|ARMI_LS_P|ARMI_LS_U|ARMF_D(RID_LR)|ARMF_N(RID_SP);
+  *mxp = ARMI_BL|MCode *)(void *)lj_vm_exit_handler-mxp)-2)0x00ffu);
+  mxp++;
+  *mxp++ = (MCode)i32ptr(J2GG(as-J)-dispatch);  /* DISPATCH address */
+  *mxp++ = group*EXITSTUBS_PER_GROUP;
+  for (i = 0; i  EXITSTUBS_PER_GROUP; i++)
+*mxp++ = ARMI_B|((-6-i)0x00ffu);
+  lj_mcode_sync(as-mcbot, mxp);
+  lj_mcode_commitbot(as-J, mxp);
+  as-mcbot = mxp;
+  as-mclim = as-mcbot + MCLIM_REDZONE;
+  return mxp - EXITSTUBS_PER_GROUP;
+}
+
+/* Setup all needed exit stubs. */
+static void asm_exitstub_setup(ASMState *as, ExitNo nexits)
+{
+  ExitNo i;
+  if (nexits = EXITSTUBS_PER_GROUP*LJ_MAX_EXITSTUBGR)
+lj_trace_err(as-J, LJ_TRERR_SNAPOV);
+  for (i = 0; i  (nexits+EXITSTUBS_PER_GROUP-1)/EXITSTUBS_PER_GROUP; i++)
+if (as-J-exitstubgroup[i] == NULL)
+  as-J-exitstubgroup[i] = asm_exitstub_gen(as, i);
+}
+
+/* Emit conditional branch to exit for guard. */
+static void asm_guardcc(ASMState *as, ARMCC cc)
+{
+  MCode *target = exitstub_addr(as-J, as-snapno);
+  MCode *p = as-mcp;
+  if (LJ_UNLIKELY(p == as-invmcp)) {
+as-loopinv = 1;
+*p = ARMI_BL | ((target-p-2)  0x00ffu);
+emit_branch(as, ARMF_CC(ARMI_B, cc^1), p+1);
+return;
+  }
+  emit_branch(as, ARMF_CC(ARMI_BL, cc), target);
+}
+
+/* -- Operand fusion -- */
+
+/* Limit linear search to this distance. Avoids O(n^2) behavior. */
+#define CONFLICT_SEARCH_LIM31
+
+/* Check if there's no conflicting instruction between curins and ref. */
+static int noconflict(ASMState *as, IRRef ref, IROp conflict)
+{
+  IRIns *ir = as-ir;
+  IRRef i = as-curins;
+  if (i  ref + CONFLICT_SEARCH_LIM)
+return 0;  /* Give up, ref is too far away. */
+  while (--i  ref)
+if (ir[i].o == conflict)
+  return 0;  /* Conflict found. */
+  return 1;  /* Ok, no conflict. */
+}
+
+/* Fuse the array base of colocated arrays. */

[40/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/doc/ext_ffi_tutorial.html
--
diff --git a/lib/luajit/doc/ext_ffi_tutorial.html 
b/lib/luajit/doc/ext_ffi_tutorial.html
new file mode 100644
index 000..8f99bfb
--- /dev/null
+++ b/lib/luajit/doc/ext_ffi_tutorial.html
@@ -0,0 +1,601 @@
+!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN 
http://www.w3.org/TR/html4/strict.dtd;
+html
+head
+titleFFI Tutorial/title
+meta http-equiv=Content-Type content=text/html; charset=iso-8859-1
+meta name=Author content=Mike Pall
+meta name=Copyright content=Copyright (C) 2005-2015, Mike Pall
+meta name=Language content=en
+link rel=stylesheet type=text/css href=bluequad.css media=screen
+link rel=stylesheet type=text/css href=bluequad-print.css media=print
+style type=text/css
+table.idiomtable { font-size: 90%; line-height: 1.2; }
+table.idiomtable tt { font-size: 100%; }
+table.idiomtable td { vertical-align: top; }
+tr.idiomhead td { font-weight: bold; }
+td.idiomlua b { font-weight: normal; color: #2142bf; }
+/style
+/head
+body
+div id=site
+a href=http://luajit.org;spanLuaspan id=logoJIT/span/span/a
+/div
+div id=head
+h1FFI Tutorial/h1
+/div
+div id=nav
+ulli
+a href=luajit.htmlLuaJIT/a
+ulli
+a href=http://luajit.org/download.html;Download span 
class=extraquo;/span/a
+/lili
+a href=install.htmlInstallation/a
+/lili
+a href=running.htmlRunning/a
+/li/ul
+/lili
+a href=extensions.htmlExtensions/a
+ulli
+a href=ext_ffi.htmlFFI Library/a
+ulli
+a class=current href=ext_ffi_tutorial.htmlFFI Tutorial/a
+/lili
+a href=ext_ffi_api.htmlffi.* API/a
+/lili
+a href=ext_ffi_semantics.htmlFFI Semantics/a
+/li/ul
+/lili
+a href=ext_jit.htmljit.* Library/a
+/lili
+a href=ext_c_api.htmlLua/C API/a
+/li/ul
+/lili
+a href=status.htmlStatus/a
+ulli
+a href=changes.htmlChanges/a
+/li/ul
+/lili
+a href=faq.htmlFAQ/a
+/lili
+a href=http://luajit.org/performance.html;Performance span 
class=extraquo;/span/a
+/lili
+a href=http://wiki.luajit.org/;Wiki span class=extraquo;/span/a
+/lili
+a href=http://luajit.org/list.html;Mailing List span 
class=extraquo;/span/a
+/li/ul
+/div
+div id=main
+p
+This page is intended to give you an overview of the features of the FFI
+library by presenting a few use cases and guidelines.
+/p
+p
+This page makes no attempt to explain all of the FFI library, though.
+You'll want to have a look at the a href=ext_ffi_api.htmlffi.* API
+function reference/a and the a href=ext_ffi_semantics.htmlFFI
+semantics/a to learn more.
+/p
+
+h2 id=loadLoading the FFI Library/h2
+p
+The FFI library is built into LuaJIT by default, but it's not loaded
+and initialized by default. The suggested way to use the FFI library
+is to add the following to the start of every Lua file that needs one
+of its functions:
+/p
+pre class=code
+local ffi = require(ffi)
+/pre
+p
+Please note this doesn't define an ttffi/tt variable in the table
+of globals mdash; you really need to use the local variable. The
+ttrequire/tt function ensures the library is only loaded once.
+/p
+p style=font-size: 8pt;
+Note: If you want to experiment with the FFI from the interactive prompt
+of the command line executable, omit the ttlocal/tt, as it doesn't
+preserve local variables across lines.
+/p
+
+h2 id=sleepAccessing Standard System Functions/h2
+p
+The following code explains how to access standard system functions.
+We slowly print two lines of dots by sleeping for 10nbsp;milliseconds
+after each dot:
+/p
+pre class=code mark
+span class=codemarknbsp;
+#9312;
+
+
+
+
+
+#9313;
+#9314;
+#9315;
+
+
+
+#9316;
+
+
+
+
+
+#9317;/spanlocal ffi = require(ffi)
+ffi.cdef[[
+span style=color:#00a000;void Sleep(int ms);
+int poll(struct pollfd *fds, unsigned long nfds, int timeout);/span
+]]
+
+local sleep
+if ffi.os == Windows then
+  function sleep(s)
+ffi.C.Sleep(s*1000)
+  end
+else
+  function sleep(s)
+ffi.C.poll(nil, 0, s*1000)
+  end
+end
+
+for i=1,160 do
+  io.write(.); io.flush()
+  sleep(0.01)
+end
+io.write(\n)
+/pre
+p
+Here's the step-by-step explanation:
+/p
+p
+span class=mark#9312;/span This defines the
+Cnbsp;library functions we're going to use. The part inside the
+double-brackets (in green) is just standard Cnbsp;syntax. You can
+usually get this info from the Cnbsp;header files or the
+documentation provided by each Cnbsp;library or Cnbsp;compiler.
+/p
+p
+span class=mark#9313;/span The difficulty we're
+facing here, is that there are different standards to choose from.
+Windows has a simple ttSleep()/tt function. On other systems there
+are a variety of functions available to achieve sub-second sleeps, but
+with no clear consensus. Thankfully ttpoll()/tt can be used for
+this task, too, and it's present on most non-Windows systems. The
+check for ttffi.os/tt makes sure we use the Windows-specific
+function only on Windows systems.
+/p
+p
+span class=mark#9314;/span Here we're wrapping the
+call to the Cnbsp;function in a Lua function. 

[57/62] [abbrv] trafficserver git commit: Clang-format. briang what is the Jira for this??

2015-07-28 Thread zwoop
Clang-format. briang what is the Jira for this??


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/95f45d4a
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/95f45d4a
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/95f45d4a

Branch: refs/heads/6.0.x
Commit: 95f45d4a79368ad7c7a236238ee5af660ae826a7
Parents: aa59a0d
Author: Leif Hedstrom zw...@apache.org
Authored: Mon Jul 27 09:58:00 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Mon Jul 27 09:58:00 2015 -0600

--
 proxy/logging/LogAccessHttp.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/95f45d4a/proxy/logging/LogAccessHttp.cc
--
diff --git a/proxy/logging/LogAccessHttp.cc b/proxy/logging/LogAccessHttp.cc
index fe1b61c..ec0cc7f 100644
--- a/proxy/logging/LogAccessHttp.cc
+++ b/proxy/logging/LogAccessHttp.cc
@@ -916,8 +916,8 @@ int
 LogAccessHttp::marshal_proxy_req_server_port(char *buf)
 {
   if (buf) {
-  uint16_t port = ntohs(m_http_sm-t_state.current.server != NULL ? 
m_http_sm-t_state.current.server-dst_addr.port() : 0);
-  marshal_int(buf, port);
+uint16_t port = ntohs(m_http_sm-t_state.current.server != NULL ? 
m_http_sm-t_state.current.server-dst_addr.port() : 0);
+marshal_int(buf, port);
   }
   return INK_MIN_ALIGN;
 }



[18/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_emit_ppc.h
--
diff --git a/lib/luajit/src/lj_emit_ppc.h b/lib/luajit/src/lj_emit_ppc.h
new file mode 100644
index 000..14edf00
--- /dev/null
+++ b/lib/luajit/src/lj_emit_ppc.h
@@ -0,0 +1,238 @@
+/*
+** PPC instruction emitter.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+/* -- Emit basic instructions - */
+
+static void emit_tab(ASMState *as, PPCIns pi, Reg rt, Reg ra, Reg rb)
+{
+  *--as-mcp = pi | PPCF_T(rt) | PPCF_A(ra) | PPCF_B(rb);
+}
+
+#define emit_asb(as, pi, ra, rs, rb)   emit_tab(as, (pi), (rs), (ra), (rb))
+#define emit_as(as, pi, ra, rs)emit_tab(as, (pi), (rs), (ra), 
0)
+#define emit_ab(as, pi, ra, rb)emit_tab(as, (pi), 0, (ra), 
(rb))
+
+static void emit_tai(ASMState *as, PPCIns pi, Reg rt, Reg ra, int32_t i)
+{
+  *--as-mcp = pi | PPCF_T(rt) | PPCF_A(ra) | (i  0x);
+}
+
+#define emit_ti(as, pi, rt, i) emit_tai(as, (pi), (rt), 0, (i))
+#define emit_ai(as, pi, ra, i) emit_tai(as, (pi), 0, (ra), (i))
+#define emit_asi(as, pi, ra, rs, i)emit_tai(as, (pi), (rs), (ra), (i))
+
+#define emit_fab(as, pi, rf, ra, rb) \
+  emit_tab(as, (pi), (rf)31, (ra)31, (rb)31)
+#define emit_fb(as, pi, rf, rb)emit_tab(as, (pi), (rf)31, 0, 
(rb)31)
+#define emit_fac(as, pi, rf, ra, rc) \
+  emit_tab(as, (pi) | PPCF_C((rc)  31), (rf)31, (ra)31, 0)
+#define emit_facb(as, pi, rf, ra, rc, rb) \
+  emit_tab(as, (pi) | PPCF_C((rc)  31), (rf)31, (ra)31, (rb)31)
+#define emit_fai(as, pi, rf, ra, i)emit_tai(as, (pi), (rf)31, (ra), (i))
+
+static void emit_rot(ASMState *as, PPCIns pi, Reg ra, Reg rs,
+int32_t n, int32_t b, int32_t e)
+{
+  *--as-mcp = pi | PPCF_T(rs) | PPCF_A(ra) | PPCF_B(n) |
+  PPCF_MB(b) | PPCF_ME(e);
+}
+
+static void emit_slwi(ASMState *as, Reg ra, Reg rs, int32_t n)
+{
+  lua_assert(n = 0  n  32);
+  emit_rot(as, PPCI_RLWINM, ra, rs, n, 0, 31-n);
+}
+
+static void emit_rotlwi(ASMState *as, Reg ra, Reg rs, int32_t n)
+{
+  lua_assert(n = 0  n  32);
+  emit_rot(as, PPCI_RLWINM, ra, rs, n, 0, 31);
+}
+
+/* -- Emit loads/stores --- */
+
+/* Prefer rematerialization of BASE/L from global_State over spills. */
+#define emit_canremat(ref) ((ref) = REF_BASE)
+
+/* Try to find a one step delta relative to another constant. */
+static int emit_kdelta1(ASMState *as, Reg t, int32_t i)
+{
+  RegSet work = ~as-freeset  RSET_GPR;
+  while (work) {
+Reg r = rset_picktop(work);
+IRRef ref = regcost_ref(as-cost[r]);
+lua_assert(r != t);
+if (ref  ASMREF_L) {
+  int32_t delta = i - (ra_iskref(ref) ? ra_krefk(as, ref) : IR(ref)-i);
+  if (checki16(delta)) {
+   emit_tai(as, PPCI_ADDI, t, r, delta);
+   return 1;
+  }
+}
+rset_clear(work, r);
+  }
+  return 0;  /* Failed. */
+}
+
+/* Load a 32 bit constant into a GPR. */
+static void emit_loadi(ASMState *as, Reg r, int32_t i)
+{
+  if (checki16(i)) {
+emit_ti(as, PPCI_LI, r, i);
+  } else {
+if ((i  0x)) {
+  int32_t jgl = i32ptr(J2G(as-J));
+  if ((uint32_t)(i-jgl)  65536) {
+   emit_tai(as, PPCI_ADDI, r, RID_JGL, i-jgl-32768);
+   return;
+  } else if (emit_kdelta1(as, r, i)) {
+   return;
+  }
+  emit_asi(as, PPCI_ORI, r, r, i);
+}
+emit_ti(as, PPCI_LIS, r, (i  16));
+  }
+}
+
+#define emit_loada(as, r, addr)emit_loadi(as, (r), 
i32ptr((addr)))
+
+static Reg ra_allock(ASMState *as, int32_t k, RegSet allow);
+
+/* Get/set from constant pointer. */
+static void emit_lsptr(ASMState *as, PPCIns pi, Reg r, void *p, RegSet allow)
+{
+  int32_t jgl = i32ptr(J2G(as-J));
+  int32_t i = i32ptr(p);
+  Reg base;
+  if ((uint32_t)(i-jgl)  65536) {
+i = i-jgl-32768;
+base = RID_JGL;
+  } else {
+base = ra_allock(as, i-(int16_t)i, allow);
+  }
+  emit_tai(as, pi, r, base, i);
+}
+
+#define emit_loadn(as, r, tv) \
+  emit_lsptr(as, PPCI_LFD, ((r)  31), (void *)(tv), RSET_GPR)
+
+/* Get/set global_State fields. */
+static void emit_lsglptr(ASMState *as, PPCIns pi, Reg r, int32_t ofs)
+{
+  emit_tai(as, pi, r, RID_JGL, ofs-32768);
+}
+
+#define emit_getgl(as, r, field) \
+  emit_lsglptr(as, PPCI_LWZ, (r), (int32_t)offsetof(global_State, field))
+#define emit_setgl(as, r, field) \
+  emit_lsglptr(as, PPCI_STW, (r), (int32_t)offsetof(global_State, field))
+
+/* Trace number is determined from per-trace exit stubs. */
+#define emit_setvmstate(as, i) UNUSED(i)
+
+/* -- Emit control-flow instructions -- */
+
+/* Label for internal jumps. */
+typedef MCode *MCLabel;
+
+/* Return label pointing to current PC. */
+#define emit_label(as) ((as)-mcp)
+
+static void emit_condbranch(ASMState *as, PPCIns pi, PPCCC cc, MCode *target)
+{
+  

[49/62] [abbrv] trafficserver git commit: TS-3030 Remove the Makefile targets / ops

2015-07-28 Thread zwoop
TS-3030 Remove the Makefile targets / ops


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/a43a1249
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/a43a1249
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/a43a1249

Branch: refs/heads/6.0.x
Commit: a43a1249cc26074238c3b94f623d690181d99176
Parents: 3678a6e
Author: Leif Hedstrom zw...@apache.org
Authored: Fri Jul 24 09:45:23 2015 +0200
Committer: Leif Hedstrom zw...@apache.org
Committed: Fri Jul 24 09:45:29 2015 +0200

--
 Makefile.am | 7 +--
 lib/Makefile.am | 1 -
 2 files changed, 1 insertion(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a43a1249/Makefile.am
--
diff --git a/Makefile.am b/Makefile.am
index 078cfc1..2b6cbdd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -68,7 +68,6 @@ asf-dist-rc: asf-distdir
 asf-distdir:
@$(am__remove_distdir)
test -d .git  git clone . $(distdir)
-   cd $(distdir)  git submodule update --init  autoreconf -i
$(RM) -r -- $(distdir)/autom4te.cache $(distdir)/ci `find $(distdir) 
-name .git -o -name .gitignore -o -name .gitmodules`
 
 asf-dist-sign: asf-dist
@@ -99,9 +98,6 @@ install-data-hook:
 rat:
java -jar $(top_srcdir)/ci/apache-rat-0.11-SNAPSHOT.jar -E 
$(top_srcdir)/ci/rat-regex.txt  -d $(top_srcdir)
 
-submodules:
-   git submodule update --init
-
 clang-format:
for f in `find $(top_srcdir) -iname \*.[ch] -o -iname \*.cc | fgrep -v 
-e lib/luajit -e lib/tsconfig`; do \
  echo $$f; clang-format -i $$f; done
@@ -119,9 +115,8 @@ help:
echo 'rel-candidaterecreate a signed relelease candidate source 
package and a signed git tag'  \
echo 'distcheckverify dist by performing VPATH build and then 
distclean'  \
echo 'rat  produce a RAT licence compliance report of the 
source'  \
-   echo 'submodules   update the git submodules'  \
echo 'doxygen  generate doxygen docs in doc/html dir'  \
-   echo 'clang-format run clang-format over most C and C++ files (not 
git submodules/trees)'  \
+   echo 'clang-format run clang-format over most C and C++ files (not 
git subtrees)'  \
echo 'help display this list of make targets'  \
echo 'install  install by copying the built files to 
system-wide dirs'  \
echo 'install-stripsame as install but then strips debugging 
symbols'  \

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a43a1249/lib/Makefile.am
--
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 43c0134..6f3bf23 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -45,7 +45,6 @@ LUA_CFLAGS=$(CFLAGS) $(LUAJIT_CFLAGS) -DLUA_COMPAT_ALL 
-DLUA_USE_POSIX -DLUA_USE
 
 all-local:
@echo Making all in luajit
-   test -d $(top_srcdir)/$(subdir)/luajit/src || (cd $(top_srcdir)  
git submodule update --init)
test -d $(top_builddir)/$(subdir)/luajit/src || cp -rf 
$(srcdir)/luajit $(top_builddir)/$(subdir)/
cd luajit  $(MAKE) $(AM_MAKEFLAGS) BUILDMODE=static 
PREFIX=$(prefix) CC=$(CC) \
 CFLAGS=$(LUA_CFLAGS) LDFLAGS=@LUA_LDFLAGS@



[07/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_traceerr.h
--
diff --git a/lib/luajit/src/lj_traceerr.h b/lib/luajit/src/lj_traceerr.h
new file mode 100644
index 000..9bef117
--- /dev/null
+++ b/lib/luajit/src/lj_traceerr.h
@@ -0,0 +1,61 @@
+/*
+** Trace compiler error messages.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+/* This file may be included multiple times with different TREDEF macros. */
+
+/* Recording. */
+TREDEF(RECERR, error thrown or hook called during recording)
+TREDEF(TRACEOV,trace too long)
+TREDEF(STACKOV,trace too deep)
+TREDEF(SNAPOV, too many snapshots)
+TREDEF(BLACKL, blacklisted)
+TREDEF(NYIBC,  NYI: bytecode %d)
+
+/* Recording loop ops. */
+TREDEF(LLEAVE, leaving loop in root trace)
+TREDEF(LINNER, inner loop in root trace)
+TREDEF(LUNROLL,loop unroll limit reached)
+
+/* Recording calls/returns. */
+TREDEF(BADTYPE,bad argument type)
+TREDEF(CJITOFF,JIT compilation disabled for function)
+TREDEF(CUNROLL,call unroll limit reached)
+TREDEF(DOWNREC,down-recursion, restarting)
+TREDEF(NYICF,  NYI: C function %p)
+TREDEF(NYIFF,  NYI: FastFunc %s)
+TREDEF(NYIFFU, NYI: unsupported variant of FastFunc %s)
+TREDEF(NYIRETL,NYI: return to lower frame)
+
+/* Recording indexed load/store. */
+TREDEF(STORENN,store with nil or NaN key)
+TREDEF(NOMM,   missing metamethod)
+TREDEF(IDXLOOP,looping index lookup)
+TREDEF(NYITMIX,NYI: mixed sparse/dense table)
+
+/* Recording C data operations. */
+TREDEF(NOCACHE,symbol not in cache)
+TREDEF(NYICONV,NYI: unsupported C type conversion)
+TREDEF(NYICALL,NYI: unsupported C function type)
+
+/* Optimizations. */
+TREDEF(GFAIL,  guard would always fail)
+TREDEF(PHIOV,  too many PHIs)
+TREDEF(TYPEINS,persistent type instability)
+
+/* Assembler. */
+TREDEF(MCODEAL,failed to allocate mcode memory)
+TREDEF(MCODEOV,machine code too long)
+TREDEF(MCODELM,hit mcode limit (retrying))
+TREDEF(SPILLOV,too many spill slots)
+TREDEF(BADRA,  inconsistent register allocation)
+TREDEF(NYIIR,  NYI: cannot assemble IR instruction %d)
+TREDEF(NYIPHI, NYI: PHI shuffling too complex)
+TREDEF(NYICOAL,NYI: register coalescing too complex)
+
+#undef TREDEF
+
+/* Detecting unused error messages:
+   awk -F, '/^TREDEF/ { gsub(/TREDEF./, ); printf grep -q LJ_TRERR_%s 
*.[ch] || echo %s\n, $1, $1}' lj_traceerr.h | sh
+*/

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_udata.c
--
diff --git a/lib/luajit/src/lj_udata.c b/lib/luajit/src/lj_udata.c
new file mode 100644
index 000..d401a3d
--- /dev/null
+++ b/lib/luajit/src/lj_udata.c
@@ -0,0 +1,34 @@
+/*
+** Userdata handling.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_udata_c
+#define LUA_CORE
+
+#include lj_obj.h
+#include lj_gc.h
+#include lj_udata.h
+
+GCudata *lj_udata_new(lua_State *L, MSize sz, GCtab *env)
+{
+  GCudata *ud = lj_mem_newt(L, sizeof(GCudata) + sz, GCudata);
+  global_State *g = G(L);
+  newwhite(g, ud);  /* Not finalized. */
+  ud-gct = ~LJ_TUDATA;
+  ud-udtype = UDTYPE_USERDATA;
+  ud-len = sz;
+  /* NOBARRIER: The GCudata is new (marked white). */
+  setgcrefnull(ud-metatable);
+  setgcref(ud-env, obj2gco(env));
+  /* Chain to userdata list (after main thread). */
+  setgcrefr(ud-nextgc, mainthread(g)-nextgc);
+  setgcref(mainthread(g)-nextgc, obj2gco(ud));
+  return ud;
+}
+
+void LJ_FASTCALL lj_udata_free(global_State *g, GCudata *ud)
+{
+  lj_mem_free(g, ud, sizeudata(ud));
+}
+

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_udata.h
--
diff --git a/lib/luajit/src/lj_udata.h b/lib/luajit/src/lj_udata.h
new file mode 100644
index 000..676e970
--- /dev/null
+++ b/lib/luajit/src/lj_udata.h
@@ -0,0 +1,14 @@
+/*
+** Userdata handling.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _LJ_UDATA_H
+#define _LJ_UDATA_H
+
+#include lj_obj.h
+
+LJ_FUNC GCudata *lj_udata_new(lua_State *L, MSize sz, GCtab *env);
+LJ_FUNC void LJ_FASTCALL lj_udata_free(global_State *g, GCudata *ud);
+
+#endif

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_vm.h
--
diff --git a/lib/luajit/src/lj_vm.h b/lib/luajit/src/lj_vm.h
new file mode 100644
index 000..036cabc
--- /dev/null
+++ b/lib/luajit/src/lj_vm.h
@@ -0,0 +1,116 @@
+/*
+** Assembler VM interface definitions.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _LJ_VM_H
+#define _LJ_VM_H
+
+#include lj_obj.h
+
+/* Entry points for ASM parts of 

[51/62] [abbrv] trafficserver git commit: TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a global continuation, saves a possible race condition

2015-07-28 Thread zwoop
TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a global 
continuation, saves a possible race condition


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/bfddad17
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/bfddad17
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/bfddad17

Branch: refs/heads/6.0.x
Commit: bfddad17cec3ef9facf406f74c1963cb80e56d71
Parents: c14f874
Author: Leif Hedstrom zw...@apache.org
Authored: Fri Jul 24 01:52:53 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Fri Jul 24 01:52:53 2015 -0600

--
 .../experimental/cache_promote/cache_promote.cc | 25 +++-
 1 file changed, 19 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/bfddad17/plugins/experimental/cache_promote/cache_promote.cc
--
diff --git a/plugins/experimental/cache_promote/cache_promote.cc 
b/plugins/experimental/cache_promote/cache_promote.cc
index 9c2edb6..dab961d 100644
--- a/plugins/experimental/cache_promote/cache_promote.cc
+++ b/plugins/experimental/cache_promote/cache_promote.cc
@@ -34,6 +34,8 @@
 
 
 static const char *PLUGIN_NAME = cache_promote;
+TSCont gNocacheCont;
+
 
 
//
 // Note that all options for all policies has to go here. Not particularly 
pretty...
@@ -372,6 +374,20 @@ private:
 
 
 
//
+// Little helper continuation, to turn off writing to the cache. ToDo: when we 
have proper
+// APIs to make requests / responses, we can remove this completely.
+static int
+cont_nocache_response(TSCont contp, TSEvent event, void *edata)
+{
+  TSHttpTxn txnp = static_castTSHttpTxn(edata);
+
+  TSHttpTxnServerRespNoStoreSet(txnp, 1);
+  // Reenable and continue with the state machine.
+  TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
+  return 0;
+}
+
+//
 // Main plugin, a TXN hook in the TS_HTTP_READ_CACHE_HDR_HOOK. Unless the 
policy allows
 // caching, we will turn off the cache from here on for the TXN.
 //
@@ -399,7 +415,7 @@ cont_handle_policy(TSCont contp, TSEvent event, void *edata)
 TSDebug(PLUGIN_NAME, cache-status is %d, and leaving cache on 
(promoted), obj_status);
   } else {
 TSDebug(PLUGIN_NAME, cache-status is %d, and turning off the 
cache (not promoted), obj_status);
-TSHttpTxnHookAdd(txnp, TS_HTTP_READ_RESPONSE_HDR_HOOK, contp);
+TSHttpTxnHookAdd(txnp, TS_HTTP_READ_RESPONSE_HDR_HOOK, 
gNocacheCont);
   }
   break;
 default:
@@ -413,11 +429,6 @@ cont_handle_policy(TSCont contp, TSEvent event, void 
*edata)
 }
 break;
 
-  // Temporaray hack, to deal with the fact that we can turn off the cache 
earlier
-  case TS_EVENT_HTTP_READ_RESPONSE_HDR:
-TSHttpTxnServerRespNoStoreSet(txnp, 1);
-break;
-
   // Should not happen
   default:
 TSDebug(PLUGIN_NAME, Unhandled event %d, (int)event);
@@ -447,6 +458,8 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int 
errbuf_size)
 return TS_ERROR;
   }
 
+  gNocacheCont = TSContCreate(cont_nocache_response, NULL);
+
   TSDebug(PLUGIN_NAME, remap plugin is successfully initialized);
   return TS_SUCCESS; /* success */
 }



[15/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_mcode.c
--
diff --git a/lib/luajit/src/lj_mcode.c b/lib/luajit/src/lj_mcode.c
new file mode 100644
index 000..d95ebeb
--- /dev/null
+++ b/lib/luajit/src/lj_mcode.c
@@ -0,0 +1,386 @@
+/*
+** Machine code management.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_mcode_c
+#define LUA_CORE
+
+#include lj_obj.h
+#if LJ_HASJIT
+#include lj_gc.h
+#include lj_err.h
+#include lj_jit.h
+#include lj_mcode.h
+#include lj_trace.h
+#include lj_dispatch.h
+#endif
+#if LJ_HASJIT || LJ_HASFFI
+#include lj_vm.h
+#endif
+
+/* -- OS-specific functions --- */
+
+#if LJ_HASJIT || LJ_HASFFI
+
+/* Define this if you want to run LuaJIT with Valgrind. */
+#ifdef LUAJIT_USE_VALGRIND
+#include valgrind/valgrind.h
+#endif
+
+#if LJ_TARGET_IOS
+void sys_icache_invalidate(void *start, size_t len);
+#endif
+
+/* Synchronize data/instruction cache. */
+void lj_mcode_sync(void *start, void *end)
+{
+#ifdef LUAJIT_USE_VALGRIND
+  VALGRIND_DISCARD_TRANSLATIONS(start, (char *)end-(char *)start);
+#endif
+#if LJ_TARGET_X86ORX64
+  UNUSED(start); UNUSED(end);
+#elif LJ_TARGET_IOS
+  sys_icache_invalidate(start, (char *)end-(char *)start);
+#elif LJ_TARGET_PPC
+  lj_vm_cachesync(start, end);
+#elif defined(__GNUC__)
+  __clear_cache(start, end);
+#else
+#error Missing builtin to flush instruction cache
+#endif
+}
+
+#endif
+
+#if LJ_HASJIT
+
+#if LJ_TARGET_WINDOWS
+
+#define WIN32_LEAN_AND_MEAN
+#include windows.h
+
+#define MCPROT_RW  PAGE_READWRITE
+#define MCPROT_RX  PAGE_EXECUTE_READ
+#define MCPROT_RWX PAGE_EXECUTE_READWRITE
+
+static void *mcode_alloc_at(jit_State *J, uintptr_t hint, size_t sz, DWORD 
prot)
+{
+  void *p = VirtualAlloc((void *)hint, sz,
+MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, prot);
+  if (!p  !hint)
+lj_trace_err(J, LJ_TRERR_MCODEAL);
+  return p;
+}
+
+static void mcode_free(jit_State *J, void *p, size_t sz)
+{
+  UNUSED(J); UNUSED(sz);
+  VirtualFree(p, 0, MEM_RELEASE);
+}
+
+static int mcode_setprot(void *p, size_t sz, DWORD prot)
+{
+  DWORD oprot;
+  return !VirtualProtect(p, sz, prot, oprot);
+}
+
+#elif LJ_TARGET_POSIX
+
+#include sys/mman.h
+
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS  MAP_ANON
+#endif
+
+#define MCPROT_RW  (PROT_READ|PROT_WRITE)
+#define MCPROT_RX  (PROT_READ|PROT_EXEC)
+#define MCPROT_RWX (PROT_READ|PROT_WRITE|PROT_EXEC)
+
+static void *mcode_alloc_at(jit_State *J, uintptr_t hint, size_t sz, int prot)
+{
+  void *p = mmap((void *)hint, sz, prot, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+  if (p == MAP_FAILED) {
+if (!hint) lj_trace_err(J, LJ_TRERR_MCODEAL);
+p = NULL;
+  }
+  return p;
+}
+
+static void mcode_free(jit_State *J, void *p, size_t sz)
+{
+  UNUSED(J);
+  munmap(p, sz);
+}
+
+static int mcode_setprot(void *p, size_t sz, int prot)
+{
+  return mprotect(p, sz, prot);
+}
+
+#elif LJ_64
+
+#error Missing OS support for explicit placement of executable memory
+
+#else
+
+/* Fallback allocator. This will fail if memory is not executable by default. 
*/
+#define LUAJIT_UNPROTECT_MCODE
+#define MCPROT_RW  0
+#define MCPROT_RX  0
+#define MCPROT_RWX 0
+
+static void *mcode_alloc_at(jit_State *J, uintptr_t hint, size_t sz, int prot)
+{
+  UNUSED(hint); UNUSED(prot);
+  return lj_mem_new(J-L, sz);
+}
+
+static void mcode_free(jit_State *J, void *p, size_t sz)
+{
+  lj_mem_free(J2G(J), p, sz);
+}
+
+#endif
+
+/* -- MCode area protection --- */
+
+/* Define this ONLY if page protection twiddling becomes a bottleneck. */
+#ifdef LUAJIT_UNPROTECT_MCODE
+
+/* It's generally considered to be a potential security risk to have
+** pages with simultaneous write *and* execute access in a process.
+**
+** Do not even think about using this mode for server processes or
+** apps handling untrusted external data (such as a browser).
+**
+** The security risk is not in LuaJIT itself -- but if an adversary finds
+** any *other* flaw in your C application logic, then any RWX memory page
+** simplifies writing an exploit considerably.
+*/
+#define MCPROT_GEN MCPROT_RWX
+#define MCPROT_RUN MCPROT_RWX
+
+static void mcode_protect(jit_State *J, int prot)
+{
+  UNUSED(J); UNUSED(prot);
+}
+
+#else
+
+/* This is the default behaviour and much safer:
+**
+** Most of the time the memory pages holding machine code are executable,
+** but NONE of them is writable.
+**
+** The current memory area is marked read-write (but NOT executable) only
+** during the short time window while the assembler generates machine code.
+*/
+#define MCPROT_GEN MCPROT_RW
+#define MCPROT_RUN MCPROT_RX
+
+/* Protection twiddling failed. Probably due to kernel security. */
+static LJ_NOINLINE void mcode_protfail(jit_State *J)
+{
+  lua_CFunction panic = J2G(J)-panic;
+  if 

[58/62] [abbrv] trafficserver git commit: Merge branch 'master' into 6.0.x

2015-07-28 Thread zwoop
Merge branch 'master' into 6.0.x

* master: (188 commits)
  Clang-format. briang what is the Jira for this??
  TS-3798: Copy server session sharing pool to local HttpSM configuration.
  Revert TS-3584: SPDY and H2 requests should not trigger connection 
keep-alive.
  Revert TS-3640: Drupal auth fails over SPDY
  TS-3030 Restore the autoreconf -if ...
  TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a global 
continuation, saves a possible race condition
  Revert TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a 
global continuation, saves a possible race condition
  TS-3030 Remove the Makefile targets / ops
  TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a global 
continuation, saves a possible race condition
  TS-3774 clang-format
  [TS-3794]: call spdy_process_read on early read from handshake.
  TS-3774: Fix memory leak issue in host file parsing for HostDB.
  [TS-3794]: Enhance post SSL handshake read race condition for SPDY and H2 
scenarios.
  TS-3793: Check the incoming header request length for HTTP/2 requests
  TS-3783 TS-3030 Add luajit v2.0.4 as a subtree
  TS-3030 Remove the LuaJIT sub-module
  TS-3773 clang-format
  TS-3773: HostDB view all: add more detail for RR records
  Fixed typo in comment
  Fixed typo in comments
  ...


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/13c76b35
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/13c76b35
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/13c76b35

Branch: refs/heads/6.0.x
Commit: 13c76b35cfd4c1b8d9225a8b24279beb08215a46
Parents: a0b75bc 95f45d4
Author: Leif Hedstrom zw...@apache.org
Authored: Mon Jul 27 13:10:51 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Mon Jul 27 13:10:51 2015 -0600

--
 .gitignore  |6 +-
 .gitmodules |3 -
 Makefile.am |9 +-
 NOTICE  |5 +
 build/plugins.mk|2 -
 ci/jenkins/bin/in_tree.sh   |3 +-
 ci/jenkins/bin/out_of_tree.sh   |6 +-
 ci/tsqa/tests/test_body_factory.py  |   79 +
 ci/tsqa/tests/test_cache_generation.py  |   10 +-
 ci/tsqa/tests/test_connect_attempts.py  |4 -
 ci/tsqa/tests/test_custom_log.py|   71 +
 ci/tsqa/tests/test_hostdb.py|  107 +
 ci/tsqa/tests/test_regressions.py   |1 +
 ci/tsqa/tests/test_tls_ticket_key_rotation.py   |  172 +
 cmd/traffic_cop/Makefile.am |1 -
 cmd/traffic_cop/traffic_cop.cc  |   14 +-
 cmd/traffic_crashlog/Makefile.am|2 -
 cmd/traffic_crashlog/traffic_crashlog.cc|   16 +-
 cmd/traffic_crashlog/traffic_crashlog.h |5 +-
 cmd/traffic_ctl/Makefile.am |1 -
 cmd/traffic_ctl/traffic_ctl.h   |9 +-
 cmd/traffic_layout/Makefile.am  |2 -
 cmd/traffic_layout/traffic_layout.cc|  164 +-
 cmd/traffic_line/Makefile.am|1 -
 cmd/traffic_line/traffic_line.cc|   12 +-
 cmd/traffic_manager/AddConfigFilesHere.cc   |4 +-
 cmd/traffic_manager/Makefile.am |4 +-
 cmd/traffic_manager/MgmtHandlers.cc |5 +-
 cmd/traffic_manager/StatProcessor.cc|3 +-
 cmd/traffic_manager/StatProcessor.h |4 +-
 cmd/traffic_manager/StatType.cc |6 +-
 cmd/traffic_manager/StatXML.cc  |2 +-
 cmd/traffic_manager/StatXML.h   |2 +-
 cmd/traffic_manager/WebOverview.cc  |6 +-
 cmd/traffic_manager/WebOverview.h   |8 +-
 cmd/traffic_manager/traffic_manager.cc  |   12 +-
 cmd/traffic_top/Makefile.am |3 -
 cmd/traffic_top/traffic_top.cc  |2 +-
 cmd/traffic_via/Makefile.am |1 -
 cmd/traffic_via/traffic_via.cc  |   13 +-
 cmd/traffic_wccp/Makefile.am|1 -
 cmd/traffic_wccp/wccp_client.cc |4 +-
 configure.ac|3 +-
 doc/admin/cluster-howto.en.rst  |4 +-
 doc/admin/event-logging-formats.en.rst  |   42 +
 doc/admin/faqs.en.rst   |   32 +-
 doc/admin/http-proxy-caching.en.rst |   20 +
 doc/manpages.py |1 +
 doc/reference/api/TSHttpTxnMilestoneGet.en.rst  |   12 +
 doc/reference/commands/index.en.rst |1 +
 doc/reference/commands/traffic_ctl.en.rst   |  234 +
 .../configuration/records.config.en.rst |   48 +-
 

[34/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/host/minilua.c
--
diff --git a/lib/luajit/src/host/minilua.c b/lib/luajit/src/host/minilua.c
new file mode 100644
index 000..aee192a
--- /dev/null
+++ b/lib/luajit/src/host/minilua.c
@@ -0,0 +1,7770 @@
+/* This is a heavily customized and minimized copy of Lua 5.1.5. */
+/* It's only used to build LuaJIT. It does NOT have all standard functions! */
+/**
+* Copyright (C) 1994-2012 Lua.org, PUC-Rio.  All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining
+* a copy of this software and associated documentation files (the
+* Software), to deal in the Software without restriction, including
+* without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to
+* permit persons to whom the Software is furnished to do so, subject to
+* the following conditions:
+*
+* The above copyright notice and this permission notice shall be
+* included in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+**/
+#ifdef _MSC_VER
+typedef unsigned __int64 U64;
+#else
+typedef unsigned long long U64;
+#endif
+int _CRT_glob = 0;
+#include stddef.h
+#include stdarg.h
+#include limits.h
+#include math.h
+#include ctype.h
+#include stdio.h
+#include stdlib.h
+#include string.h
+#include setjmp.h
+#include errno.h
+#include time.h
+typedef enum{
+TM_INDEX,
+TM_NEWINDEX,
+TM_GC,
+TM_MODE,
+TM_EQ,
+TM_ADD,
+TM_SUB,
+TM_MUL,
+TM_DIV,
+TM_MOD,
+TM_POW,
+TM_UNM,
+TM_LEN,
+TM_LT,
+TM_LE,
+TM_CONCAT,
+TM_CALL,
+TM_N
+}TMS;
+enum OpMode{iABC,iABx,iAsBx};
+typedef enum{
+OP_MOVE,
+OP_LOADK,
+OP_LOADBOOL,
+OP_LOADNIL,
+OP_GETUPVAL,
+OP_GETGLOBAL,
+OP_GETTABLE,
+OP_SETGLOBAL,
+OP_SETUPVAL,
+OP_SETTABLE,
+OP_NEWTABLE,
+OP_SELF,
+OP_ADD,
+OP_SUB,
+OP_MUL,
+OP_DIV,
+OP_MOD,
+OP_POW,
+OP_UNM,
+OP_NOT,
+OP_LEN,
+OP_CONCAT,
+OP_JMP,
+OP_EQ,
+OP_LT,
+OP_LE,
+OP_TEST,
+OP_TESTSET,
+OP_CALL,
+OP_TAILCALL,
+OP_RETURN,
+OP_FORLOOP,
+OP_FORPREP,
+OP_TFORLOOP,
+OP_SETLIST,
+OP_CLOSE,
+OP_CLOSURE,
+OP_VARARG
+}OpCode;
+enum OpArgMask{
+OpArgN,
+OpArgU,
+OpArgR,
+OpArgK
+};
+typedef enum{
+VVOID,
+VNIL,
+VTRUE,
+VFALSE,
+VK,
+VKNUM,
+VLOCAL,
+VUPVAL,
+VGLOBAL,
+VINDEXED,
+VJMP,
+VRELOCABLE,
+VNONRELOC,
+VCALL,
+VVARARG
+}expkind;
+enum RESERVED{
+TK_AND=257,TK_BREAK,
+TK_DO,TK_ELSE,TK_ELSEIF,TK_END,TK_FALSE,TK_FOR,TK_FUNCTION,
+TK_IF,TK_IN,TK_LOCAL,TK_NIL,TK_NOT,TK_OR,TK_REPEAT,
+TK_RETURN,TK_THEN,TK_TRUE,TK_UNTIL,TK_WHILE,
+TK_CONCAT,TK_DOTS,TK_EQ,TK_GE,TK_LE,TK_NE,TK_NUMBER,
+TK_NAME,TK_STRING,TK_EOS
+};
+typedef enum BinOpr{
+OPR_ADD,OPR_SUB,OPR_MUL,OPR_DIV,OPR_MOD,OPR_POW,
+OPR_CONCAT,
+OPR_NE,OPR_EQ,
+OPR_LT,OPR_LE,OPR_GT,OPR_GE,
+OPR_AND,OPR_OR,
+OPR_NOBINOPR
+}BinOpr;
+typedef enum UnOpr{OPR_MINUS,OPR_NOT,OPR_LEN,OPR_NOUNOPR}UnOpr;
+#define LUA_QL(x)'x'
+#define luai_apicheck(L,o){(void)L;}
+#define lua_number2str(s,n)sprintf((s),%.14g,(n))
+#define lua_str2number(s,p)strtod((s),(p))
+#define luai_numadd(a,b)((a)+(b))
+#define luai_numsub(a,b)((a)-(b))
+#define luai_nummul(a,b)((a)*(b))
+#define luai_numdiv(a,b)((a)/(b))
+#define luai_nummod(a,b)((a)-floor((a)/(b))*(b))
+#define luai_numpow(a,b)(pow(a,b))
+#define luai_numunm(a)(-(a))
+#define luai_numeq(a,b)((a)==(b))
+#define luai_numlt(a,b)((a)(b))
+#define luai_numle(a,b)((a)=(b))
+#define luai_numisnan(a)(!luai_numeq((a),(a)))
+#define lua_number2int(i,d)((i)=(int)(d))
+#define lua_number2integer(i,d)((i)=(lua_Integer)(d))
+#define LUAI_THROW(L,c)longjmp((c)-b,1)
+#define LUAI_TRY(L,c,a)if(setjmp((c)-b)==0){a}
+#define lua_pclose(L,file)((void)((void)L,file),0)
+#define lua_upvalueindex(i)((-10002)-(i))
+typedef struct lua_State lua_State;
+typedef int(*lua_CFunction)(lua_State*L);
+typedef const char*(*lua_Reader)(lua_State*L,void*ud,size_t*sz);
+typedef void*(*lua_Alloc)(void*ud,void*ptr,size_t osize,size_t nsize);
+typedef double lua_Number;
+typedef ptrdiff_t lua_Integer;
+static void lua_settop(lua_State*L,int idx);
+static int lua_type(lua_State*L,int idx);
+static const char* lua_tolstring(lua_State*L,int idx,size_t*len);
+static size_t lua_objlen(lua_State*L,int idx);
+static void lua_pushlstring(lua_State*L,const char*s,size_t l);
+static void lua_pushcclosure(lua_State*L,lua_CFunction fn,int n);

[13/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_opt_mem.c
--
diff --git a/lib/luajit/src/lj_opt_mem.c b/lib/luajit/src/lj_opt_mem.c
new file mode 100644
index 000..a4d96fc
--- /dev/null
+++ b/lib/luajit/src/lj_opt_mem.c
@@ -0,0 +1,916 @@
+/*
+** Memory access optimizations.
+** AA: Alias Analysis using high-level semantic disambiguation.
+** FWD: Load Forwarding (L2L) + Store Forwarding (S2L).
+** DSE: Dead-Store Elimination.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_opt_mem_c
+#define LUA_CORE
+
+#include lj_obj.h
+
+#if LJ_HASJIT
+
+#include lj_tab.h
+#include lj_ir.h
+#include lj_jit.h
+#include lj_iropt.h
+
+/* Some local macros to save typing. Undef'd at the end. */
+#define IR(ref)(J-cur.ir[(ref)])
+#define fins   (J-fold.ins)
+#define fleft  (J-fold.left)
+#define fright (J-fold.right)
+
+/*
+** Caveat #1: return value is not always a TRef -- only use with tref_ref().
+** Caveat #2: FWD relies on active CSE for xREF operands -- see lj_opt_fold().
+*/
+
+/* Return values from alias analysis. */
+typedef enum {
+  ALIAS_NO,/* The two refs CANNOT alias (exact). */
+  ALIAS_MAY,   /* The two refs MAY alias (inexact). */
+  ALIAS_MUST   /* The two refs MUST alias (exact). */
+} AliasRet;
+
+/* -- ALOAD/HLOAD forwarding and ASTORE/HSTORE elimination  */
+
+/* Simplified escape analysis: check for intervening stores. */
+static AliasRet aa_escape(jit_State *J, IRIns *ir, IRIns *stop)
+{
+  IRRef ref = (IRRef)(ir - J-cur.ir);  /* The ref that might be stored. */
+  for (ir++; ir  stop; ir++)
+if (ir-op2 == ref 
+   (ir-o == IR_ASTORE || ir-o == IR_HSTORE ||
+ir-o == IR_USTORE || ir-o == IR_FSTORE))
+  return ALIAS_MAY;  /* Reference was stored and might alias. */
+  return ALIAS_NO;  /* Reference was not stored. */
+}
+
+/* Alias analysis for two different table references. */
+static AliasRet aa_table(jit_State *J, IRRef ta, IRRef tb)
+{
+  IRIns *taba = IR(ta), *tabb = IR(tb);
+  int newa, newb;
+  lua_assert(ta != tb);
+  lua_assert(irt_istab(taba-t)  irt_istab(tabb-t));
+  /* Disambiguate new allocations. */
+  newa = (taba-o == IR_TNEW || taba-o == IR_TDUP);
+  newb = (tabb-o == IR_TNEW || tabb-o == IR_TDUP);
+  if (newa  newb)
+return ALIAS_NO;  /* Two different allocations never alias. */
+  if (newb) {  /* At least one allocation? */
+IRIns *tmp = taba; taba = tabb; tabb = tmp;
+  } else if (!newa) {
+return ALIAS_MAY;  /* Anything else: we just don't know. */
+  }
+  return aa_escape(J, taba, tabb);
+}
+
+/* Alias analysis for array and hash access using key-based disambiguation. */
+static AliasRet aa_ahref(jit_State *J, IRIns *refa, IRIns *refb)
+{
+  IRRef ka = refa-op2;
+  IRRef kb = refb-op2;
+  IRIns *keya, *keyb;
+  IRRef ta, tb;
+  if (refa == refb)
+return ALIAS_MUST;  /* Shortcut for same refs. */
+  keya = IR(ka);
+  if (keya-o == IR_KSLOT) { ka = keya-op1; keya = IR(ka); }
+  keyb = IR(kb);
+  if (keyb-o == IR_KSLOT) { kb = keyb-op1; keyb = IR(kb); }
+  ta = (refa-o==IR_HREFK || refa-o==IR_AREF) ? IR(refa-op1)-op1 : 
refa-op1;
+  tb = (refb-o==IR_HREFK || refb-o==IR_AREF) ? IR(refb-op1)-op1 : 
refb-op1;
+  if (ka == kb) {
+/* Same key. Check for same table with different ref (NEWREF vs. HREF). */
+if (ta == tb)
+  return ALIAS_MUST;  /* Same key, same table. */
+else
+  return aa_table(J, ta, tb);  /* Same key, possibly different table. */
+  }
+  if (irref_isk(ka)  irref_isk(kb))
+return ALIAS_NO;  /* Different constant keys. */
+  if (refa-o == IR_AREF) {
+/* Disambiguate array references based on index arithmetic. */
+int32_t ofsa = 0, ofsb = 0;
+IRRef basea = ka, baseb = kb;
+lua_assert(refb-o == IR_AREF);
+/* Gather base and offset from t[base] or t[base+-ofs]. */
+if (keya-o == IR_ADD  irref_isk(keya-op2)) {
+  basea = keya-op1;
+  ofsa = IR(keya-op2)-i;
+  if (basea == kb  ofsa != 0)
+   return ALIAS_NO;  /* t[base+-ofs] vs. t[base]. */
+}
+if (keyb-o == IR_ADD  irref_isk(keyb-op2)) {
+  baseb = keyb-op1;
+  ofsb = IR(keyb-op2)-i;
+  if (ka == baseb  ofsb != 0)
+   return ALIAS_NO;  /* t[base] vs. t[base+-ofs]. */
+}
+if (basea == baseb  ofsa != ofsb)
+  return ALIAS_NO;  /* t[base+-o1] vs. t[base+-o2] and o1 != o2. */
+  } else {
+/* Disambiguate hash references based on the type of their keys. */
+lua_assert((refa-o==IR_HREF || refa-o==IR_HREFK || refa-o==IR_NEWREF) 
+  (refb-o==IR_HREF || refb-o==IR_HREFK || refb-o==IR_NEWREF));
+if (!irt_sametype(keya-t, keyb-t))
+  return ALIAS_NO;  /* Different key types. */
+  }
+  if (ta == tb)
+return ALIAS_MAY;  /* Same table, cannot disambiguate keys. */
+  else
+return aa_table(J, ta, tb);  /* Try to disambiguate tables. */
+}
+
+/* Array and hash load 

[24/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_asm_x86.h
--
diff --git a/lib/luajit/src/lj_asm_x86.h b/lib/luajit/src/lj_asm_x86.h
new file mode 100644
index 000..0b6b2d4
--- /dev/null
+++ b/lib/luajit/src/lj_asm_x86.h
@@ -0,0 +1,2806 @@
+/*
+** x86/x64 IR assembler (SSA IR - machine code).
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+/* -- Guard handling -- */
+
+/* Generate an exit stub group at the bottom of the reserved MCode memory. */
+static MCode *asm_exitstub_gen(ASMState *as, ExitNo group)
+{
+  ExitNo i, groupofs = (group*EXITSTUBS_PER_GROUP)  0xff;
+  MCode *mxp = as-mcbot;
+  MCode *mxpstart = mxp;
+  if (mxp + (2+2)*EXITSTUBS_PER_GROUP+8+5 = as-mctop)
+asm_mclimit(as);
+  /* Push low byte of exitno for each exit stub. */
+  *mxp++ = XI_PUSHi8; *mxp++ = (MCode)groupofs;
+  for (i = 1; i  EXITSTUBS_PER_GROUP; i++) {
+*mxp++ = XI_JMPs; *mxp++ = (MCode)((2+2)*(EXITSTUBS_PER_GROUP - i) - 2);
+*mxp++ = XI_PUSHi8; *mxp++ = (MCode)(groupofs + i);
+  }
+  /* Push the high byte of the exitno for each exit stub group. */
+  *mxp++ = XI_PUSHi8; *mxp++ = (MCode)((group*EXITSTUBS_PER_GROUP)8);
+  /* Store DISPATCH at original stack slot 0. Account for the two push ops. */
+  *mxp++ = XI_MOVmi;
+  *mxp++ = MODRM(XM_OFS8, 0, RID_ESP);
+  *mxp++ = MODRM(XM_SCALE1, RID_ESP, RID_ESP);
+  *mxp++ = 2*sizeof(void *);
+  *(int32_t *)mxp = ptr2addr(J2GG(as-J)-dispatch); mxp += 4;
+  /* Jump to exit handler which fills in the ExitState. */
+  *mxp++ = XI_JMP; mxp += 4;
+  *((int32_t *)(mxp-4)) = jmprel(mxp, (MCode *)(void *)lj_vm_exit_handler);
+  /* Commit the code for this group (even if assembly fails later on). */
+  lj_mcode_commitbot(as-J, mxp);
+  as-mcbot = mxp;
+  as-mclim = as-mcbot + MCLIM_REDZONE;
+  return mxpstart;
+}
+
+/* Setup all needed exit stubs. */
+static void asm_exitstub_setup(ASMState *as, ExitNo nexits)
+{
+  ExitNo i;
+  if (nexits = EXITSTUBS_PER_GROUP*LJ_MAX_EXITSTUBGR)
+lj_trace_err(as-J, LJ_TRERR_SNAPOV);
+  for (i = 0; i  (nexits+EXITSTUBS_PER_GROUP-1)/EXITSTUBS_PER_GROUP; i++)
+if (as-J-exitstubgroup[i] == NULL)
+  as-J-exitstubgroup[i] = asm_exitstub_gen(as, i);
+}
+
+/* Emit conditional branch to exit for guard.
+** It's important to emit this *after* all registers have been allocated,
+** because rematerializations may invalidate the flags.
+*/
+static void asm_guardcc(ASMState *as, int cc)
+{
+  MCode *target = exitstub_addr(as-J, as-snapno);
+  MCode *p = as-mcp;
+  if (LJ_UNLIKELY(p == as-invmcp)) {
+as-loopinv = 1;
+*(int32_t *)(p+1) = jmprel(p+5, target);
+target = p;
+cc ^= 1;
+if (as-realign) {
+  emit_sjcc(as, cc, target);
+  return;
+}
+  }
+  emit_jcc(as, cc, target);
+}
+
+/* -- Memory operand fusion --- */
+
+/* Limit linear search to this distance. Avoids O(n^2) behavior. */
+#define CONFLICT_SEARCH_LIM31
+
+/* Check if a reference is a signed 32 bit constant. */
+static int asm_isk32(ASMState *as, IRRef ref, int32_t *k)
+{
+  if (irref_isk(ref)) {
+IRIns *ir = IR(ref);
+if (ir-o != IR_KINT64) {
+  *k = ir-i;
+  return 1;
+} else if (checki32((int64_t)ir_kint64(ir)-u64)) {
+  *k = (int32_t)ir_kint64(ir)-u64;
+  return 1;
+}
+  }
+  return 0;
+}
+
+/* Check if there's no conflicting instruction between curins and ref.
+** Also avoid fusing loads if there are multiple references.
+*/
+static int noconflict(ASMState *as, IRRef ref, IROp conflict, int noload)
+{
+  IRIns *ir = as-ir;
+  IRRef i = as-curins;
+  if (i  ref + CONFLICT_SEARCH_LIM)
+return 0;  /* Give up, ref is too far away. */
+  while (--i  ref) {
+if (ir[i].o == conflict)
+  return 0;  /* Conflict found. */
+else if (!noload  (ir[i].op1 == ref || ir[i].op2 == ref))
+  return 0;
+  }
+  return 1;  /* Ok, no conflict. */
+}
+
+/* Fuse array base into memory operand. */
+static IRRef asm_fuseabase(ASMState *as, IRRef ref)
+{
+  IRIns *irb = IR(ref);
+  as-mrm.ofs = 0;
+  if (irb-o == IR_FLOAD) {
+IRIns *ira = IR(irb-op1);
+lua_assert(irb-op2 == IRFL_TAB_ARRAY);
+/* We can avoid the FLOAD of t-array for colocated arrays. */
+if (ira-o == IR_TNEW  ira-op1 = LJ_MAX_COLOSIZE 
+   !neverfuse(as)  noconflict(as, irb-op1, IR_NEWREF, 1)) {
+  as-mrm.ofs = (int32_t)sizeof(GCtab);  /* Ofs to colocated array. */
+  return irb-op1;  /* Table obj. */
+}
+  } else if (irb-o == IR_ADD  irref_isk(irb-op2)) {
+/* Fuse base offset (vararg load). */
+as-mrm.ofs = IR(irb-op2)-i;
+return irb-op1;
+  }
+  return ref;  /* Otherwise use the given array base. */
+}
+
+/* Fuse array reference into memory operand. */
+static void asm_fusearef(ASMState *as, IRIns *ir, RegSet allow)
+{
+  IRIns *irx;
+  lua_assert(ir-o == IR_AREF);
+  as-mrm.base = 

[62/62] [abbrv] trafficserver git commit: Merge branch 'master' into 6.0.x

2015-07-28 Thread zwoop
Merge branch 'master' into 6.0.x

* master:
  [TS-3802]: fix double free of MIOBuffer in SSLNetVConnection during SPDY 
inactivity.
  TS-3800: HostDB UI: support json output, improve srv records, add hostnames


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/975c4c8c
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/975c4c8c
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/975c4c8c

Branch: refs/heads/6.0.x
Commit: 975c4c8ca3213d0b550f39092d0a751193ed8a05
Parents: f86beac ec74792
Author: Leif Hedstrom zw...@apache.org
Authored: Tue Jul 28 17:38:55 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Tue Jul 28 17:38:55 2015 -0600

--
 iocore/hostdb/HostDB.cc   | 169 ++---
 iocore/hostdb/I_HostDBProcessor.h |   3 +
 proxy/Show.h  |  16 +++-
 proxy/spdy/SpdyClientSession.cc   |   8 ++
 4 files changed, 161 insertions(+), 35 deletions(-)
--




[44/62] [abbrv] trafficserver git commit: [TS-3794]: Enhance post SSL handshake read race condition for SPDY and H2 scenarios.

2015-07-28 Thread zwoop
[TS-3794]: Enhance post SSL handshake read race condition for SPDY and H2 
scenarios.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/3838cf2c
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/3838cf2c
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/3838cf2c

Branch: refs/heads/6.0.x
Commit: 3838cf2c1033eb5c4b37170e4903c294610bcaed
Parents: 1cb87d2
Author: Sudheer Vinukonda sudhe...@yahoo-inc.com
Authored: Thu Jul 23 19:15:40 2015 +
Committer: Sudheer Vinukonda sudhe...@yahoo-inc.com
Committed: Thu Jul 23 19:53:23 2015 +

--
 iocore/net/SSLNetVConnection.cc   |  2 +-
 proxy/http/HttpSM.cc  |  2 +-
 proxy/http2/Http2ClientSession.cc |  7 +++
 proxy/http2/Http2SessionAccept.cc | 10 +-
 proxy/spdy/SpdyClientSession.cc   |  7 ++-
 proxy/spdy/SpdySessionAccept.cc   | 10 +-
 6 files changed, 33 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/3838cf2c/iocore/net/SSLNetVConnection.cc
--
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index ed04ed3..5e2b0ef 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -488,7 +488,7 @@ SSLNetVConnection::net_read_io(NetHandler *nh, EThread 
*lthread)
 if (ret == EVENT_ERROR) {
   this-read.triggered = 0;
   readSignalError(nh, err);
-} else if (ret == SSL_HANDSHAKE_WANT_READ || ret == 
SSL_HANDSHAKE_WANT_ACCEPT || ret == EVENT_CONT) {
+} else if (ret == SSL_HANDSHAKE_WANT_READ || ret == 
SSL_HANDSHAKE_WANT_ACCEPT) {
   if (SSLConfigParams::ssl_handshake_timeout_in  0) {
 double handshake_time = ((double)(Thread::get_hrtime() - 
sslHandshakeBeginTime) / 10);
 Debug(ssl, ssl handshake for vc %p, took %.3f seconds, configured 
handshake_timer: %d, this, handshake_time,

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/3838cf2c/proxy/http/HttpSM.cc
--
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 3f4dd72..4ac8d4a 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -614,7 +614,7 @@ HttpSM::state_read_client_request_header(int event, void 
*data)
   //   time we've been called.  The timeout had been set to
   //   the accept timeout by the HttpClientSession
   //
-  if (client_request_hdr_bytes == 0) {
+  if ((ua_buffer_reader-read_avail()  0)  (client_request_hdr_bytes == 0)) 
{
 milestones[TS_MILESTONE_UA_FIRST_READ] = Thread::get_hrtime();
 
ua_session-get_netvc()-set_inactivity_timeout(HRTIME_SECONDS(t_state.txn_conf-transaction_no_activity_timeout_in));
   }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/3838cf2c/proxy/http2/Http2ClientSession.cc
--
diff --git a/proxy/http2/Http2ClientSession.cc 
b/proxy/http2/Http2ClientSession.cc
index 4e3b85e..0ea6fca 100644
--- a/proxy/http2/Http2ClientSession.cc
+++ b/proxy/http2/Http2ClientSession.cc
@@ -195,6 +195,13 @@ Http2ClientSession::do_io_close(int alerrno)
   DebugHttp2Ssn0(session closed);
 
   ink_assert(this-mutex-thread_holding == this_ethread());
+  if (client_vc) {
+// clean up ssl's first byte iobuf
+SSLNetVConnection *ssl_vc = dynamic_castSSLNetVConnection *(client_vc);
+if (ssl_vc) {
+  ssl_vc-set_ssl_iobuf(NULL);
+}
+  }
   HTTP2_DECREMENT_THREAD_DYN_STAT(HTTP2_STAT_CURRENT_CLIENT_SESSION_COUNT, 
this-mutex-thread_holding);
   send_connection_event(this-connection_state, HTTP2_SESSION_EVENT_FINI, 
this);
   do_api_callout(TS_HTTP_SSN_CLOSE_HOOK);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/3838cf2c/proxy/http2/Http2SessionAccept.cc
--
diff --git a/proxy/http2/Http2SessionAccept.cc 
b/proxy/http2/Http2SessionAccept.cc
index fbb25db..ca3139f 100644
--- a/proxy/http2/Http2SessionAccept.cc
+++ b/proxy/http2/Http2SessionAccept.cc
@@ -65,7 +65,15 @@ Http2SessionAccept::mainEvent(int event, void *data)
   ink_release_assert((event == NET_EVENT_ACCEPT) ? (data != 0) : (1));
 
   if (event == NET_EVENT_ACCEPT) {
-this-accept(static_castNetVConnection *(data), NULL, NULL);
+NetVConnection *netvc = static_castNetVConnection *(data);
+SSLNetVConnection *ssl_vc = dynamic_castSSLNetVConnection *(netvc);
+MIOBuffer *iobuf = NULL;
+IOBufferReader *reader = NULL;
+if (ssl_vc) {
+  iobuf = ssl_vc-get_ssl_iobuf();
+  reader = ssl_vc-get_ssl_reader();
+}
+this-accept(static_castNetVConnection *(data), iobuf, reader);
 return EVENT_CONT;
   }
 


[20/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_crecord.c
--
diff --git a/lib/luajit/src/lj_crecord.c b/lib/luajit/src/lj_crecord.c
new file mode 100644
index 000..a46665e
--- /dev/null
+++ b/lib/luajit/src/lj_crecord.c
@@ -0,0 +1,1671 @@
+/*
+** Trace recorder for C data operations.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_ffrecord_c
+#define LUA_CORE
+
+#include lj_obj.h
+
+#if LJ_HASJIT  LJ_HASFFI
+
+#include lj_err.h
+#include lj_str.h
+#include lj_tab.h
+#include lj_frame.h
+#include lj_ctype.h
+#include lj_cdata.h
+#include lj_cparse.h
+#include lj_cconv.h
+#include lj_clib.h
+#include lj_ccall.h
+#include lj_ff.h
+#include lj_ir.h
+#include lj_jit.h
+#include lj_ircall.h
+#include lj_iropt.h
+#include lj_trace.h
+#include lj_record.h
+#include lj_ffrecord.h
+#include lj_snap.h
+#include lj_crecord.h
+#include lj_dispatch.h
+
+/* Some local macros to save typing. Undef'd at the end. */
+#define IR(ref)(J-cur.ir[(ref)])
+
+/* Pass IR on to next optimization in chain (FOLD). */
+#define emitir(ot, a, b)   (lj_ir_set(J, (ot), (a), (b)), lj_opt_fold(J))
+
+#define emitconv(a, dt, st, flags) \
+  emitir(IRT(IR_CONV, (dt)), (a), (st)|((dt)  5)|(flags))
+
+/* -- C type checks --- */
+
+static GCcdata *argv2cdata(jit_State *J, TRef tr, cTValue *o)
+{
+  GCcdata *cd;
+  TRef trtypeid;
+  if (!tref_iscdata(tr))
+lj_trace_err(J, LJ_TRERR_BADTYPE);
+  cd = cdataV(o);
+  /* Specialize to the CTypeID. */
+  trtypeid = emitir(IRT(IR_FLOAD, IRT_U16), tr, IRFL_CDATA_CTYPEID);
+  emitir(IRTG(IR_EQ, IRT_INT), trtypeid, lj_ir_kint(J, (int32_t)cd-ctypeid));
+  return cd;
+}
+
+/* Specialize to the CTypeID held by a cdata constructor. */
+static CTypeID crec_constructor(jit_State *J, GCcdata *cd, TRef tr)
+{
+  CTypeID id;
+  lua_assert(tref_iscdata(tr)  cd-ctypeid == CTID_CTYPEID);
+  id = *(CTypeID *)cdataptr(cd);
+  tr = emitir(IRT(IR_FLOAD, IRT_INT), tr, IRFL_CDATA_INT);
+  emitir(IRTG(IR_EQ, IRT_INT), tr, lj_ir_kint(J, (int32_t)id));
+  return id;
+}
+
+static CTypeID argv2ctype(jit_State *J, TRef tr, cTValue *o)
+{
+  if (tref_isstr(tr)) {
+GCstr *s = strV(o);
+CPState cp;
+CTypeID oldtop;
+/* Specialize to the string containing the C type declaration. */
+emitir(IRTG(IR_EQ, IRT_STR), tr, lj_ir_kstr(J, s));
+cp.L = J-L;
+cp.cts = ctype_ctsG(J2G(J));
+oldtop = cp.cts-top;
+cp.srcname = strdata(s);
+cp.p = strdata(s);
+cp.param = NULL;
+cp.mode = CPARSE_MODE_ABSTRACT|CPARSE_MODE_NOIMPLICIT;
+if (lj_cparse(cp) || cp.cts-top  oldtop)  /* Avoid new struct defs. */
+  lj_trace_err(J, LJ_TRERR_BADTYPE);
+return cp.val.id;
+  } else {
+GCcdata *cd = argv2cdata(J, tr, o);
+return cd-ctypeid == CTID_CTYPEID ? crec_constructor(J, cd, tr) :
+   cd-ctypeid;
+  }
+}
+
+/* Convert CType to IRType (if possible). */
+static IRType crec_ct2irt(CTState *cts, CType *ct)
+{
+  if (ctype_isenum(ct-info)) ct = ctype_child(cts, ct);
+  if (LJ_LIKELY(ctype_isnum(ct-info))) {
+if ((ct-info  CTF_FP)) {
+  if (ct-size == sizeof(double))
+   return IRT_NUM;
+  else if (ct-size == sizeof(float))
+   return IRT_FLOAT;
+} else {
+  uint32_t b = lj_fls(ct-size);
+  if (b = 3)
+   return IRT_I8 + 2*b + ((ct-info  CTF_UNSIGNED) ? 1 : 0);
+}
+  } else if (ctype_isptr(ct-info)) {
+return (LJ_64  ct-size == 8) ? IRT_P64 : IRT_P32;
+  } else if (ctype_iscomplex(ct-info)) {
+if (ct-size == 2*sizeof(double))
+  return IRT_NUM;
+else if (ct-size == 2*sizeof(float))
+  return IRT_FLOAT;
+  }
+  return IRT_CDATA;
+}
+
+/* -- Optimized memory fill and copy -- */
+
+/* Maximum length and unroll of inlined copy/fill. */
+#define CREC_COPY_MAXUNROLL16
+#define CREC_COPY_MAXLEN   128
+
+#define CREC_FILL_MAXUNROLL16
+
+/* Number of windowed registers used for optimized memory copy. */
+#if LJ_TARGET_X86
+#define CREC_COPY_REGWIN   2
+#elif LJ_TARGET_PPC || LJ_TARGET_MIPS
+#define CREC_COPY_REGWIN   8
+#else
+#define CREC_COPY_REGWIN   4
+#endif
+
+/* List of memory offsets for copy/fill. */
+typedef struct CRecMemList {
+  CTSize ofs;  /* Offset in bytes. */
+  IRType tp;   /* Type of load/store. */
+  TRef trofs;  /* TRef of interned offset. */
+  TRef trval;  /* TRef of load value. */
+} CRecMemList;
+
+/* Generate copy list for element-wise struct copy. */
+static MSize crec_copy_struct(CRecMemList *ml, CTState *cts, CType *ct)
+{
+  CTypeID fid = ct-sib;
+  MSize mlp = 0;
+  while (fid) {
+CType *df = ctype_get(cts, fid);
+fid = df-sib;
+if (ctype_isfield(df-info)) {
+  CType *cct;
+  IRType tp;
+  

[41/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/doc/ext_ffi.html
--
diff --git a/lib/luajit/doc/ext_ffi.html b/lib/luajit/doc/ext_ffi.html
new file mode 100644
index 000..77b8e26
--- /dev/null
+++ b/lib/luajit/doc/ext_ffi.html
@@ -0,0 +1,330 @@
+!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN 
http://www.w3.org/TR/html4/strict.dtd;
+html
+head
+titleFFI Library/title
+meta http-equiv=Content-Type content=text/html; charset=iso-8859-1
+meta name=Author content=Mike Pall
+meta name=Copyright content=Copyright (C) 2005-2015, Mike Pall
+meta name=Language content=en
+link rel=stylesheet type=text/css href=bluequad.css media=screen
+link rel=stylesheet type=text/css href=bluequad-print.css media=print
+/head
+body
+div id=site
+a href=http://luajit.org;spanLuaspan id=logoJIT/span/span/a
+/div
+div id=head
+h1FFI Library/h1
+/div
+div id=nav
+ulli
+a href=luajit.htmlLuaJIT/a
+ulli
+a href=http://luajit.org/download.html;Download span 
class=extraquo;/span/a
+/lili
+a href=install.htmlInstallation/a
+/lili
+a href=running.htmlRunning/a
+/li/ul
+/lili
+a href=extensions.htmlExtensions/a
+ulli
+a class=current href=ext_ffi.htmlFFI Library/a
+ulli
+a href=ext_ffi_tutorial.htmlFFI Tutorial/a
+/lili
+a href=ext_ffi_api.htmlffi.* API/a
+/lili
+a href=ext_ffi_semantics.htmlFFI Semantics/a
+/li/ul
+/lili
+a href=ext_jit.htmljit.* Library/a
+/lili
+a href=ext_c_api.htmlLua/C API/a
+/li/ul
+/lili
+a href=status.htmlStatus/a
+ulli
+a href=changes.htmlChanges/a
+/li/ul
+/lili
+a href=faq.htmlFAQ/a
+/lili
+a href=http://luajit.org/performance.html;Performance span 
class=extraquo;/span/a
+/lili
+a href=http://wiki.luajit.org/;Wiki span class=extraquo;/span/a
+/lili
+a href=http://luajit.org/list.html;Mailing List span 
class=extraquo;/span/a
+/li/ul
+/div
+div id=main
+p
+
+The FFI library allows bcalling external Cnbsp;functions/b and
+busing Cnbsp;data structures/b from pure Lua code.
+
+/p
+p
+
+The FFI library largely obviates the need to write tedious manual
+Lua/C bindings in C. No need to learn a separate binding language
+mdash; bit parses plain Cnbsp;declarations!/b These can be
+cut-n-pasted from Cnbsp;header files or reference manuals. It's up to
+the task of binding large libraries without the need for dealing with
+fragile binding generators.
+
+/p
+p
+The FFI library is tightly integrated into LuaJIT (it's not available
+as a separate module). The code generated by the JIT-compiler for
+accesses to Cnbsp;data structures from Lua code is on par with the
+code a Cnbsp;compiler would generate. Calls to Cnbsp;functions can
+be inlined in JIT-compiled code, unlike calls to functions bound via
+the classic Lua/C API.
+/p
+p
+This page gives a short introduction to the usage of the FFI library.
+emPlease use the FFI sub-topics in the navigation bar to learn more./em
+/p
+
+h2 id=callMotivating Example: Calling External C Functions/h2
+p
+It's really easy to call an external Cnbsp;library function:
+/p
+pre class=code mark
+span class=codemark#9312;
+#9313;
+
+
+#9314;/spanlocal ffi = require(ffi)
+ffi.cdef[[
+span style=color:#00a000;int printf(const char *fmt, ...);/span
+]]
+ffi.C.printf(Hello %s!, world)
+/pre
+p
+So, let's pick that apart:
+/p
+p
+span class=mark#9312;/span Load the FFI library.
+/p
+p
+span class=mark#9313;/span Add a Cnbsp;declaration
+for the function. The part inside the double-brackets (in green) is
+just standard Cnbsp;syntax.
+/p
+p
+span class=mark#9314;/span Call the named
+Cnbsp;function mdash; Yes, it's that simple!
+/p
+p style=font-size: 8pt;
+Actually, what goes on behind the scenes is far from simple: span
+style=color:#4040c0;#9314;/span makes use of the standard
+Cnbsp;library namespace ttffi.C/tt. Indexing this namespace with
+a symbol name (ttprintf/tt) automatically binds it to the
+standard Cnbsp;library. The result is a special kind of object which,
+when called, runs the ttprintf/tt function. The arguments passed
+to this function are automatically converted from Lua objects to the
+corresponding Cnbsp;types.
+/p
+p
+Ok, so maybe the use of ttprintf()/tt wasn't such a spectacular
+example. You could have done that with ttio.write()/tt and
+ttstring.format()/tt, too. But you get the idea ...
+/p
+p
+So here's something to pop up a message box on Windows:
+/p
+pre class=code
+local ffi = require(ffi)
+ffi.cdef[[
+span style=color:#00a000;int MessageBoxA(void *w, const char *txt, const 
char *cap, int type);/span
+]]
+ffi.C.MessageBoxA(nil, Hello world!, Test, 0)
+/pre
+p
+Bing! Again, that was far too easy, no?
+/p
+p style=font-size: 8pt;
+Compare this with the effort required to bind that function using the
+classic Lua/C API: create an extra Cnbsp;file, add a Cnbsp;function
+that retrieves and checks the argument types passed from Lua and calls
+the actual Cnbsp;function, add a list of module functions and their
+names, add a ttluaopen_*/tt function and register all module

[21/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_cparse.c
--
diff --git a/lib/luajit/src/lj_cparse.c b/lib/luajit/src/lj_cparse.c
new file mode 100644
index 000..b9df88d
--- /dev/null
+++ b/lib/luajit/src/lj_cparse.c
@@ -0,0 +1,1872 @@
+/*
+** C declaration parser.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#include lj_obj.h
+
+#if LJ_HASFFI
+
+#include lj_gc.h
+#include lj_err.h
+#include lj_str.h
+#include lj_ctype.h
+#include lj_cparse.h
+#include lj_frame.h
+#include lj_vm.h
+#include lj_char.h
+#include lj_strscan.h
+
+/*
+** Important note: this is NOT a validating C parser! This is a minimal
+** C declaration parser, solely for use by the LuaJIT FFI.
+**
+** It ought to return correct results for properly formed C declarations,
+** but it may accept some invalid declarations, too (and return nonsense).
+** Also, it shows rather generic error messages to avoid unnecessary bloat.
+** If in doubt, please check the input against your favorite C compiler.
+*/
+
+/* -- C lexer - */
+
+/* C lexer token names. */
+static const char *const ctoknames[] = {
+#define CTOKSTR(name, str) str,
+CTOKDEF(CTOKSTR)
+#undef CTOKSTR
+  NULL
+};
+
+/* Forward declaration. */
+LJ_NORET static void cp_err(CPState *cp, ErrMsg em);
+
+static const char *cp_tok2str(CPState *cp, CPToken tok)
+{
+  lua_assert(tok  CTOK_FIRSTDECL);
+  if (tok  CTOK_OFS)
+return ctoknames[tok-CTOK_OFS-1];
+  else if (!lj_char_iscntrl(tok))
+return lj_str_pushf(cp-L, %c, tok);
+  else
+return lj_str_pushf(cp-L, char(%d), tok);
+}
+
+/* End-of-line? */
+static LJ_AINLINE int cp_iseol(CPChar c)
+{
+  return (c == '\n' || c == '\r');
+}
+
+/* Peek next raw character. */
+static LJ_AINLINE CPChar cp_rawpeek(CPState *cp)
+{
+  return (CPChar)(uint8_t)(*cp-p);
+}
+
+static LJ_NOINLINE CPChar cp_get_bs(CPState *cp);
+
+/* Get next character. */
+static LJ_AINLINE CPChar cp_get(CPState *cp)
+{
+  cp-c = (CPChar)(uint8_t)(*cp-p++);
+  if (LJ_LIKELY(cp-c != '\\')) return cp-c;
+  return cp_get_bs(cp);
+}
+
+/* Transparently skip backslash-escaped line breaks. */
+static LJ_NOINLINE CPChar cp_get_bs(CPState *cp)
+{
+  CPChar c2, c = cp_rawpeek(cp);
+  if (!cp_iseol(c)) return cp-c;
+  cp-p++;
+  c2 = cp_rawpeek(cp);
+  if (cp_iseol(c2)  c2 != c) cp-p++;
+  cp-linenumber++;
+  return cp_get(cp);
+}
+
+/* Grow save buffer. */
+static LJ_NOINLINE void cp_save_grow(CPState *cp, CPChar c)
+{
+  MSize newsize;
+  if (cp-sb.sz = CPARSE_MAX_BUF/2)
+cp_err(cp, LJ_ERR_XELEM);
+  newsize = cp-sb.sz * 2;
+  lj_str_resizebuf(cp-L, cp-sb, newsize);
+  cp-sb.buf[cp-sb.n++] = (char)c;
+}
+
+/* Save character in buffer. */
+static LJ_AINLINE void cp_save(CPState *cp, CPChar c)
+{
+  if (LJ_UNLIKELY(cp-sb.n + 1  cp-sb.sz))
+cp_save_grow(cp, c);
+  else
+cp-sb.buf[cp-sb.n++] = (char)c;
+}
+
+/* Skip line break. Handles \n, \r, \r\n or \n\r. */
+static void cp_newline(CPState *cp)
+{
+  CPChar c = cp_rawpeek(cp);
+  if (cp_iseol(c)  c != cp-c) cp-p++;
+  cp-linenumber++;
+}
+
+LJ_NORET static void cp_errmsg(CPState *cp, CPToken tok, ErrMsg em, ...)
+{
+  const char *msg, *tokstr;
+  lua_State *L;
+  va_list argp;
+  if (tok == 0) {
+tokstr = NULL;
+  } else if (tok == CTOK_IDENT || tok == CTOK_INTEGER || tok == CTOK_STRING ||
+tok = CTOK_FIRSTDECL) {
+if (cp-sb.n == 0) cp_save(cp, '$');
+cp_save(cp, '\0');
+tokstr = cp-sb.buf;
+  } else {
+tokstr = cp_tok2str(cp, tok);
+  }
+  L = cp-L;
+  va_start(argp, em);
+  msg = lj_str_pushvf(L, err2msg(em), argp);
+  va_end(argp);
+  if (tokstr)
+msg = lj_str_pushf(L, err2msg(LJ_ERR_XNEAR), msg, tokstr);
+  if (cp-linenumber  1)
+msg = lj_str_pushf(L, %s at line %d, msg, cp-linenumber);
+  lj_err_callermsg(L, msg);
+}
+
+LJ_NORET LJ_NOINLINE static void cp_err_token(CPState *cp, CPToken tok)
+{
+  cp_errmsg(cp, cp-tok, LJ_ERR_XTOKEN, cp_tok2str(cp, tok));
+}
+
+LJ_NORET LJ_NOINLINE static void cp_err_badidx(CPState *cp, CType *ct)
+{
+  GCstr *s = lj_ctype_repr(cp-cts-L, ctype_typeid(cp-cts, ct), NULL);
+  cp_errmsg(cp, 0, LJ_ERR_FFI_BADIDX, strdata(s));
+}
+
+LJ_NORET LJ_NOINLINE static void cp_err(CPState *cp, ErrMsg em)
+{
+  cp_errmsg(cp, 0, em);
+}
+
+/* -- Main lexical scanner  */
+
+/* Parse number literal. Only handles int32_t/uint32_t right now. */
+static CPToken cp_number(CPState *cp)
+{
+  StrScanFmt fmt;
+  TValue o;
+  do { cp_save(cp, cp-c); } while (lj_char_isident(cp_get(cp)));
+  cp_save(cp, '\0');
+  fmt = lj_strscan_scan((const uint8_t *)cp-sb.buf, o, STRSCAN_OPT_C);
+  if (fmt == STRSCAN_INT) cp-val.id = CTID_INT32;
+  else if (fmt == STRSCAN_U32) cp-val.id = CTID_UINT32;
+  else if (!(cp-mode  CPARSE_MODE_SKIP))
+cp_errmsg(cp, CTOK_INTEGER, LJ_ERR_XNUMBER);
+  cp-val.u32 = (uint32_t)o.i;
+  return 

[28/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_asm.c
--
diff --git a/lib/luajit/src/lj_asm.c b/lib/luajit/src/lj_asm.c
new file mode 100644
index 000..804b4dc
--- /dev/null
+++ b/lib/luajit/src/lj_asm.c
@@ -0,0 +1,1920 @@
+/*
+** IR assembler (SSA IR - machine code).
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_asm_c
+#define LUA_CORE
+
+#include lj_obj.h
+
+#if LJ_HASJIT
+
+#include lj_gc.h
+#include lj_str.h
+#include lj_tab.h
+#include lj_frame.h
+#if LJ_HASFFI
+#include lj_ctype.h
+#endif
+#include lj_ir.h
+#include lj_jit.h
+#include lj_ircall.h
+#include lj_iropt.h
+#include lj_mcode.h
+#include lj_iropt.h
+#include lj_trace.h
+#include lj_snap.h
+#include lj_asm.h
+#include lj_dispatch.h
+#include lj_vm.h
+#include lj_target.h
+
+#ifdef LUA_USE_ASSERT
+#include stdio.h
+#endif
+
+/* -- Assembler state and common macros --- */
+
+/* Assembler state. */
+typedef struct ASMState {
+  RegCost cost[RID_MAX];  /* Reference and blended allocation cost for regs. */
+
+  MCode *mcp;  /* Current MCode pointer (grows down). */
+  MCode *mclim;/* Lower limit for MCode memory + red zone. */
+#ifdef LUA_USE_ASSERT
+  MCode *mcp_prev; /* Red zone overflow check. */
+#endif
+
+  IRIns *ir;   /* Copy of pointer to IR instructions/constants. */
+  jit_State *J;/* JIT compiler state. */
+
+#if LJ_TARGET_X86ORX64
+  x86ModRM mrm;/* Fused x86 address operand. */
+#endif
+
+  RegSet freeset;  /* Set of free registers. */
+  RegSet modset;   /* Set of registers modified inside the loop. */
+  RegSet weakset;  /* Set of weakly referenced registers. */
+  RegSet phiset;   /* Set of PHI registers. */
+
+  uint32_t flags;  /* Copy of JIT compiler flags. */
+  int loopinv; /* Loop branch inversion (0:no, 1:yes, 2:yes+CC_P). */
+
+  int32_t evenspill;   /* Next even spill slot. */
+  int32_t oddspill;/* Next odd spill slot (or 0). */
+
+  IRRef curins;/* Reference of current instruction. */
+  IRRef stopins;   /* Stop assembly before hitting this instruction. */
+  IRRef orignins;  /* Original T-nins. */
+
+  IRRef snapref;   /* Current snapshot is active after this reference. */
+  IRRef snaprename;/* Rename highwater mark for snapshot check. */
+  SnapNo snapno;   /* Current snapshot number. */
+  SnapNo loopsnapno;   /* Loop snapshot number. */
+
+  IRRef fuseref;   /* Fusion limit (loopref, 0 or FUSE_DISABLED). */
+  IRRef sectref;   /* Section base reference (loopref or 0). */
+  IRRef loopref;   /* Reference of LOOP instruction (or 0). */
+
+  BCReg topslot;   /* Number of slots for stack check (unless 0). */
+  int32_t gcsteps; /* Accumulated number of GC steps (per section). */
+
+  GCtrace *T;  /* Trace to assemble. */
+  GCtrace *parent; /* Parent trace (or NULL). */
+
+  MCode *mcbot;/* Bottom of reserved MCode. */
+  MCode *mctop;/* Top of generated MCode. */
+  MCode *mcloop;   /* Pointer to loop MCode (or NULL). */
+  MCode *invmcp;   /* Points to invertible loop branch (or NULL). */
+  MCode *flagmcp;  /* Pending opportunity to merge flag setting ins. */
+  MCode *realign;  /* Realign loop if not NULL. */
+
+#ifdef RID_NUM_KREF
+  int32_t krefk[RID_NUM_KREF];
+#endif
+  IRRef1 phireg[RID_MAX];  /* PHI register references. */
+  uint16_t parentmap[LJ_MAX_JSLOTS];  /* Parent instruction to RegSP map. */
+} ASMState;
+
+#define IR(ref)(as-ir[(ref)])
+
+#define ASMREF_TMP1REF_TRUE/* Temp. register. */
+#define ASMREF_TMP2REF_FALSE   /* Temp. register. */
+#define ASMREF_L   REF_NIL /* Stores register for L. */
+
+/* Check for variant to invariant references. */
+#define iscrossref(as, ref)((ref)  as-sectref)
+
+/* Inhibit memory op fusion from variant to invariant references. */
+#define FUSE_DISABLED  (~(IRRef)0)
+#define mayfuse(as, ref)   ((ref)  as-fuseref)
+#define neverfuse(as)  (as-fuseref == FUSE_DISABLED)
+#define canfuse(as, ir)(!neverfuse(as)  !irt_isphi((ir)-t))
+#define opisfusableload(o) \
+  ((o) == IR_ALOAD || (o) == IR_HLOAD || (o) == IR_ULOAD || \
+   (o) == IR_FLOAD || (o) == IR_XLOAD || (o) == IR_SLOAD || (o) == IR_VLOAD)
+
+/* Sparse limit checks using a red zone before the actual limit. */
+#define MCLIM_REDZONE  64
+
+static LJ_NORET LJ_NOINLINE void asm_mclimit(ASMState *as)
+{
+  lj_mcode_limiterr(as-J, (size_t)(as-mctop - as-mcp + 4*MCLIM_REDZONE));
+}
+
+static LJ_AINLINE void checkmclim(ASMState *as)
+{
+#ifdef LUA_USE_ASSERT
+  if (as-mcp + MCLIM_REDZONE  as-mcp_prev) {
+IRIns *ir = IR(as-curins+1);
+fprintf(stderr, RED ZONE OVERFLOW: %p IR %04d  %02d %04d %04d\n, 

[01/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
Repository: trafficserver
Updated Branches:
  refs/heads/6.0.x a0b75bc8e - 975c4c8ca


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/xedkbuild.bat
--
diff --git a/lib/luajit/src/xedkbuild.bat b/lib/luajit/src/xedkbuild.bat
new file mode 100644
index 000..240ec87
--- /dev/null
+++ b/lib/luajit/src/xedkbuild.bat
@@ -0,0 +1,92 @@
+@rem Script to build LuaJIT with the Xbox 360 SDK.
+@rem Donated to the public domain.
+@rem
+@rem Open a Visual Studio .NET Command Prompt (32 bit host compiler)
+@rem Then cd to this directory and run this script.
+
+@if not defined INCLUDE goto :FAIL
+@if not defined XEDK goto :FAIL
+
+@setlocal
+@rem  Host compiler 
+@set LJCOMPILE=cl /nologo /c /MD /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE
+@set LJLINK=link /nologo
+@set LJMT=mt /nologo
+@set DASMDIR=..\dynasm
+@set DASM=%DASMDIR%\dynasm.lua
+@set ALL_LIB=lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c 
lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c
+
+%LJCOMPILE% host\minilua.c
+@if errorlevel 1 goto :BAD
+%LJLINK% /out:minilua.exe minilua.obj
+@if errorlevel 1 goto :BAD
+if exist minilua.exe.manifest^
+  %LJMT% -manifest minilua.exe.manifest -outputresource:minilua.exe
+
+@rem Error out for 64 bit host compiler
+@minilua
+@if errorlevel 8 goto :FAIL
+
+@set DASMFLAGS=-D GPR64 -D FRAME32 -D PPE -D SQRT -D DUALNUM
+minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h vm_ppc.dasc
+@if errorlevel 1 goto :BAD
+
+%LJCOMPILE% /I . /I %DASMDIR% /D_XBOX_VER=200 
/DLUAJIT_TARGET=LUAJIT_ARCH_PPC  host\buildvm*.c
+@if errorlevel 1 goto :BAD
+%LJLINK% /out:buildvm.exe buildvm*.obj
+@if errorlevel 1 goto :BAD
+if exist buildvm.exe.manifest^
+  %LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe
+
+buildvm -m peobj -o lj_vm.obj
+@if errorlevel 1 goto :BAD
+buildvm -m bcdef -o lj_bcdef.h %ALL_LIB%
+@if errorlevel 1 goto :BAD
+buildvm -m ffdef -o lj_ffdef.h %ALL_LIB%
+@if errorlevel 1 goto :BAD
+buildvm -m libdef -o lj_libdef.h %ALL_LIB%
+@if errorlevel 1 goto :BAD
+buildvm -m recdef -o lj_recdef.h %ALL_LIB%
+@if errorlevel 1 goto :BAD
+buildvm -m vmdef -o jit\vmdef.lua %ALL_LIB%
+@if errorlevel 1 goto :BAD
+buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
+@if errorlevel 1 goto :BAD
+
+@rem  Cross compiler 
+@set LJCOMPILE=%XEDK%\bin\win32\cl /nologo /c /MT /O2 /W3 /GF /Gm- /GR- /GS- 
/Gy /openmp- /D_CRT_SECURE_NO_DEPRECATE /DNDEBUG /D_XBOX /D_LIB 
/DLUAJIT_USE_SYSMALLOC
+@set LJLIB=%XEDK%\bin\win32\lib /nologo
+@set INCLUDE=%XEDK%\include\xbox
+
+@if %1 neq debug goto :NODEBUG
+@shift
+@set LJCOMPILE=%LJCOMPILE% /Zi
+:NODEBUG
+@if %1==amalg goto :AMALG
+%LJCOMPILE% /DLUA_BUILD_AS_DLL lj_*.c lib_*.c
+@if errorlevel 1 goto :BAD
+%LJLIB% /OUT:luajit20.lib lj_*.obj lib_*.obj
+@if errorlevel 1 goto :BAD
+@goto :NOAMALG
+:AMALG
+%LJCOMPILE% /DLUA_BUILD_AS_DLL ljamalg.c
+@if errorlevel 1 goto :BAD
+%LJLIB% /OUT:luajit20.lib ljamalg.obj lj_vm.obj
+@if errorlevel 1 goto :BAD
+:NOAMALG
+
+@del *.obj *.manifest minilua.exe buildvm.exe
+@echo.
+@echo === Successfully built LuaJIT for Xbox 360 ===
+
+@goto :END
+:BAD
+@echo.
+@echo ***
+@echo *** Build FAILED -- Please check the error messages ***
+@echo ***
+@goto :END
+:FAIL
+@echo To run this script you must open a Visual Studio .NET Command Prompt
+@echo (32 bit host compiler). The Xbox 360 SDK must be installed, too.
+:END



[31/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lib_base.c
--
diff --git a/lib/luajit/src/lib_base.c b/lib/luajit/src/lib_base.c
new file mode 100644
index 000..17b9525
--- /dev/null
+++ b/lib/luajit/src/lib_base.c
@@ -0,0 +1,683 @@
+/*
+** Base and coroutine library.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+**
+** Major portions taken verbatim or adapted from the Lua interpreter.
+** Copyright (C) 1994-2011 Lua.org, PUC-Rio. See Copyright Notice in lua.h
+*/
+
+#include stdio.h
+
+#define lib_base_c
+#define LUA_LIB
+
+#include lua.h
+#include lauxlib.h
+#include lualib.h
+
+#include lj_obj.h
+#include lj_gc.h
+#include lj_err.h
+#include lj_debug.h
+#include lj_str.h
+#include lj_tab.h
+#include lj_meta.h
+#include lj_state.h
+#if LJ_HASFFI
+#include lj_ctype.h
+#include lj_cconv.h
+#endif
+#include lj_bc.h
+#include lj_ff.h
+#include lj_dispatch.h
+#include lj_char.h
+#include lj_strscan.h
+#include lj_lib.h
+
+/* -- Base library: checks  */
+
+#define LJLIB_MODULE_base
+
+LJLIB_ASM(assert)  LJLIB_REC(.)
+{
+  GCstr *s;
+  lj_lib_checkany(L, 1);
+  s = lj_lib_optstr(L, 2);
+  if (s)
+lj_err_callermsg(L, strdata(s));
+  else
+lj_err_caller(L, LJ_ERR_ASSERT);
+  return FFH_UNREACHABLE;
+}
+
+/* ORDER LJ_T */
+LJLIB_PUSH(nil)
+LJLIB_PUSH(boolean)
+LJLIB_PUSH(top-1)  /* boolean */
+LJLIB_PUSH(userdata)
+LJLIB_PUSH(string)
+LJLIB_PUSH(upval)
+LJLIB_PUSH(thread)
+LJLIB_PUSH(proto)
+LJLIB_PUSH(function)
+LJLIB_PUSH(trace)
+LJLIB_PUSH(cdata)
+LJLIB_PUSH(table)
+LJLIB_PUSH(top-9)  /* userdata */
+LJLIB_PUSH(number)
+LJLIB_ASM_(type)   LJLIB_REC(.)
+/* Recycle the lj_lib_checkany(L, 1) from assert. */
+
+/* -- Base library: iterators - */
+
+/* This solves a circular dependency problem -- change FF_next_N as needed. */
+LJ_STATIC_ASSERT((int)FF_next == FF_next_N);
+
+LJLIB_ASM(next)
+{
+  lj_lib_checktab(L, 1);
+  return FFH_UNREACHABLE;
+}
+
+#if LJ_52 || LJ_HASFFI
+static int ffh_pairs(lua_State *L, MMS mm)
+{
+  TValue *o = lj_lib_checkany(L, 1);
+  cTValue *mo = lj_meta_lookup(L, o, mm);
+  if ((LJ_52 || tviscdata(o))  !tvisnil(mo)) {
+L-top = o+1;  /* Only keep one argument. */
+copyTV(L, L-base-1, mo);  /* Replace callable. */
+return FFH_TAILCALL;
+  } else {
+if (!tvistab(o)) lj_err_argt(L, 1, LUA_TTABLE);
+setfuncV(L, o-1, funcV(lj_lib_upvalue(L, 1)));
+if (mm == MM_pairs) setnilV(o+1); else setintV(o+1, 0);
+return FFH_RES(3);
+  }
+}
+#else
+#define ffh_pairs(L, mm)   (lj_lib_checktab(L, 1), FFH_UNREACHABLE)
+#endif
+
+LJLIB_PUSH(lastcl)
+LJLIB_ASM(pairs)
+{
+  return ffh_pairs(L, MM_pairs);
+}
+
+LJLIB_NOREGUV LJLIB_ASM(ipairs_aux)LJLIB_REC(.)
+{
+  lj_lib_checktab(L, 1);
+  lj_lib_checkint(L, 2);
+  return FFH_UNREACHABLE;
+}
+
+LJLIB_PUSH(lastcl)
+LJLIB_ASM(ipairs)  LJLIB_REC(.)
+{
+  return ffh_pairs(L, MM_ipairs);
+}
+
+/* -- Base library: getters and setters --- */
+
+LJLIB_ASM_(getmetatable)   LJLIB_REC(.)
+/* Recycle the lj_lib_checkany(L, 1) from assert. */
+
+LJLIB_ASM(setmetatable)LJLIB_REC(.)
+{
+  GCtab *t = lj_lib_checktab(L, 1);
+  GCtab *mt = lj_lib_checktabornil(L, 2);
+  if (!tvisnil(lj_meta_lookup(L, L-base, MM_metatable)))
+lj_err_caller(L, LJ_ERR_PROTMT);
+  setgcref(t-metatable, obj2gco(mt));
+  if (mt) { lj_gc_objbarriert(L, t, mt); }
+  settabV(L, L-base-1, t);
+  return FFH_RES(1);
+}
+
+LJLIB_CF(getfenv)
+{
+  GCfunc *fn;
+  cTValue *o = L-base;
+  if (!(o  L-top  tvisfunc(o))) {
+int level = lj_lib_optint(L, 1, 1);
+o = lj_debug_frame(L, level, level);
+if (o == NULL)
+  lj_err_arg(L, 1, LJ_ERR_INVLVL);
+  }
+  fn = gcval(o)-fn;
+  settabV(L, L-top++, isluafunc(fn) ? tabref(fn-l.env) : tabref(L-env));
+  return 1;
+}
+
+LJLIB_CF(setfenv)
+{
+  GCfunc *fn;
+  GCtab *t = lj_lib_checktab(L, 2);
+  cTValue *o = L-base;
+  if (!(o  L-top  tvisfunc(o))) {
+int level = lj_lib_checkint(L, 1);
+if (level == 0) {
+  /* NOBARRIER: A thread (i.e. L) is never black. */
+  setgcref(L-env, obj2gco(t));
+  return 0;
+}
+o = lj_debug_frame(L, level, level);
+if (o == NULL)
+  lj_err_arg(L, 1, LJ_ERR_INVLVL);
+  }
+  fn = gcval(o)-fn;
+  if (!isluafunc(fn))
+lj_err_caller(L, LJ_ERR_SETFENV);
+  setgcref(fn-l.env, obj2gco(t));
+  lj_gc_objbarrier(L, obj2gco(fn), t);
+  setfuncV(L, L-top++, fn);
+  return 1;
+}
+
+LJLIB_ASM(rawget)  LJLIB_REC(.)
+{
+  lj_lib_checktab(L, 1);
+  lj_lib_checkany(L, 2);
+  return FFH_UNREACHABLE;
+}
+
+LJLIB_CF(rawset)   LJLIB_REC(.)
+{
+  lj_lib_checktab(L, 1);
+  lj_lib_checkany(L, 2);
+  L-top = 1+lj_lib_checkany(L, 3);
+  lua_rawset(L, 1);
+  return 1;
+}
+
+LJLIB_CF(rawequal) LJLIB_REC(.)
+{
+  cTValue *o1 = 

trafficserver git commit: TS-3800: Fix bug in hostdb ui related to missing query

2015-07-28 Thread briang
Repository: trafficserver
Updated Branches:
  refs/heads/master 0cd1ef3ed - fc133036c


TS-3800: Fix bug in hostdb ui related to missing query


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/fc133036
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/fc133036
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/fc133036

Branch: refs/heads/master
Commit: fc133036c2e4a6cd8d95c9432cd62e703a3303b1
Parents: 0cd1ef3
Author: Brian Geffon bri...@apache.org
Authored: Tue Jul 28 20:20:57 2015 -0700
Committer: Brian Geffon bri...@apache.org
Committed: Tue Jul 28 20:20:57 2015 -0700

--
 iocore/hostdb/HostDB.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/fc133036/iocore/hostdb/HostDB.cc
--
diff --git a/iocore/hostdb/HostDB.cc b/iocore/hostdb/HostDB.cc
index 0d36fd6..984d137 100644
--- a/iocore/hostdb/HostDB.cc
+++ b/iocore/hostdb/HostDB.cc
@@ -2672,7 +2672,7 @@ register_ShowHostDB(Continuation *c, HTTPHdr *h)
   } else if (STR_LEN_EQ_PREFIX(path, path_len, showall)) {
 int query_len = 0;
 const char *query = h-url_get()-query_get(query_len);
-if (strstr(query, json)) {
+if (query  query_len  strstr(query, json)) {
   s-output_json = true;
 }
 Debug(hostdb, dumping all hostdb records);



trafficserver git commit: [TS-3802]: fix double free of MIOBuffer in SSLNetVConnection during SPDY inactivity.

2015-07-28 Thread sudheerv
Repository: trafficserver
Updated Branches:
  refs/heads/master 0e703e1e3 - ec7479243


[TS-3802]: fix double free of MIOBuffer in SSLNetVConnection during SPDY 
inactivity.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/ec747924
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/ec747924
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/ec747924

Branch: refs/heads/master
Commit: ec7479243bead60a123e64dbef8b9d53fdade095
Parents: 0e703e1
Author: Sudheer Vinukonda sudhe...@yahoo-inc.com
Authored: Tue Jul 28 17:59:10 2015 +
Committer: Sudheer Vinukonda sudhe...@yahoo-inc.com
Committed: Tue Jul 28 17:59:10 2015 +

--
 proxy/spdy/SpdyClientSession.cc | 8 
 1 file changed, 8 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ec747924/proxy/spdy/SpdyClientSession.cc
--
diff --git a/proxy/spdy/SpdyClientSession.cc b/proxy/spdy/SpdyClientSession.cc
index d9db07f..60c8e20 100644
--- a/proxy/spdy/SpdyClientSession.cc
+++ b/proxy/spdy/SpdyClientSession.cc
@@ -482,6 +482,14 @@ spdy_process_fetch_body(TSEvent event, SpdyClientSession 
*sm, TSFetchSM fetch_sm
 void
 SpdyClientSession::do_io_close(int alertno)
 {
+  if (vc) {
+// vc is released (null'ed) within ProxyClientSession when handling
+// TS_HTTP_SSN_CLOSE_HOOK, so, reset ssl_iobuf to prevent double free
+SSLNetVConnection *ssl_vc = dynamic_castSSLNetVConnection *(vc);
+if (ssl_vc) {
+  ssl_vc-set_ssl_iobuf(NULL);
+}
+  }
   // The object will be cleaned up from within 
ProxyClientSession::handle_api_return
   // This way, the object will still be alive for any SSN_CLOSE hooks
   do_api_callout(TS_HTTP_SSN_CLOSE_HOOK);



[03/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/vm_ppcspe.dasc
--
diff --git a/lib/luajit/src/vm_ppcspe.dasc b/lib/luajit/src/vm_ppcspe.dasc
new file mode 100644
index 000..53ea2d9
--- /dev/null
+++ b/lib/luajit/src/vm_ppcspe.dasc
@@ -0,0 +1,3691 @@
+|// Low-level VM code for PowerPC/e500 CPUs.
+|// Bytecode interpreter, fast functions and helper functions.
+|// Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+|
+|.arch ppc
+|.section code_op, code_sub
+|
+|.actionlist build_actionlist
+|.globals GLOB_
+|.globalnames globnames
+|.externnames extnames
+|
+|// Note: The ragged indentation of the instructions is intentional.
+|//   The starting columns indicate data dependencies.
+|
+|//---
+|
+|// Fixed register assignments for the interpreter.
+|// Don't use: r1 = sp, r2 and r13 = reserved and/or small data area ptr
+|
+|// The following must be C callee-save (but BASE is often refetched).
+|.define BASE, r14 // Base of current Lua stack frame.
+|.define KBASE,r15 // Constants of current Lua function.
+|.define PC,   r16 // Next PC.
+|.define DISPATCH, r17 // Opcode dispatch table.
+|.define LREG, r18 // Register holding lua_State (also in SAVE_L).
+|.define MULTRES,  r19 // Size of multi-result: (nresults+1)*8.
+|
+|// Constants for vectorized type-comparisons (hi+low GPR). C callee-save.
+|.define TISNUM,   r22
+|.define TISSTR,   r23
+|.define TISTAB,   r24
+|.define TISFUNC,  r25
+|.define TISNIL,   r26
+|.define TOBIT,r27
+|.define ZERO, TOBIT   // Zero in lo word.
+|
+|// The following temporaries are not saved across C calls, except for RA.
+|.define RA,   r20 // Callee-save.
+|.define RB,   r10
+|.define RC,   r11
+|.define RD,   r12
+|.define INS,  r7  // Overlaps CARG5.
+|
+|.define TMP0, r0
+|.define TMP1, r8
+|.define TMP2, r9
+|.define TMP3, r6  // Overlaps CARG4.
+|
+|// Saved temporaries.
+|.define SAVE0,r21
+|
+|// Calling conventions.
+|.define CARG1,r3
+|.define CARG2,r4
+|.define CARG3,r5
+|.define CARG4,r6  // Overlaps TMP3.
+|.define CARG5,r7  // Overlaps INS.
+|
+|.define CRET1,r3
+|.define CRET2,r4
+|
+|// Stack layout while in interpreter. Must match with lj_frame.h.
+|.define SAVE_LR,  188(sp)
+|.define CFRAME_SPACE, 184 // Delta for sp.
+|// Back chain for sp: 184(sp) -- sp entering interpreter
+|.define SAVE_r31, 176(sp) // 64 bit register saves.
+|.define SAVE_r30, 168(sp)
+|.define SAVE_r29, 160(sp)
+|.define SAVE_r28, 152(sp)
+|.define SAVE_r27, 144(sp)
+|.define SAVE_r26, 136(sp)
+|.define SAVE_r25, 128(sp)
+|.define SAVE_r24, 120(sp)
+|.define SAVE_r23, 112(sp)
+|.define SAVE_r22, 104(sp)
+|.define SAVE_r21, 96(sp)
+|.define SAVE_r20, 88(sp)
+|.define SAVE_r19, 80(sp)
+|.define SAVE_r18, 72(sp)
+|.define SAVE_r17, 64(sp)
+|.define SAVE_r16, 56(sp)
+|.define SAVE_r15, 48(sp)
+|.define SAVE_r14, 40(sp)
+|.define SAVE_CR,  36(sp)
+|.define UNUSED1,  32(sp)
+|.define SAVE_ERRF,28(sp)  // 32 bit C frame info.
+|.define SAVE_NRES,24(sp)
+|.define SAVE_CFRAME,  20(sp)
+|.define SAVE_L,   16(sp)
+|.define SAVE_PC,  12(sp)
+|.define SAVE_MULTRES, 8(sp)
+|// Next frame lr: 4(sp)
+|// Back chain for sp: 0(sp)   -- sp while in interpreter
+|
+|.macro save_, reg; evstdd reg, SAVE_..reg; .endmacro
+|.macro rest_, reg; evldd reg, SAVE_..reg; .endmacro
+|
+|.macro saveregs
+|  stwu sp, -CFRAME_SPACE(sp)
+|  save_ r14; save_ r15; save_ r16; save_ r17; save_ r18; save_ r19
+|  mflr r0; mfcr r12
+|  save_ r20; save_ r21; save_ r22; save_ r23; save_ r24; save_ r25
+|  stw  r0, SAVE_LR; stw r12, SAVE_CR
+|  save_ r26; save_ r27; save_ r28; save_ r29; save_ r30; save_ r31
+|.endmacro
+|
+|.macro restoreregs
+|  lwz r0, SAVE_LR; lwz r12, SAVE_CR
+|  rest_ r14; rest_ r15; rest_ r16; rest_ r17; rest_ r18; rest_ r19
+|  mtlr r0; mtcrf 0x38, r12
+|  rest_ r20; rest_ r21; rest_ r22; rest_ r23; rest_ r24; rest_ r25
+|  rest_ r26; rest_ r27; rest_ r28; rest_ r29; rest_ r30; rest_ r31
+|  addi sp, sp, CFRAME_SPACE
+|.endmacro
+|
+|// Type definitions. Some of these are only used for documentation.
+|.type L,  lua_State,  LREG
+|.type GL, global_State
+|.type TVALUE, TValue
+|.type GCOBJ,  GCobj
+|.type STR,GCstr
+|.type TAB,GCtab
+|.type LFUNC,  GCfuncL
+|.type CFUNC,  GCfuncC
+|.type PROTO,  GCproto
+|.type UPVAL,  GCupval
+|.type NODE,   Node
+|.type NARGS8, 

[39/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/doc/running.html
--
diff --git a/lib/luajit/doc/running.html b/lib/luajit/doc/running.html
new file mode 100644
index 000..c6e1c29
--- /dev/null
+++ b/lib/luajit/doc/running.html
@@ -0,0 +1,306 @@
+!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN 
http://www.w3.org/TR/html4/strict.dtd;
+html
+head
+titleRunning LuaJIT/title
+meta http-equiv=Content-Type content=text/html; charset=iso-8859-1
+meta name=Author content=Mike Pall
+meta name=Copyright content=Copyright (C) 2005-2015, Mike Pall
+meta name=Language content=en
+link rel=stylesheet type=text/css href=bluequad.css media=screen
+link rel=stylesheet type=text/css href=bluequad-print.css media=print
+style type=text/css
+table.opt {
+  line-height: 1.2;
+}
+tr.opthead td {
+  font-weight: bold;
+}
+td.flag_name {
+  width: 4em;
+}
+td.flag_level {
+  width: 2em;
+  text-align: center;
+}
+td.param_name {
+  width: 6em;
+}
+td.param_default {
+  width: 4em;
+  text-align: right;
+}
+/style
+/head
+body
+div id=site
+a href=http://luajit.org;spanLuaspan id=logoJIT/span/span/a
+/div
+div id=head
+h1Running LuaJIT/h1
+/div
+div id=nav
+ulli
+a href=luajit.htmlLuaJIT/a
+ulli
+a href=http://luajit.org/download.html;Download span 
class=extraquo;/span/a
+/lili
+a href=install.htmlInstallation/a
+/lili
+a class=current href=running.htmlRunning/a
+/li/ul
+/lili
+a href=extensions.htmlExtensions/a
+ulli
+a href=ext_ffi.htmlFFI Library/a
+ulli
+a href=ext_ffi_tutorial.htmlFFI Tutorial/a
+/lili
+a href=ext_ffi_api.htmlffi.* API/a
+/lili
+a href=ext_ffi_semantics.htmlFFI Semantics/a
+/li/ul
+/lili
+a href=ext_jit.htmljit.* Library/a
+/lili
+a href=ext_c_api.htmlLua/C API/a
+/li/ul
+/lili
+a href=status.htmlStatus/a
+ulli
+a href=changes.htmlChanges/a
+/li/ul
+/lili
+a href=faq.htmlFAQ/a
+/lili
+a href=http://luajit.org/performance.html;Performance span 
class=extraquo;/span/a
+/lili
+a href=http://wiki.luajit.org/;Wiki span class=extraquo;/span/a
+/lili
+a href=http://luajit.org/list.html;Mailing List span 
class=extraquo;/span/a
+/li/ul
+/div
+div id=main
+p
+LuaJIT has only a single stand-alone executable, called ttluajit/tt on
+POSIX systems or ttluajit.exe/tt on Windows. It can be used to run simple
+Lua statements or whole Lua applications from the command line. It has an
+interactive mode, too.
+/p
+
+h2 id=optionsCommand Line Options/h2
+p
+The ttluajit/tt stand-alone executable is just a slightly modified
+version of the regular ttlua/tt stand-alone executable.
+It supports the same basic options, too. ttluajitnbsp;-h/tt
+prints a short list of the available options. Please have a look at the
+a href=http://www.lua.org/manual/5.1/manual.html#6;span 
class=extraquo;/spannbsp;Lua manual/a
+for details.
+/p
+p
+LuaJIT has some additional options:
+/p
+
+h3 id=opt_btt-b[options] input output/tt/h3
+p
+This option saves or lists bytecode. The following additional options
+are accepted:
+/p
+ul
+litt-l/tt mdash; Only list bytecode./li
+litt-s/tt mdash; Strip debug info (this is the default)./li
+litt-g/tt mdash; Keep debug info./li
+litt-n name/tt mdash; Set module name (default: auto-detect from input 
name)/li
+litt-t type/tt mdash; Set output file type (default: auto-detect from 
output name)./li
+litt-a arch/tt mdash; Override architecture for object files (default: 
native)./li
+litt-o os/tt mdash; Override OS for object files (default: native)./li
+litt-e chunk/tt mdash; Use chunk string as input./li
+litt-/tt (a single minus sign) mdash; Use stdin as input and/or stdout 
as output./li
+/ul
+p
+The output file type is auto-detected from the extension of the output
+file name:
+/p
+ul
+littc/tt mdash; C source file, exported bytecode data./li
+litth/tt mdash; C header file, static bytecode data./li
+littobj/tt or tto/tt mdash; Object file, exported bytecode data
+(OS- and architecture-specific)./li
+littraw/tt or any other extension mdash; Raw bytecode file (portable).
+/ul
+p
+Notes:
+/p
+ul
+liSee also a href=extensions.html#string_dumpstring.dump()/a
+for information on bytecode portability and compatibility./li
+liA file in raw bytecode format is auto-detected and can be loaded like
+any Lua source file. E.g. directly from the command line or with
+ttloadfile()/tt, ttdofile()/tt etc./li
+liTo statically embed the bytecode of a module in your application,
+generate an object file and just link it with your application./li
+liOn most ELF-based systems (e.g. Linux) you need to explicitly export the
+global symbols when linking your application, e.g. with: tt-Wl,-E/tt/li
+littrequire()/tt tries to load embedded bytecode data from exported
+symbols (in tt*.exe/tt or ttlua51.dll/tt on Windows) and from
+shared libraries in ttpackage.cpath/tt./li
+/ul
+p
+Typical usage examples:
+/p
+pre class=code
+luajit -b test.lua test.out # Save bytecode to test.out
+luajit -bg test.lua test.out

[10/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_record.c
--
diff --git a/lib/luajit/src/lj_record.c b/lib/luajit/src/lj_record.c
new file mode 100644
index 000..843108c
--- /dev/null
+++ b/lib/luajit/src/lj_record.c
@@ -0,0 +1,2252 @@
+/*
+** Trace recorder (bytecode - SSA IR).
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_record_c
+#define LUA_CORE
+
+#include lj_obj.h
+
+#if LJ_HASJIT
+
+#include lj_err.h
+#include lj_str.h
+#include lj_tab.h
+#include lj_meta.h
+#include lj_frame.h
+#if LJ_HASFFI
+#include lj_ctype.h
+#endif
+#include lj_bc.h
+#include lj_ff.h
+#include lj_ir.h
+#include lj_jit.h
+#include lj_ircall.h
+#include lj_iropt.h
+#include lj_trace.h
+#include lj_record.h
+#include lj_ffrecord.h
+#include lj_snap.h
+#include lj_dispatch.h
+#include lj_vm.h
+
+/* Some local macros to save typing. Undef'd at the end. */
+#define IR(ref)(J-cur.ir[(ref)])
+
+/* Pass IR on to next optimization in chain (FOLD). */
+#define emitir(ot, a, b)   (lj_ir_set(J, (ot), (a), (b)), lj_opt_fold(J))
+
+/* Emit raw IR without passing through optimizations. */
+#define emitir_raw(ot, a, b)   (lj_ir_set(J, (ot), (a), (b)), lj_ir_emit(J))
+
+/* -- Sanity checks --- */
+
+#ifdef LUA_USE_ASSERT
+/* Sanity check the whole IR -- slw. */
+static void rec_check_ir(jit_State *J)
+{
+  IRRef i, nins = J-cur.nins, nk = J-cur.nk;
+  lua_assert(nk = REF_BIAS  nins = REF_BIAS  nins  65536);
+  for (i = nins-1; i = nk; i--) {
+IRIns *ir = IR(i);
+uint32_t mode = lj_ir_mode[ir-o];
+IRRef op1 = ir-op1;
+IRRef op2 = ir-op2;
+switch (irm_op1(mode)) {
+case IRMnone: lua_assert(op1 == 0); break;
+case IRMref: lua_assert(op1 = nk);
+  lua_assert(i = REF_BIAS ? op1  i : op1  i); break;
+case IRMlit: break;
+case IRMcst: lua_assert(i  REF_BIAS); continue;
+}
+switch (irm_op2(mode)) {
+case IRMnone: lua_assert(op2 == 0); break;
+case IRMref: lua_assert(op2 = nk);
+  lua_assert(i = REF_BIAS ? op2  i : op2  i); break;
+case IRMlit: break;
+case IRMcst: lua_assert(0); break;
+}
+if (ir-prev) {
+  lua_assert(ir-prev = nk);
+  lua_assert(i = REF_BIAS ? ir-prev  i : ir-prev  i);
+  lua_assert(ir-o == IR_NOP || IR(ir-prev)-o == ir-o);
+}
+  }
+}
+
+/* Compare stack slots and frames of the recorder and the VM. */
+static void rec_check_slots(jit_State *J)
+{
+  BCReg s, nslots = J-baseslot + J-maxslot;
+  int32_t depth = 0;
+  cTValue *base = J-L-base - J-baseslot;
+  lua_assert(J-baseslot = 1  J-baseslot  LJ_MAX_JSLOTS);
+  lua_assert(J-baseslot == 1 || (J-slot[J-baseslot-1]  TREF_FRAME));
+  lua_assert(nslots  LJ_MAX_JSLOTS);
+  for (s = 0; s  nslots; s++) {
+TRef tr = J-slot[s];
+if (tr) {
+  cTValue *tv = base[s];
+  IRRef ref = tref_ref(tr);
+  IRIns *ir;
+  lua_assert(ref = J-cur.nk  ref  J-cur.nins);
+  ir = IR(ref);
+  lua_assert(irt_t(ir-t) == tref_t(tr));
+  if (s == 0) {
+   lua_assert(tref_isfunc(tr));
+  } else if ((tr  TREF_FRAME)) {
+   GCfunc *fn = gco2func(frame_gc(tv));
+   BCReg delta = (BCReg)(tv - frame_prev(tv));
+   lua_assert(tref_isfunc(tr));
+   if (tref_isk(tr)) lua_assert(fn == ir_kfunc(ir));
+   lua_assert(s  delta ? (J-slot[s-delta]  TREF_FRAME) : (s == delta));
+   depth++;
+  } else if ((tr  TREF_CONT)) {
+   lua_assert(ir_kptr(ir) == gcrefp(tv-gcr, void));
+   lua_assert((J-slot[s+1]  TREF_FRAME));
+   depth++;
+  } else {
+   if (tvisnumber(tv))
+ lua_assert(tref_isnumber(tr));  /* Could be IRT_INT etc., too. */
+   else
+ lua_assert(itype2irt(tv) == tref_type(tr));
+   if (tref_isk(tr)) {  /* Compare constants. */
+ TValue tvk;
+ lj_ir_kvalue(J-L, tvk, ir);
+ if (!(tvisnum(tvk)  tvisnan(tvk)))
+   lua_assert(lj_obj_equal(tv, tvk));
+ else
+   lua_assert(tvisnum(tv)  tvisnan(tv));
+   }
+  }
+}
+  }
+  lua_assert(J-framedepth == depth);
+}
+#endif
+
+/* -- Type handling and specialization  */
+
+/* Note: these functions return tagged references (TRef). */
+
+/* Specialize a slot to a specific type. Note: slot can be negative! */
+static TRef sloadt(jit_State *J, int32_t slot, IRType t, int mode)
+{
+  /* Caller may set IRT_GUARD in t. */
+  TRef ref = emitir_raw(IRT(IR_SLOAD, t), (int32_t)J-baseslot+slot, mode);
+  J-base[slot] = ref;
+  return ref;
+}
+
+/* Specialize a slot to the runtime type. Note: slot can be negative! */
+static TRef sload(jit_State *J, int32_t slot)
+{
+  IRType t = itype2irt(J-L-base[slot]);
+  TRef ref = emitir_raw(IRTG(IR_SLOAD, t), (int32_t)J-baseslot+slot,
+   IRSLOAD_TYPECHECK);
+  if (irtype_ispri(t)) ref = TREF_PRI(t);  /* 

[47/62] [abbrv] trafficserver git commit: TS-3774 clang-format

2015-07-28 Thread zwoop
TS-3774 clang-format


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/5ae63a10
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/5ae63a10
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/5ae63a10

Branch: refs/heads/6.0.x
Commit: 5ae63a109255adccadddf0e726f20d657b2ac0c0
Parents: b51a2b9
Author: Leif Hedstrom zw...@apache.org
Authored: Fri Jul 24 00:07:50 2015 +0200
Committer: Leif Hedstrom zw...@apache.org
Committed: Fri Jul 24 00:07:50 2015 +0200

--
 iocore/hostdb/HostDB.cc | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5ae63a10/iocore/hostdb/HostDB.cc
--
diff --git a/iocore/hostdb/HostDB.cc b/iocore/hostdb/HostDB.cc
index 0df0cd8..9d5ece3 100644
--- a/iocore/hostdb/HostDB.cc
+++ b/iocore/hostdb/HostDB.cc
@@ -2747,9 +2747,9 @@ ParseHostLine(RefCountedHostsFileMap *map, char *l)
   ts::ConstBuffer name(elts[i], strlen(elts[i]));
   // If we don't have an entry already (host files only support single IPs 
for a given name)
   if (map-hosts_file_map.find(name) == map-hosts_file_map.end()) {
-   HostsFileMap::mapped_type item = map-hosts_file_map[name];
-   item.round_robin = false;
-   item.round_robin_elt = false;
+HostsFileMap::mapped_type item = map-hosts_file_map[name];
+item.round_robin = false;
+item.round_robin_elt = false;
 item.reverse_dns = false;
 item.is_srv = false;
 ats_ip_set(item.ip(), ip);
@@ -2820,7 +2820,8 @@ ParseHostFile(char const *path)
   // 2) The HostDB clients (essentially the HttpSM) copies the HostDB record 
or data over to local storage during event processing,
   //which means the data only has to be valid until the event chaining 
rolls back up to the event processor. This will certainly
   //be less than 1s
-  // The combination of these means keeping one file back in the rotation is 
sufficient to keep any outstanding references valid until
+  // The combination of these means keeping one file back in the rotation is 
sufficient to keep any outstanding references valid
+  // until
   // dropped.
   hostDB.prev_hosts_file_ptr = hostDB.hosts_file_ptr;
   hostDB.hosts_file_ptr = parsed_hosts_file_ptr;



[33/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/jit/bc.lua
--
diff --git a/lib/luajit/src/jit/bc.lua b/lib/luajit/src/jit/bc.lua
new file mode 100644
index 000..46a4089
--- /dev/null
+++ b/lib/luajit/src/jit/bc.lua
@@ -0,0 +1,191 @@
+
+-- LuaJIT bytecode listing module.
+--
+-- Copyright (C) 2005-2015 Mike Pall. All rights reserved.
+-- Released under the MIT license. See Copyright Notice in luajit.h
+
+--
+-- This module lists the bytecode of a Lua function. If it's loaded by -jbc
+-- it hooks into the parser and lists all functions of a chunk as they
+-- are parsed.
+--
+-- Example usage:
+--
+--   luajit -jbc -e 'local x=0; for i=1,1e6 do x=x+i end; print(x)'
+--   luajit -jbc=- foo.lua
+--   luajit -jbc=foo.list foo.lua
+--
+-- Default output is to stderr. To redirect the output to a file, pass a
+-- filename as an argument (use '-' for stdout) or set the environment
+-- variable LUAJIT_LISTFILE. The file is overwritten every time the module
+-- is started.
+--
+-- This module can also be used programmatically:
+--
+--   local bc = require(jit.bc)
+--
+--   local function foo() print(hello) end
+--
+--   bc.dump(foo)   -- -- BYTECODE -- [...]
+--   print(bc.line(foo, 2)) -- 0002KSTR 1   1  ; hello
+--
+--   local out = {
+-- -- Do something with each line:
+-- write = function(t, ...) io.write(...) end,
+-- close = function(t) end,
+-- flush = function(t) end,
+--   }
+--   bc.dump(foo, out)
+--
+--
+
+-- Cache some library functions and objects.
+local jit = require(jit)
+assert(jit.version_num == 20004, LuaJIT core/library version mismatch)
+local jutil = require(jit.util)
+local vmdef = require(jit.vmdef)
+local bit = require(bit)
+local sub, gsub, format = string.sub, string.gsub, string.format
+local byte, band, shr = string.byte, bit.band, bit.rshift
+local funcinfo, funcbc, funck = jutil.funcinfo, jutil.funcbc, jutil.funck
+local funcuvname = jutil.funcuvname
+local bcnames = vmdef.bcnames
+local stdout, stderr = io.stdout, io.stderr
+
+--
+
+local function ctlsub(c)
+  if c == \n then return \\n
+  elseif c == \r then return \\r
+  elseif c == \t then return \\t
+  else return format(\\%03d, byte(c))
+  end
+end
+
+-- Return one bytecode line.
+local function bcline(func, pc, prefix)
+  local ins, m = funcbc(func, pc)
+  if not ins then return end
+  local ma, mb, mc = band(m, 7), band(m, 15*8), band(m, 15*128)
+  local a = band(shr(ins, 8), 0xff)
+  local oidx = 6*band(ins, 0xff)
+  local op = sub(bcnames, oidx+1, oidx+6)
+  local s = format(%04d %s %-6s %3s ,
+pc, prefix or   , op, ma == 0 and  or a)
+  local d = shr(ins, 16)
+  if mc == 13*128 then -- BCMjump
+return format(%s= %04d\n, s, pc+d-0x7fff)
+  end
+  if mb ~= 0 then
+d = band(d, 0xff)
+  elseif mc == 0 then
+return s..\n
+  end
+  local kc
+  if mc == 10*128 then -- BCMstr
+kc = funck(func, -d-1)
+kc = format(#kc  40 and '%.40s~' or '%s', gsub(kc, %c, ctlsub))
+  elseif mc == 9*128 then -- BCMnum
+kc = funck(func, d)
+if op == TSETM  then kc = kc - 2^52 end
+  elseif mc == 12*128 then -- BCMfunc
+local fi = funcinfo(funck(func, -d-1))
+if fi.ffid then
+  kc = vmdef.ffnames[fi.ffid]
+else
+  kc = fi.loc
+end
+  elseif mc == 5*128 then -- BCMuv
+kc = funcuvname(func, d)
+  end
+  if ma == 5 then -- BCMuv
+local ka = funcuvname(func, a)
+if kc then kc = ka.. ; ..kc else kc = ka end
+  end
+  if mb ~= 0 then
+local b = shr(ins, 24)
+if kc then return format(%s%3d %3d  ; %s\n, s, b, d, kc) end
+return format(%s%3d %3d\n, s, b, d)
+  end
+  if kc then return format(%s%3d  ; %s\n, s, d, kc) end
+  if mc == 7*128 and d  32767 then d = d - 65536 end -- BCMlits
+  return format(%s%3d\n, s, d)
+end
+
+-- Collect branch targets of a function.
+local function bctargets(func)
+  local target = {}
+  for pc=1,10 do
+local ins, m = funcbc(func, pc)
+if not ins then break end
+if band(m, 15*128) == 13*128 then target[pc+shr(ins, 16)-0x7fff] = true end
+  end
+  return target
+end
+
+-- Dump bytecode instructions of a function.
+local function bcdump(func, out, all)
+  if not out then out = stdout end
+  local fi = funcinfo(func)
+  if all and fi.children then
+for n=-1,-10,-1 do
+  local k = funck(func, n)
+  if not k then break end
+  if type(k) == proto then bcdump(k, out, true) end
+end
+  end
+  out:write(format(-- BYTECODE -- %s-%d\n, fi.loc, fi.lastlinedefined))
+  local target = bctargets(func)
+  for pc=1,10 do
+local s = bcline(func, pc, target[pc] and =)
+   

[36/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/dynasm/dynasm.lua
--
diff --git a/lib/luajit/dynasm/dynasm.lua b/lib/luajit/dynasm/dynasm.lua
new file mode 100644
index 000..fffda75
--- /dev/null
+++ b/lib/luajit/dynasm/dynasm.lua
@@ -0,0 +1,1094 @@
+--
+-- DynASM. A dynamic assembler for code generation engines.
+-- Originally designed and implemented for LuaJIT.
+--
+-- Copyright (C) 2005-2015 Mike Pall. All rights reserved.
+-- See below for full copyright notice.
+--
+
+-- Application information.
+local _info = {
+  name =   DynASM,
+  description =A dynamic assembler for code generation engines,
+  version =1.3.0,
+  vernum =  10300,
+  release =2011-05-05,
+  author = Mike Pall,
+  url =http://luajit.org/dynasm.html;,
+  license =MIT,
+  copyright =  [[
+Copyright (C) 2005-2015 Mike Pall. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+Software), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+[ MIT license: http://www.opensource.org/licenses/mit-license.php ]
+]],
+}
+
+-- Cache library functions.
+local type, pairs, ipairs = type, pairs, ipairs
+local pcall, error, assert = pcall, error, assert
+local _s = string
+local sub, match, gmatch, gsub = _s.sub, _s.match, _s.gmatch, _s.gsub
+local format, rep, upper = _s.format, _s.rep, _s.upper
+local _t = table
+local insert, remove, concat, sort = _t.insert, _t.remove, _t.concat, _t.sort
+local exit = os.exit
+local io = io
+local stdin, stdout, stderr = io.stdin, io.stdout, io.stderr
+
+--
+
+-- Program options.
+local g_opt = {}
+
+-- Global state for current file.
+local g_fname, g_curline, g_indent, g_lineno, g_synclineno, g_arch
+local g_errcount = 0
+
+-- Write buffer for output file.
+local g_wbuffer, g_capbuffer
+
+--
+
+-- Write an output line (or callback function) to the buffer.
+local function wline(line, needindent)
+  local buf = g_capbuffer or g_wbuffer
+  buf[#buf+1] = needindent and g_indent..line or line
+  g_synclineno = g_synclineno + 1
+end
+
+-- Write assembler line as a comment, if requestd.
+local function wcomment(aline)
+  if g_opt.comment then
+wline(g_opt.comment..aline..g_opt.endcomment, true)
+  end
+end
+
+-- Resync CPP line numbers.
+local function wsync()
+  if g_synclineno ~= g_lineno and g_opt.cpp then
+wline(#line ..g_lineno..' '..g_fname..'')
+g_synclineno = g_lineno
+  end
+end
+
+-- Dummy action flush function. Replaced with arch-specific function later.
+local function wflush(term)
+end
+
+-- Dump all buffered output lines.
+local function wdumplines(out, buf)
+  for _,line in ipairs(buf) do
+if type(line) == string then
+  assert(out:write(line, \n))
+else
+  -- Special callback to dynamically insert lines after end of processing.
+  line(out)
+end
+  end
+end
+
+--
+
+-- Emit an error. Processing continues with next statement.
+local function werror(msg)
+  error(format(%s:%s: error: %s:\n%s, g_fname, g_lineno, msg, g_curline), 0)
+end
+
+-- Emit a fatal error. Processing stops.
+local function wfatal(msg)
+  g_errcount = fatal
+  werror(msg)
+end
+
+-- Print a warning. Processing continues.
+local function wwarn(msg)
+  stderr:write(format(%s:%s: warning: %s:\n%s\n,
+g_fname, g_lineno, msg, g_curline))
+end
+
+-- Print caught error message. But suppress excessive errors.
+local function wprinterr(...)
+  if type(g_errcount) == number then
+-- Regular error.
+g_errcount = g_errcount + 1
+if g_errcount  21 then -- Seems to be a reasonable limit.
+  stderr:write(...)
+elseif g_errcount == 21 then

[46/62] [abbrv] trafficserver git commit: [TS-3794]: call spdy_process_read on early read from handshake.

2015-07-28 Thread zwoop
[TS-3794]: call spdy_process_read on early read from handshake.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/b51a2b97
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/b51a2b97
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/b51a2b97

Branch: refs/heads/6.0.x
Commit: b51a2b977017d0d94e751d7e2c543d71a457c159
Parents: c36204d
Author: Sudheer Vinukonda sudhe...@yahoo-inc.com
Authored: Thu Jul 23 21:51:09 2015 +
Committer: Sudheer Vinukonda sudhe...@yahoo-inc.com
Committed: Thu Jul 23 21:51:09 2015 +

--
 proxy/spdy/SpdyClientSession.cc | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b51a2b97/proxy/spdy/SpdyClientSession.cc
--
diff --git a/proxy/spdy/SpdyClientSession.cc b/proxy/spdy/SpdyClientSession.cc
index 33c87bf..d9db07f 100644
--- a/proxy/spdy/SpdyClientSession.cc
+++ b/proxy/spdy/SpdyClientSession.cc
@@ -208,13 +208,13 @@ SpdyClientSession::start()
 {SPDYLAY_SETTINGS_INITIAL_WINDOW_SIZE, SPDYLAY_ID_FLAG_SETTINGS_NONE, 
spdy_initial_window_size}};
   int r;
 
-  if (this-write_vio  (TSIOBufferReaderAvail(this-req_reader)  0)) {
-spdy_process_read(TS_EVENT_VCONN_WRITE_READY, this);
-  }
-
   this-read_vio = (TSVIO) this-vc-do_io_read(this, INT64_MAX, 
reinterpret_castMIOBuffer *(this-req_buffer));
   this-write_vio = (TSVIO) this-vc-do_io_write(this, INT64_MAX, 
reinterpret_castIOBufferReader *(this-resp_reader));
 
+  if (TSIOBufferReaderAvail(this-req_reader)  0) {
+spdy_process_read(TS_EVENT_VCONN_WRITE_READY, this);
+  }
+
   SET_HANDLER(SpdyClientSession::state_session_readwrite);
 
   r = spdylay_submit_settings(this-session, SPDYLAY_FLAG_SETTINGS_NONE, 
entries, countof(entries));



[37/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/dynasm/dasm_x86.h
--
diff --git a/lib/luajit/dynasm/dasm_x86.h b/lib/luajit/dynasm/dasm_x86.h
new file mode 100644
index 000..652e8c9
--- /dev/null
+++ b/lib/luajit/dynasm/dasm_x86.h
@@ -0,0 +1,471 @@
+/*
+** DynASM x86 encoding engine.
+** Copyright (C) 2005-2015 Mike Pall. All rights reserved.
+** Released under the MIT license. See dynasm.lua for full copyright notice.
+*/
+
+#include stddef.h
+#include stdarg.h
+#include string.h
+#include stdlib.h
+
+#define DASM_ARCH  x86
+
+#ifndef DASM_EXTERN
+#define DASM_EXTERN(a,b,c,d)   0
+#endif
+
+/* Action definitions. DASM_STOP must be 255. */
+enum {
+  DASM_DISP = 233,
+  DASM_IMM_S, DASM_IMM_B, DASM_IMM_W, DASM_IMM_D, DASM_IMM_WB, DASM_IMM_DB,
+  DASM_VREG, DASM_SPACE, DASM_SETLABEL, DASM_REL_A, DASM_REL_LG, DASM_REL_PC,
+  DASM_IMM_LG, DASM_IMM_PC, DASM_LABEL_LG, DASM_LABEL_PC, DASM_ALIGN,
+  DASM_EXTERN, DASM_ESC, DASM_MARK, DASM_SECTION, DASM_STOP
+};
+
+/* Maximum number of section buffer positions for a single dasm_put() call. */
+#define DASM_MAXSECPOS 25
+
+/* DynASM encoder status codes. Action list offset or number are or'ed in. */
+#define DASM_S_OK  0x
+#define DASM_S_NOMEM   0x0100
+#define DASM_S_PHASE   0x0200
+#define DASM_S_MATCH_SEC   0x0300
+#define DASM_S_RANGE_I 0x1100
+#define DASM_S_RANGE_SEC   0x1200
+#define DASM_S_RANGE_LG0x1300
+#define DASM_S_RANGE_PC0x1400
+#define DASM_S_RANGE_VREG  0x1500
+#define DASM_S_UNDEF_L 0x2100
+#define DASM_S_UNDEF_PC0x2200
+
+/* Macros to convert positions (8 bit section + 24 bit index). */
+#define DASM_POS2IDX(pos)  ((pos)0x00ff)
+#define DASM_POS2BIAS(pos) ((pos)0xff00)
+#define DASM_SEC2POS(sec)  ((sec)24)
+#define DASM_POS2SEC(pos)  ((pos)24)
+#define DASM_POS2PTR(D, pos)   (D-sections[DASM_POS2SEC(pos)].rbuf + (pos))
+
+/* Action list type. */
+typedef const unsigned char *dasm_ActList;
+
+/* Per-section structure. */
+typedef struct dasm_Section {
+  int *rbuf;   /* Biased buffer pointer (negative section bias). */
+  int *buf;/* True buffer pointer. */
+  size_t bsize;/* Buffer size in bytes. */
+  int pos; /* Biased buffer position. */
+  int epos;/* End of biased buffer position - max single put. */
+  int ofs; /* Byte offset into section. */
+} dasm_Section;
+
+/* Core structure holding the DynASM encoding state. */
+struct dasm_State {
+  size_t psize;/* Allocated size of this structure. */
+  dasm_ActList actionlist; /* Current actionlist pointer. */
+  int *lglabels;   /* Local/global chain/pos ptrs. */
+  size_t lgsize;
+  int *pclabels;   /* PC label chains/pos ptrs. */
+  size_t pcsize;
+  void **globals;  /* Array of globals (bias -10). */
+  dasm_Section *section;   /* Pointer to active section. */
+  size_t codesize; /* Total size of all code sections. */
+  int maxsection;  /* 0 = sectionidx  maxsection. */
+  int status;  /* Status code. */
+  dasm_Section sections[1];/* All sections. Alloc-extended. */
+};
+
+/* The size of the core structure depends on the max. number of sections. */
+#define DASM_PSZ(ms)   (sizeof(dasm_State)+(ms-1)*sizeof(dasm_Section))
+
+
+/* Initialize DynASM state. */
+void dasm_init(Dst_DECL, int maxsection)
+{
+  dasm_State *D;
+  size_t psz = 0;
+  int i;
+  Dst_REF = NULL;
+  DASM_M_GROW(Dst, struct dasm_State, Dst_REF, psz, DASM_PSZ(maxsection));
+  D = Dst_REF;
+  D-psize = psz;
+  D-lglabels = NULL;
+  D-lgsize = 0;
+  D-pclabels = NULL;
+  D-pcsize = 0;
+  D-globals = NULL;
+  D-maxsection = maxsection;
+  for (i = 0; i  maxsection; i++) {
+D-sections[i].buf = NULL;  /* Need this for pass3. */
+D-sections[i].rbuf = D-sections[i].buf - DASM_SEC2POS(i);
+D-sections[i].bsize = 0;
+D-sections[i].epos = 0;  /* Wrong, but is recalculated after resize. */
+  }
+}
+
+/* Free DynASM state. */
+void dasm_free(Dst_DECL)
+{
+  dasm_State *D = Dst_REF;
+  int i;
+  for (i = 0; i  D-maxsection; i++)
+if (D-sections[i].buf)
+  DASM_M_FREE(Dst, D-sections[i].buf, D-sections[i].bsize);
+  if (D-pclabels) DASM_M_FREE(Dst, D-pclabels, D-pcsize);
+  if (D-lglabels) DASM_M_FREE(Dst, D-lglabels, D-lgsize);
+  DASM_M_FREE(Dst, D, D-psize);
+}
+
+/* Setup global label array. Must be called before dasm_setup(). */
+void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl)
+{
+  dasm_State *D = Dst_REF;
+  D-globals = gl - 10;  /* Negative bias to compensate for locals. */
+  DASM_M_GROW(Dst, int, D-lglabels, D-lgsize, (10+maxgl)*sizeof(int));
+}
+
+/* Grow PC label array. Can be called after dasm_setup(), too. */
+void 

[52/62] [abbrv] trafficserver git commit: TS-3030 Restore the autoreconf -if ...

2015-07-28 Thread zwoop
TS-3030 Restore the autoreconf -if ...


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f40bd7ca
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f40bd7ca
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f40bd7ca

Branch: refs/heads/6.0.x
Commit: f40bd7ca3c2575d1cd087c6cc69f570415eb071d
Parents: bfddad1
Author: Leif Hedstrom zw...@apache.org
Authored: Fri Jul 24 02:47:04 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Fri Jul 24 02:47:04 2015 -0600

--
 Makefile.am | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f40bd7ca/Makefile.am
--
diff --git a/Makefile.am b/Makefile.am
index 2b6cbdd..35ba197 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -68,6 +68,7 @@ asf-dist-rc: asf-distdir
 asf-distdir:
@$(am__remove_distdir)
test -d .git  git clone . $(distdir)
+   cd $(distdir)  autoreconf -i
$(RM) -r -- $(distdir)/autom4te.cache $(distdir)/ci `find $(distdir) 
-name .git -o -name .gitignore -o -name .gitmodules`
 
 asf-dist-sign: asf-dist



[25/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_asm_ppc.h
--
diff --git a/lib/luajit/src/lj_asm_ppc.h b/lib/luajit/src/lj_asm_ppc.h
new file mode 100644
index 000..2c5d74a
--- /dev/null
+++ b/lib/luajit/src/lj_asm_ppc.h
@@ -0,0 +1,2169 @@
+/*
+** PPC IR assembler (SSA IR - machine code).
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+/* -- Register allocator extensions --- */
+
+/* Allocate a register with a hint. */
+static Reg ra_hintalloc(ASMState *as, IRRef ref, Reg hint, RegSet allow)
+{
+  Reg r = IR(ref)-r;
+  if (ra_noreg(r)) {
+if (!ra_hashint(r)  !iscrossref(as, ref))
+  ra_sethint(IR(ref)-r, hint);  /* Propagate register hint. */
+r = ra_allocref(as, ref, allow);
+  }
+  ra_noweak(as, r);
+  return r;
+}
+
+/* Allocate two source registers for three-operand instructions. */
+static Reg ra_alloc2(ASMState *as, IRIns *ir, RegSet allow)
+{
+  IRIns *irl = IR(ir-op1), *irr = IR(ir-op2);
+  Reg left = irl-r, right = irr-r;
+  if (ra_hasreg(left)) {
+ra_noweak(as, left);
+if (ra_noreg(right))
+  right = ra_allocref(as, ir-op2, rset_exclude(allow, left));
+else
+  ra_noweak(as, right);
+  } else if (ra_hasreg(right)) {
+ra_noweak(as, right);
+left = ra_allocref(as, ir-op1, rset_exclude(allow, right));
+  } else if (ra_hashint(right)) {
+right = ra_allocref(as, ir-op2, allow);
+left = ra_alloc1(as, ir-op1, rset_exclude(allow, right));
+  } else {
+left = ra_allocref(as, ir-op1, allow);
+right = ra_alloc1(as, ir-op2, rset_exclude(allow, left));
+  }
+  return left | (right  8);
+}
+
+/* -- Guard handling -- */
+
+/* Setup exit stubs after the end of each trace. */
+static void asm_exitstub_setup(ASMState *as, ExitNo nexits)
+{
+  ExitNo i;
+  MCode *mxp = as-mctop;
+  if (mxp - (nexits + 3 + MCLIM_REDZONE)  as-mclim)
+asm_mclimit(as);
+  /* 1: mflr r0; bl -vm_exit_handler; li r0, traceno; bl 1; bl 1; ... */
+  for (i = nexits-1; (int32_t)i = 0; i--)
+*--mxp = PPCI_BL|(((-3-i)0x00ffu)2);
+  *--mxp = PPCI_LI|PPCF_T(RID_TMP)|as-T-traceno;  /* Read by exit handler. */
+  mxp--;
+  *mxp = PPCI_BL|MCode *)(void *)lj_vm_exit_handler-mxp)0x00ffu)2);
+  *--mxp = PPCI_MFLR|PPCF_T(RID_TMP);
+  as-mctop = mxp;
+}
+
+static MCode *asm_exitstub_addr(ASMState *as, ExitNo exitno)
+{
+  /* Keep this in-sync with exitstub_trace_addr(). */
+  return as-mctop + exitno + 3;
+}
+
+/* Emit conditional branch to exit for guard. */
+static void asm_guardcc(ASMState *as, PPCCC cc)
+{
+  MCode *target = asm_exitstub_addr(as, as-snapno);
+  MCode *p = as-mcp;
+  if (LJ_UNLIKELY(p == as-invmcp)) {
+as-loopinv = 1;
+*p = PPCI_B | (((target-p)  0x00ffu)  2);
+emit_condbranch(as, PPCI_BC, cc^4, p);
+return;
+  }
+  emit_condbranch(as, PPCI_BC, cc, target);
+}
+
+/* -- Operand fusion -- */
+
+/* Limit linear search to this distance. Avoids O(n^2) behavior. */
+#define CONFLICT_SEARCH_LIM31
+
+/* Check if there's no conflicting instruction between curins and ref. */
+static int noconflict(ASMState *as, IRRef ref, IROp conflict)
+{
+  IRIns *ir = as-ir;
+  IRRef i = as-curins;
+  if (i  ref + CONFLICT_SEARCH_LIM)
+return 0;  /* Give up, ref is too far away. */
+  while (--i  ref)
+if (ir[i].o == conflict)
+  return 0;  /* Conflict found. */
+  return 1;  /* Ok, no conflict. */
+}
+
+/* Fuse the array base of colocated arrays. */
+static int32_t asm_fuseabase(ASMState *as, IRRef ref)
+{
+  IRIns *ir = IR(ref);
+  if (ir-o == IR_TNEW  ir-op1 = LJ_MAX_COLOSIZE 
+  !neverfuse(as)  noconflict(as, ref, IR_NEWREF))
+return (int32_t)sizeof(GCtab);
+  return 0;
+}
+
+/* Indicates load/store indexed is ok. */
+#define AHUREF_LSX ((int32_t)0x8000)
+
+/* Fuse array/hash/upvalue reference into register+offset operand. */
+static Reg asm_fuseahuref(ASMState *as, IRRef ref, int32_t *ofsp, RegSet allow)
+{
+  IRIns *ir = IR(ref);
+  if (ra_noreg(ir-r)) {
+if (ir-o == IR_AREF) {
+  if (mayfuse(as, ref)) {
+   if (irref_isk(ir-op2)) {
+ IRRef tab = IR(ir-op1)-op1;
+ int32_t ofs = asm_fuseabase(as, tab);
+ IRRef refa = ofs ? tab : ir-op1;
+ ofs += 8*IR(ir-op2)-i;
+ if (checki16(ofs)) {
+   *ofsp = ofs;
+   return ra_alloc1(as, refa, allow);
+ }
+   }
+   if (*ofsp == AHUREF_LSX) {
+ Reg base = ra_alloc1(as, ir-op1, allow);
+ Reg idx = ra_alloc1(as, ir-op2, rset_exclude(RSET_GPR, base));
+ return base | (idx  8);
+   }
+  }
+} else if (ir-o == IR_HREFK) {
+  if (mayfuse(as, ref)) {
+   int32_t ofs = (int32_t)(IR(ir-op2)-op2 * sizeof(Node));
+   if (checki16(ofs)) {
+ *ofsp = ofs;
+ return ra_alloc1(as, ir-op1, 

[12/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_opt_split.c
--
diff --git a/lib/luajit/src/lj_opt_split.c b/lib/luajit/src/lj_opt_split.c
new file mode 100644
index 000..1cee509
--- /dev/null
+++ b/lib/luajit/src/lj_opt_split.c
@@ -0,0 +1,731 @@
+/*
+** SPLIT: Split 64 bit IR instructions into 32 bit IR instructions.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_opt_split_c
+#define LUA_CORE
+
+#include lj_obj.h
+
+#if LJ_HASJIT  (LJ_SOFTFP || (LJ_32  LJ_HASFFI))
+
+#include lj_err.h
+#include lj_str.h
+#include lj_ir.h
+#include lj_jit.h
+#include lj_ircall.h
+#include lj_iropt.h
+#include lj_vm.h
+
+/* SPLIT pass:
+**
+** This pass splits up 64 bit IR instructions into multiple 32 bit IR
+** instructions. It's only active for soft-float targets or for 32 bit CPUs
+** which lack native 64 bit integer operations (the FFI is currently the
+** only emitter for 64 bit integer instructions).
+**
+** Splitting the IR in a separate pass keeps each 32 bit IR assembler
+** backend simple. Only a small amount of extra functionality needs to be
+** implemented. This is much easier than adding support for allocating
+** register pairs to each backend (believe me, I tried). A few simple, but
+** important optimizations can be performed by the SPLIT pass, which would
+** be tedious to do in the backend.
+**
+** The basic idea is to replace each 64 bit IR instruction with its 32 bit
+** equivalent plus an extra HIOP instruction. The splitted IR is not passed
+** through FOLD or any other optimizations, so each HIOP is guaranteed to
+** immediately follow it's counterpart. The actual functionality of HIOP is
+** inferred from the previous instruction.
+**
+** The operands of HIOP hold the hiword input references. The output of HIOP
+** is the hiword output reference, which is also used to hold the hiword
+** register or spill slot information. The register allocator treats this
+** instruction independently of any other instruction, which improves code
+** quality compared to using fixed register pairs.
+**
+** It's easier to split up some instructions into two regular 32 bit
+** instructions. E.g. XLOAD is split up into two XLOADs with two different
+** addresses. Obviously 64 bit constants need to be split up into two 32 bit
+** constants, too. Some hiword instructions can be entirely omitted, e.g.
+** when zero-extending a 32 bit value to 64 bits. 64 bit arguments for calls
+** are split up into two 32 bit arguments each.
+**
+** On soft-float targets, floating-point instructions are directly converted
+** to soft-float calls by the SPLIT pass (except for comparisons and MIN/MAX).
+** HIOP for number results has the type IRT_SOFTFP (sfp in -jdump).
+**
+** Here's the IR and x64 machine code for 'x.b = x.a + 1' for a struct with
+** two int64_t fields:
+**
+** 0100p32 ADDbase  +8
+** 0101i64 XLOAD  0100
+** 0102i64 ADD0101  +1
+** 0103p32 ADDbase  +16
+** 0104i64 XSTORE 0103  0102
+**
+** mov rax, [esi+0x8]
+** add rax, +0x01
+** mov [esi+0x10], rax
+**
+** Here's the transformed IR and the x86 machine code after the SPLIT pass:
+**
+** 0100p32 ADDbase  +8
+** 0101int XLOAD  0100
+** 0102p32 ADDbase  +12
+** 0103int XLOAD  0102
+** 0104int ADD0101  +1
+** 0105int HIOP   0103  +0
+** 0106p32 ADDbase  +16
+** 0107int XSTORE 0106  0104
+** 0108int HIOP   0106  0105
+**
+** mov eax, [esi+0x8]
+** mov ecx, [esi+0xc]
+** add eax, +0x01
+** adc ecx, +0x00
+** mov [esi+0x10], eax
+** mov [esi+0x14], ecx
+**
+** You may notice the reassociated hiword address computation, which is
+** later fused into the mov operands by the assembler.
+*/
+
+/* Some local macros to save typing. Undef'd at the end. */
+#define IR(ref)(J-cur.ir[(ref)])
+
+/* Directly emit the transformed IR without updating chains etc. */
+static IRRef split_emit(jit_State *J, uint16_t ot, IRRef1 op1, IRRef1 op2)
+{
+  IRRef nref = lj_ir_nextins(J);
+  IRIns *ir = IR(nref);
+  ir-ot = ot;
+  ir-op1 = op1;
+  ir-op2 = op2;
+  return nref;
+}
+
+#if LJ_SOFTFP
+/* Emit a (checked) number to integer conversion. */
+static IRRef split_num2int(jit_State *J, IRRef lo, IRRef hi, int check)
+{
+  IRRef tmp, res;
+#if LJ_LE
+  tmp = split_emit(J, IRT(IR_CARG, IRT_NIL), lo, hi);
+#else
+  tmp = split_emit(J, IRT(IR_CARG, IRT_NIL), hi, lo);
+#endif
+  res = split_emit(J, IRTI(IR_CALLN), tmp, IRCALL_softfp_d2i);
+  if (check) {
+tmp = split_emit(J, IRTI(IR_CALLN), res, IRCALL_softfp_i2d);
+split_emit(J, IRT(IR_HIOP, IRT_SOFTFP), tmp, tmp);
+split_emit(J, IRTGI(IR_EQ), tmp, lo);
+split_emit(J, IRTG(IR_HIOP, IRT_SOFTFP), tmp+1, hi);
+  }
+  return res;
+}
+
+/* Emit a CALLN with one split 64 bit argument. */
+static IRRef 

[16/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_ir.h
--
diff --git a/lib/luajit/src/lj_ir.h b/lib/luajit/src/lj_ir.h
new file mode 100644
index 000..8126482
--- /dev/null
+++ b/lib/luajit/src/lj_ir.h
@@ -0,0 +1,551 @@
+/*
+** SSA IR (Intermediate Representation) format.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _LJ_IR_H
+#define _LJ_IR_H
+
+#include lj_obj.h
+
+/* -- IR instructions - */
+
+/* IR instruction definition. Order matters, see below. ORDER IR */
+#define IRDEF(_) \
+  /* Guarded assertions. */ \
+  /* Must be properly aligned to flip opposites (^1) and (un)ordered (^4). */ \
+  _(LT,N , ref, ref) \
+  _(GE,N , ref, ref) \
+  _(LE,N , ref, ref) \
+  _(GT,N , ref, ref) \
+  \
+  _(ULT,   N , ref, ref) \
+  _(UGE,   N , ref, ref) \
+  _(ULE,   N , ref, ref) \
+  _(UGT,   N , ref, ref) \
+  \
+  _(EQ,C , ref, ref) \
+  _(NE,C , ref, ref) \
+  \
+  _(ABC,   N , ref, ref) \
+  _(RETF,  S , ref, ref) \
+  \
+  /* Miscellaneous ops. */ \
+  _(NOP,   N , ___, ___) \
+  _(BASE,  N , lit, lit) \
+  _(PVAL,  N , lit, ___) \
+  _(GCSTEP,S , ___, ___) \
+  _(HIOP,  S , ref, ref) \
+  _(LOOP,  S , ___, ___) \
+  _(USE,   S , ref, ___) \
+  _(PHI,   S , ref, ref) \
+  _(RENAME,S , ref, lit) \
+  \
+  /* Constants. */ \
+  _(KPRI,  N , ___, ___) \
+  _(KINT,  N , cst, ___) \
+  _(KGC,   N , cst, ___) \
+  _(KPTR,  N , cst, ___) \
+  _(KKPTR, N , cst, ___) \
+  _(KNULL, N , cst, ___) \
+  _(KNUM,  N , cst, ___) \
+  _(KINT64,N , cst, ___) \
+  _(KSLOT, N , ref, lit) \
+  \
+  /* Bit ops. */ \
+  _(BNOT,  N , ref, ___) \
+  _(BSWAP, N , ref, ___) \
+  _(BAND,  C , ref, ref) \
+  _(BOR,   C , ref, ref) \
+  _(BXOR,  C , ref, ref) \
+  _(BSHL,  N , ref, ref) \
+  _(BSHR,  N , ref, ref) \
+  _(BSAR,  N , ref, ref) \
+  _(BROL,  N , ref, ref) \
+  _(BROR,  N , ref, ref) \
+  \
+  /* Arithmetic ops. ORDER ARITH */ \
+  _(ADD,   C , ref, ref) \
+  _(SUB,   N , ref, ref) \
+  _(MUL,   C , ref, ref) \
+  _(DIV,   N , ref, ref) \
+  _(MOD,   N , ref, ref) \
+  _(POW,   N , ref, ref) \
+  _(NEG,   N , ref, ref) \
+  \
+  _(ABS,   N , ref, ref) \
+  _(ATAN2, N , ref, ref) \
+  _(LDEXP, N , ref, ref) \
+  _(MIN,   C , ref, ref) \
+  _(MAX,   C , ref, ref) \
+  _(FPMATH,N , ref, lit) \
+  \
+  /* Overflow-checking arithmetic ops. */ \
+  _(ADDOV, CW, ref, ref) \
+  _(SUBOV, NW, ref, ref) \
+  _(MULOV, CW, ref, ref) \
+  \
+  /* Memory ops. A = array, H = hash, U = upvalue, F = field, S = stack. */ \
+  \
+  /* Memory references. */ \
+  _(AREF,  R , ref, ref) \
+  _(HREFK, R , ref, ref) \
+  _(HREF,  L , ref, ref) \
+  _(NEWREF,S , ref, ref) \
+  _(UREFO, LW, ref, lit) \
+  _(UREFC, LW, ref, lit) \
+  _(FREF,  R , ref, lit) \
+  _(STRREF,N , ref, ref) \
+  \
+  /* Loads and Stores. These must be in the same order. */ \
+  _(ALOAD, L , ref, ___) \
+  _(HLOAD, L , ref, ___) \
+  _(ULOAD, L , ref, ___) \
+  _(FLOAD, L , ref, lit) \
+  _(XLOAD, L , ref, lit) \
+  _(SLOAD, L , lit, lit) \
+  _(VLOAD, L , ref, ___) \
+  \
+  _(ASTORE,S , ref, ref) \
+  _(HSTORE,S , ref, ref) \
+  _(USTORE,S , ref, ref) \
+  _(FSTORE,S , ref, ref) \
+  _(XSTORE,S , ref, ref) \
+  \
+  /* Allocations. */ \
+  _(SNEW,  N , ref, ref)  /* CSE is ok, not marked as A. */ \
+  _(XSNEW, A , ref, ref) \
+  _(TNEW,  AW, lit, lit) \
+  _(TDUP,  AW, ref, ___) \
+  _(CNEW,  AW, ref, ref) \
+  _(CNEWI, NW, ref, ref)  /* CSE is ok, not marked as A. */ \
+  \
+  /* Barriers. */ \
+  _(TBAR,  S , ref, ___) \
+  _(OBAR,  S , ref, ref) \
+  _(XBAR,  S , ___, ___) \
+  \
+  /* Type conversions. */ \
+  _(CONV,  NW, ref, lit) \
+  _(TOBIT, N , ref, ref) \
+  _(TOSTR, N , ref, ___) \
+  _(STRTO, N , ref, ___) \
+  \
+  /* Calls. */ \
+  _(CALLN, N , ref, lit) \
+  _(CALLL, L , ref, lit) \
+  _(CALLS, S , ref, lit) \
+  _(CALLXS,S , ref, ref) \
+  _(CARG,  N , ref, ref) \
+  \
+  /* End of list. */
+
+/* IR opcodes (max. 256). */
+typedef enum {
+#define IRENUM(name, m, m1, m2)IR_##name,
+IRDEF(IRENUM)
+#undef IRENUM
+  IR__MAX
+} IROp;
+
+/* Stored opcode. */
+typedef uint8_t IROp1;
+
+LJ_STATIC_ASSERT(((int)IR_EQ^1) == (int)IR_NE);
+LJ_STATIC_ASSERT(((int)IR_LT^1) == (int)IR_GE);
+LJ_STATIC_ASSERT(((int)IR_LE^1) == (int)IR_GT);
+LJ_STATIC_ASSERT(((int)IR_LT^3) == (int)IR_GT);
+LJ_STATIC_ASSERT(((int)IR_LT^4) == (int)IR_ULT);
+
+/* Delta between xLOAD and xSTORE. */
+#define IRDELTA_L2S((int)IR_ASTORE - 

[42/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
TS-3783 TS-3030 Add luajit v2.0.4 as a subtree


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1f27b840
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1f27b840
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1f27b840

Branch: refs/heads/6.0.x
Commit: 1f27b84077756cc0a0ad07459ba59797bec826d9
Parents: 0faed06
Author: Leif Hedstrom zw...@apache.org
Authored: Thu Jul 23 12:45:57 2015 +0200
Committer: Leif Hedstrom zw...@apache.org
Committed: Thu Jul 23 13:03:18 2015 +0200

--
 lib/luajit/.gitignore |   11 +
 lib/luajit/COPYRIGHT  |   56 +
 lib/luajit/Makefile   |  151 +
 lib/luajit/README |   16 +
 lib/luajit/doc/bluequad-print.css |  166 +
 lib/luajit/doc/bluequad.css   |  325 ++
 lib/luajit/doc/changes.html   |  978 
 lib/luajit/doc/contact.html   |  102 +
 lib/luajit/doc/ext_c_api.html |  187 +
 lib/luajit/doc/ext_ffi.html   |  330 ++
 lib/luajit/doc/ext_ffi_api.html   |  566 ++
 lib/luajit/doc/ext_ffi_semantics.html | 1245 +
 lib/luajit/doc/ext_ffi_tutorial.html  |  601 +++
 lib/luajit/doc/ext_jit.html   |  199 +
 lib/luajit/doc/extensions.html|  408 ++
 lib/luajit/doc/faq.html   |  184 +
 lib/luajit/doc/img/contact.png|  Bin 0 - 1340 bytes
 lib/luajit/doc/install.html   |  646 +++
 lib/luajit/doc/luajit.html|  234 +
 lib/luajit/doc/running.html   |  306 ++
 lib/luajit/doc/status.html|  116 +
 lib/luajit/dynasm/dasm_arm.h  |  456 ++
 lib/luajit/dynasm/dasm_arm.lua| 1125 
 lib/luajit/dynasm/dasm_mips.h |  416 ++
 lib/luajit/dynasm/dasm_mips.lua   |  953 
 lib/luajit/dynasm/dasm_ppc.h  |  412 ++
 lib/luajit/dynasm/dasm_ppc.lua| 1249 +
 lib/luajit/dynasm/dasm_proto.h|   83 +
 lib/luajit/dynasm/dasm_x64.lua|   12 +
 lib/luajit/dynasm/dasm_x86.h  |  471 ++
 lib/luajit/dynasm/dasm_x86.lua| 1945 +++
 lib/luajit/dynasm/dynasm.lua  | 1094 
 lib/luajit/etc/luajit.1   |   88 +
 lib/luajit/etc/luajit.pc  |   25 +
 lib/luajit/src/.gitignore |7 +
 lib/luajit/src/Makefile   |  684 +++
 lib/luajit/src/Makefile.dep   |  226 +
 lib/luajit/src/host/.gitignore|3 +
 lib/luajit/src/host/README|4 +
 lib/luajit/src/host/buildvm.c |  516 ++
 lib/luajit/src/host/buildvm.h |  104 +
 lib/luajit/src/host/buildvm_asm.c |  313 ++
 lib/luajit/src/host/buildvm_fold.c|  229 +
 lib/luajit/src/host/buildvm_lib.c |  398 ++
 lib/luajit/src/host/buildvm_peobj.c   |  368 ++
 lib/luajit/src/host/genminilua.lua|  428 ++
 lib/luajit/src/host/minilua.c | 7770 
 lib/luajit/src/jit/.gitignore |1 +
 lib/luajit/src/jit/bc.lua |  191 +
 lib/luajit/src/jit/bcsave.lua |  659 +++
 lib/luajit/src/jit/dis_arm.lua|  689 +++
 lib/luajit/src/jit/dis_mips.lua   |  428 ++
 lib/luajit/src/jit/dis_mipsel.lua |   20 +
 lib/luajit/src/jit/dis_ppc.lua|  591 +++
 lib/luajit/src/jit/dis_x64.lua|   20 +
 lib/luajit/src/jit/dis_x86.lua|  836 +++
 lib/luajit/src/jit/dump.lua   |  699 +++
 lib/luajit/src/jit/v.lua  |  167 +
 lib/luajit/src/lauxlib.h  |  167 +
 lib/luajit/src/lib_aux.c  |  356 ++
 lib/luajit/src/lib_base.c |  683 +++
 lib/luajit/src/lib_bit.c  |   74 +
 lib/luajit/src/lib_debug.c|  405 ++
 lib/luajit/src/lib_ffi.c  |  851 +++
 lib/luajit/src/lib_init.c |   55 +
 lib/luajit/src/lib_io.c   |  539 ++
 lib/luajit/src/lib_jit.c  |  663 +++
 lib/luajit/src/lib_math.c |  233 +
 lib/luajit/src/lib_os.c   |  287 +
 lib/luajit/src/lib_package.c  |  602 +++
 lib/luajit/src/lib_string.c   |  940 
 lib/luajit/src/lib_table.c|  300 ++
 lib/luajit/src/lj.supp|   26 +
 lib/luajit/src/lj_alloc.c | 1396 +
 lib/luajit/src/lj_alloc.h |   17 +
 lib/luajit/src/lj_api.c   | 1200 +
 lib/luajit/src/lj_arch.h  |  437 ++
 lib/luajit/src/lj_asm.c   | 1920 +++
 lib/luajit/src/lj_asm.h   |   17 +
 lib/luajit/src/lj_asm_arm.h   | 2361 +
 lib/luajit/src/lj_asm_mips.h  | 1977 +++
 lib/luajit/src/lj_asm_ppc.h   | 2169 
 lib/luajit/src/lj_asm_x86.h   | 2806 ++
 lib/luajit/src/lj_bc.c|   14 +
 lib/luajit/src/lj_bc.h|  261 +
 lib/luajit/src/lj_bcdump.h|   66 +
 lib/luajit/src/lj_bcread.c|  476 

[22/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_ccallback.c
--
diff --git a/lib/luajit/src/lj_ccallback.c b/lib/luajit/src/lj_ccallback.c
new file mode 100644
index 000..b210641
--- /dev/null
+++ b/lib/luajit/src/lj_ccallback.c
@@ -0,0 +1,644 @@
+/*
+** FFI C callback handling.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#include lj_obj.h
+
+#if LJ_HASFFI
+
+#include lj_gc.h
+#include lj_err.h
+#include lj_tab.h
+#include lj_state.h
+#include lj_frame.h
+#include lj_ctype.h
+#include lj_cconv.h
+#include lj_ccall.h
+#include lj_ccallback.h
+#include lj_target.h
+#include lj_mcode.h
+#include lj_trace.h
+#include lj_vm.h
+
+/* -- Target-specific handling of callback slots -- */
+
+#define CALLBACK_MCODE_SIZE(LJ_PAGESIZE * LJ_NUM_CBPAGE)
+
+#if LJ_OS_NOJIT
+
+/* Disabled callback support. */
+#define CALLBACK_SLOT2OFS(slot)(0*(slot))
+#define CALLBACK_OFS2SLOT(ofs) (0*(ofs))
+#define CALLBACK_MAX_SLOT  0
+
+#elif LJ_TARGET_X86ORX64
+
+#define CALLBACK_MCODE_HEAD(LJ_64 ? 8 : 0)
+#define CALLBACK_MCODE_GROUP   (-2+1+2+5+(LJ_64 ? 6 : 5))
+
+#define CALLBACK_SLOT2OFS(slot) \
+  (CALLBACK_MCODE_HEAD + CALLBACK_MCODE_GROUP*((slot)/32) + 4*(slot))
+
+static MSize CALLBACK_OFS2SLOT(MSize ofs)
+{
+  MSize group;
+  ofs -= CALLBACK_MCODE_HEAD;
+  group = ofs / (32*4 + CALLBACK_MCODE_GROUP);
+  return (ofs % (32*4 + CALLBACK_MCODE_GROUP))/4 + group*32;
+}
+
+#define CALLBACK_MAX_SLOT \
+  (((CALLBACK_MCODE_SIZE-CALLBACK_MCODE_HEAD)/(CALLBACK_MCODE_GROUP+4*32))*32)
+
+#elif LJ_TARGET_ARM
+
+#define CALLBACK_MCODE_HEAD32
+#define CALLBACK_SLOT2OFS(slot)(CALLBACK_MCODE_HEAD + 8*(slot))
+#define CALLBACK_OFS2SLOT(ofs) (((ofs)-CALLBACK_MCODE_HEAD)/8)
+#define CALLBACK_MAX_SLOT  (CALLBACK_OFS2SLOT(CALLBACK_MCODE_SIZE))
+
+#elif LJ_TARGET_PPC
+
+#define CALLBACK_MCODE_HEAD24
+#define CALLBACK_SLOT2OFS(slot)(CALLBACK_MCODE_HEAD + 8*(slot))
+#define CALLBACK_OFS2SLOT(ofs) (((ofs)-CALLBACK_MCODE_HEAD)/8)
+#define CALLBACK_MAX_SLOT  (CALLBACK_OFS2SLOT(CALLBACK_MCODE_SIZE))
+
+#elif LJ_TARGET_MIPS
+
+#define CALLBACK_MCODE_HEAD24
+#define CALLBACK_SLOT2OFS(slot)(CALLBACK_MCODE_HEAD + 8*(slot))
+#define CALLBACK_OFS2SLOT(ofs) (((ofs)-CALLBACK_MCODE_HEAD)/8)
+#define CALLBACK_MAX_SLOT  (CALLBACK_OFS2SLOT(CALLBACK_MCODE_SIZE))
+
+#else
+
+/* Missing support for this architecture. */
+#define CALLBACK_SLOT2OFS(slot)(0*(slot))
+#define CALLBACK_OFS2SLOT(ofs) (0*(ofs))
+#define CALLBACK_MAX_SLOT  0
+
+#endif
+
+/* Convert callback slot number to callback function pointer. */
+static void *callback_slot2ptr(CTState *cts, MSize slot)
+{
+  return (uint8_t *)cts-cb.mcode + CALLBACK_SLOT2OFS(slot);
+}
+
+/* Convert callback function pointer to slot number. */
+MSize lj_ccallback_ptr2slot(CTState *cts, void *p)
+{
+  uintptr_t ofs = (uintptr_t)((uint8_t *)p -(uint8_t *)cts-cb.mcode);
+  if (ofs  CALLBACK_MCODE_SIZE) {
+MSize slot = CALLBACK_OFS2SLOT((MSize)ofs);
+if (CALLBACK_SLOT2OFS(slot) == (MSize)ofs)
+  return slot;
+  }
+  return ~0u;  /* Not a known callback function pointer. */
+}
+
+/* Initialize machine code for callback function pointers. */
+#if LJ_OS_NOJIT
+/* Disabled callback support. */
+#define callback_mcode_init(g, p)  UNUSED(p)
+#elif LJ_TARGET_X86ORX64
+static void callback_mcode_init(global_State *g, uint8_t *page)
+{
+  uint8_t *p = page;
+  uint8_t *target = (uint8_t *)(void *)lj_vm_ffi_callback;
+  MSize slot;
+#if LJ_64
+  *(void **)p = target; p += 8;
+#endif
+  for (slot = 0; slot  CALLBACK_MAX_SLOT; slot++) {
+/* mov al, slot; jmp group */
+*p++ = XI_MOVrib | RID_EAX; *p++ = (uint8_t)slot;
+if ((slot  31) == 31 || slot == CALLBACK_MAX_SLOT-1) {
+  /* push ebp/rbp; mov ah, slot8; mov ebp, g. */
+  *p++ = XI_PUSH + RID_EBP;
+  *p++ = XI_MOVrib | (RID_EAX+4); *p++ = (uint8_t)(slot  8);
+  *p++ = XI_MOVri | RID_EBP;
+  *(int32_t *)p = i32ptr(g); p += 4;
+#if LJ_64
+  /* jmp [rip-pageofs] where lj_vm_ffi_callback is stored. */
+  *p++ = XI_GROUP5; *p++ = XM_OFS0 + (XOg_JMP3) + RID_EBP;
+  *(int32_t *)p = (int32_t)(page-(p+4)); p += 4;
+#else
+  /* jmp lj_vm_ffi_callback. */
+  *p++ = XI_JMP; *(int32_t *)p = target-(p+4); p += 4;
+#endif
+} else {
+  *p++ = XI_JMPs; *p++ = (uint8_t)((2+2)*(31-(slot31)) - 2);
+}
+  }
+  lua_assert(p - page = CALLBACK_MCODE_SIZE);
+}
+#elif LJ_TARGET_ARM
+static void callback_mcode_init(global_State *g, uint32_t *page)
+{
+  uint32_t *p = page;
+  void *target = (void *)lj_vm_ffi_callback;
+  MSize slot;
+  /* This must match with the saveregs macro in buildvm_arm.dasc. */
+  *p++ = ARMI_SUB|ARMF_D(RID_R12)|ARMF_N(RID_R12)|ARMF_M(RID_PC);
+  *p++ = 

[56/62] [abbrv] trafficserver git commit: Merge branch 'log-pqsp' of https://github.com/jwendell/trafficserver

2015-07-28 Thread zwoop
Merge branch 'log-pqsp' of https://github.com/jwendell/trafficserver


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/aa59a0d5
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/aa59a0d5
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/aa59a0d5

Branch: refs/heads/6.0.x
Commit: aa59a0d5274f54bff23b8af83a6fe020b39cf3df
Parents: a90403e 44da264
Author: Brian Geffon bri...@apache.org
Authored: Sun Jul 26 20:31:23 2015 -0700
Committer: Brian Geffon bri...@apache.org
Committed: Sun Jul 26 20:31:23 2015 -0700

--
 proxy/logging/Log.cc   |  5 +
 proxy/logging/LogAccess.cc |  9 +
 proxy/logging/LogAccess.h  |  1 +
 proxy/logging/LogAccessHttp.cc | 10 ++
 proxy/logging/LogAccessHttp.h  |  1 +
 5 files changed, 26 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/aa59a0d5/proxy/logging/Log.cc
--

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/aa59a0d5/proxy/logging/LogAccess.cc
--

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/aa59a0d5/proxy/logging/LogAccess.h
--

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/aa59a0d5/proxy/logging/LogAccessHttp.cc
--

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/aa59a0d5/proxy/logging/LogAccessHttp.h
--



[14/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_opt_fold.c
--
diff --git a/lib/luajit/src/lj_opt_fold.c b/lib/luajit/src/lj_opt_fold.c
new file mode 100644
index 000..d00fdd5
--- /dev/null
+++ b/lib/luajit/src/lj_opt_fold.c
@@ -0,0 +1,2304 @@
+/*
+** FOLD: Constant Folding, Algebraic Simplifications and Reassociation.
+** ABCelim: Array Bounds Check Elimination.
+** CSE: Common-Subexpression Elimination.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#define lj_opt_fold_c
+#define LUA_CORE
+
+#include math.h
+
+#include lj_obj.h
+
+#if LJ_HASJIT
+
+#include lj_str.h
+#include lj_tab.h
+#include lj_ir.h
+#include lj_jit.h
+#include lj_iropt.h
+#include lj_trace.h
+#if LJ_HASFFI
+#include lj_ctype.h
+#endif
+#include lj_carith.h
+#include lj_vm.h
+#include lj_strscan.h
+
+/* Here's a short description how the FOLD engine processes instructions:
+**
+** The FOLD engine receives a single instruction stored in fins (J-fold.ins).
+** The instruction and its operands are used to select matching fold rules.
+** These are applied iteratively until a fixed point is reached.
+**
+** The 8 bit opcode of the instruction itself plus the opcodes of the
+** two instructions referenced by its operands form a 24 bit key
+** 'ins left right' (unused operands - 0, literals - lowest 8 bits).
+**
+** This key is used for partial matching against the fold rules. The
+** left/right operand fields of the key are successively masked with
+** the 'any' wildcard, from most specific to least specific:
+**
+**   ins left right
+**   ins any  right
+**   ins left any
+**   ins any  any
+**
+** The masked key is used to lookup a matching fold rule in a semi-perfect
+** hash table. If a matching rule is found, the related fold function is run.
+** Multiple rules can share the same fold function. A fold rule may return
+** one of several special values:
+**
+** - NEXTFOLD means no folding was applied, because an additional test
+**   inside the fold function failed. Matching continues against less
+**   specific fold rules. Finally the instruction is passed on to CSE.
+**
+** - RETRYFOLD means the instruction was modified in-place. Folding is
+**   retried as if this instruction had just been received.
+**
+** All other return values are terminal actions -- no further folding is
+** applied:
+**
+** - INTFOLD(i) returns a reference to the integer constant i.
+**
+** - LEFTFOLD and RIGHTFOLD return the left/right operand reference
+**   without emitting an instruction.
+**
+** - CSEFOLD and EMITFOLD pass the instruction directly to CSE or emit
+**   it without passing through any further optimizations.
+**
+** - FAILFOLD, DROPFOLD and CONDFOLD only apply to instructions which have
+**   no result (e.g. guarded assertions): FAILFOLD means the guard would
+**   always fail, i.e. the current trace is pointless. DROPFOLD means
+**   the guard is always true and has been eliminated. CONDFOLD is a
+**   shortcut for FAILFOLD + cond (i.e. drop if true, otherwise fail).
+**
+** - Any other return value is interpreted as an IRRef or TRef. This
+**   can be a reference to an existing or a newly created instruction.
+**   Only the least-significant 16 bits (IRRef1) are used to form a TRef
+**   which is finally returned to the caller.
+**
+** The FOLD engine receives instructions both from the trace recorder and
+** substituted instructions from LOOP unrolling. This means all types
+** of instructions may end up here, even though the recorder bypasses
+** FOLD in some cases. Thus all loads, stores and allocations must have
+** an any/any rule to avoid being passed on to CSE.
+**
+** Carefully read the following requirements before adding or modifying
+** any fold rules:
+**
+** Requirement #1: All fold rules must preserve their destination type.
+**
+** Consistently use INTFOLD() (KINT result) or lj_ir_knum() (KNUM result).
+** Never use lj_ir_knumint() which can have either a KINT or KNUM result.
+**
+** Requirement #2: Fold rules should not create *new* instructions which
+** reference operands *across* PHIs.
+**
+** E.g. a RETRYFOLD with 'fins-op1 = fleft-op1' is invalid if the
+** left operand is a PHI. Then fleft-op1 would point across the PHI
+** frontier to an invariant instruction. Adding a PHI for this instruction
+** would be counterproductive. The solution is to add a barrier which
+** prevents folding across PHIs, i.e. 'PHIBARRIER(fleft)' in this case.
+** The only exception is for recurrences with high latencies like
+** repeated int-num-int conversions.
+**
+** One could relax this condition a bit if the referenced instruction is
+** a PHI, too. But this often leads to worse code due to excessive
+** register shuffling.
+**
+** Note: returning *existing* instructions (e.g. LEFTFOLD) is ok, though.
+** Even returning fleft-op1 would be ok, because a new PHI will added,
+** if needed. But again, this 

[38/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/dynasm/dasm_mips.lua
--
diff --git a/lib/luajit/dynasm/dasm_mips.lua b/lib/luajit/dynasm/dasm_mips.lua
new file mode 100644
index 000..ae0dbd7
--- /dev/null
+++ b/lib/luajit/dynasm/dasm_mips.lua
@@ -0,0 +1,953 @@
+--
+-- DynASM MIPS module.
+--
+-- Copyright (C) 2005-2015 Mike Pall. All rights reserved.
+-- See dynasm.lua for full copyright notice.
+--
+
+-- Module information:
+local _info = {
+  arch =   mips,
+  description =DynASM MIPS module,
+  version =1.3.0,
+  vernum =  10300,
+  release =2012-01-23,
+  author = Mike Pall,
+  license =MIT,
+}
+
+-- Exported glue functions for the arch-specific module.
+local _M = { _info = _info }
+
+-- Cache library functions.
+local type, tonumber, pairs, ipairs = type, tonumber, pairs, ipairs
+local assert, setmetatable = assert, setmetatable
+local _s = string
+local sub, format, byte, char = _s.sub, _s.format, _s.byte, _s.char
+local match, gmatch = _s.match, _s.gmatch
+local concat, sort = table.concat, table.sort
+local bit = bit or require(bit)
+local band, shl, sar, tohex = bit.band, bit.lshift, bit.arshift, bit.tohex
+
+-- Inherited tables and callbacks.
+local g_opt, g_arch
+local wline, werror, wfatal, wwarn
+
+-- Action name list.
+-- CHECK: Keep this in sync with the C code!
+local action_names = {
+  STOP, SECTION, ESC, REL_EXT,
+  ALIGN, REL_LG, LABEL_LG,
+  REL_PC, LABEL_PC, IMM,
+}
+
+-- Maximum number of section buffer positions for dasm_put().
+-- CHECK: Keep this in sync with the C code!
+local maxsecpos = 25 -- Keep this low, to avoid excessively long C lines.
+
+-- Action name - action number.
+local map_action = {}
+for n,name in ipairs(action_names) do
+  map_action[name] = n-1
+end
+
+-- Action list buffer.
+local actlist = {}
+
+-- Argument list for next dasm_put(). Start with offset 0 into action list.
+local actargs = { 0 }
+
+-- Current number of section buffer positions for dasm_put().
+local secpos = 1
+
+--
+
+-- Dump action names and numbers.
+local function dumpactions(out)
+  out:write(DynASM encoding engine action codes:\n)
+  for n,name in ipairs(action_names) do
+local num = map_action[name]
+out:write(format(  %-10s %02X  %d\n, name, num, num))
+  end
+  out:write(\n)
+end
+
+-- Write action list buffer as a huge static C array.
+local function writeactions(out, name)
+  local nn = #actlist
+  if nn == 0 then nn = 1; actlist[0] = map_action.STOP end
+  out:write(static const unsigned int , name, [, nn, ] = {\n)
+  for i = 1,nn-1 do
+assert(out:write(0x, tohex(actlist[i]), ,\n))
+  end
+  assert(out:write(0x, tohex(actlist[nn]), \n};\n\n))
+end
+
+--
+
+-- Add word to action list.
+local function wputxw(n)
+  assert(n = 0 and n = 0x and n % 1 == 0, word out of range)
+  actlist[#actlist+1] = n
+end
+
+-- Add action to list with optional arg. Advance buffer pos, too.
+local function waction(action, val, a, num)
+  local w = assert(map_action[action], bad action name `..action..')
+  wputxw(0xff00 + w * 0x1 + (val or 0))
+  if a then actargs[#actargs+1] = a end
+  if a or num then secpos = secpos + (num or 1) end
+end
+
+-- Flush action list (intervening C code or buffer pos overflow).
+local function wflush(term)
+  if #actlist == actargs[1] then return end -- Nothing to flush.
+  if not term then waction(STOP) end -- Terminate action list.
+  wline(format(dasm_put(Dst, %s);, concat(actargs, , )), true)
+  actargs = { #actlist } -- Actionlist offset is 1st arg to next dasm_put().
+  secpos = 1 -- The actionlist offset occupies a buffer position, too.
+end
+
+-- Put escaped word.
+local function wputw(n)
+  if n = 0xff00 then waction(ESC) end
+  wputxw(n)
+end
+
+-- Reserve position for word.
+local function wpos()
+  local pos = #actlist+1
+  actlist[pos] = 
+  return pos
+end
+
+-- Store word to reserved position.
+local function wputpos(pos, n)
+  assert(n = 0 and n = 0x and n % 1 == 0, word out of range)
+  actlist[pos] = n
+end
+
+--
+
+-- Global label name - global label number. With auto assignment on 1st use.
+local next_global = 20
+local map_global = setmetatable({}, { __index = function(t, name)
+  if not match(name, ^[%a_][%w_]*$) then werror(bad global label) end
+  local n = next_global
+  if n  2047 then werror(too many global labels) end
+  next_global = n + 1
+  t[name] = n
+  return n
+end})
+
+-- Dump global labels.
+local function dumpglobals(out, lvl)
+  local t = {}
+  for name, n in pairs(map_global) do t[n] = 

[60/62] [abbrv] trafficserver git commit: [TS-3802]: fix double free of MIOBuffer in SSLNetVConnection during SPDY inactivity.

2015-07-28 Thread zwoop
[TS-3802]: fix double free of MIOBuffer in SSLNetVConnection during SPDY 
inactivity.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/ec747924
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/ec747924
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/ec747924

Branch: refs/heads/6.0.x
Commit: ec7479243bead60a123e64dbef8b9d53fdade095
Parents: 0e703e1
Author: Sudheer Vinukonda sudhe...@yahoo-inc.com
Authored: Tue Jul 28 17:59:10 2015 +
Committer: Sudheer Vinukonda sudhe...@yahoo-inc.com
Committed: Tue Jul 28 17:59:10 2015 +

--
 proxy/spdy/SpdyClientSession.cc | 8 
 1 file changed, 8 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ec747924/proxy/spdy/SpdyClientSession.cc
--
diff --git a/proxy/spdy/SpdyClientSession.cc b/proxy/spdy/SpdyClientSession.cc
index d9db07f..60c8e20 100644
--- a/proxy/spdy/SpdyClientSession.cc
+++ b/proxy/spdy/SpdyClientSession.cc
@@ -482,6 +482,14 @@ spdy_process_fetch_body(TSEvent event, SpdyClientSession 
*sm, TSFetchSM fetch_sm
 void
 SpdyClientSession::do_io_close(int alertno)
 {
+  if (vc) {
+// vc is released (null'ed) within ProxyClientSession when handling
+// TS_HTTP_SSN_CLOSE_HOOK, so, reset ssl_iobuf to prevent double free
+SSLNetVConnection *ssl_vc = dynamic_castSSLNetVConnection *(vc);
+if (ssl_vc) {
+  ssl_vc-set_ssl_iobuf(NULL);
+}
+  }
   // The object will be cleaned up from within 
ProxyClientSession::handle_api_return
   // This way, the object will still be alive for any SSN_CLOSE hooks
   do_api_callout(TS_HTTP_SSN_CLOSE_HOOK);



[48/62] [abbrv] trafficserver git commit: TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a global continuation, saves a possible race condition

2015-07-28 Thread zwoop
TS-3729 cache_promote: defer TSHttpTxnServerRespNoStoreSet() to a global 
continuation, saves a possible race condition


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/3678a6e1
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/3678a6e1
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/3678a6e1

Branch: refs/heads/6.0.x
Commit: 3678a6e11b53520c35d06c7d8baed79f43f812e2
Parents: 5ae63a1
Author: Leif Hedstrom zw...@apache.org
Authored: Tue Jun 30 18:17:41 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Fri Jul 24 01:27:05 2015 -0600

--
 .../experimental/cache_promote/cache_promote.cc | 25 +++-
 1 file changed, 19 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/3678a6e1/plugins/experimental/cache_promote/cache_promote.cc
--
diff --git a/plugins/experimental/cache_promote/cache_promote.cc 
b/plugins/experimental/cache_promote/cache_promote.cc
index 9c2edb6..dab961d 100644
--- a/plugins/experimental/cache_promote/cache_promote.cc
+++ b/plugins/experimental/cache_promote/cache_promote.cc
@@ -34,6 +34,8 @@
 
 
 static const char *PLUGIN_NAME = cache_promote;
+TSCont gNocacheCont;
+
 
 
//
 // Note that all options for all policies has to go here. Not particularly 
pretty...
@@ -372,6 +374,20 @@ private:
 
 
 
//
+// Little helper continuation, to turn off writing to the cache. ToDo: when we 
have proper
+// APIs to make requests / responses, we can remove this completely.
+static int
+cont_nocache_response(TSCont contp, TSEvent event, void *edata)
+{
+  TSHttpTxn txnp = static_castTSHttpTxn(edata);
+
+  TSHttpTxnServerRespNoStoreSet(txnp, 1);
+  // Reenable and continue with the state machine.
+  TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
+  return 0;
+}
+
+//
 // Main plugin, a TXN hook in the TS_HTTP_READ_CACHE_HDR_HOOK. Unless the 
policy allows
 // caching, we will turn off the cache from here on for the TXN.
 //
@@ -399,7 +415,7 @@ cont_handle_policy(TSCont contp, TSEvent event, void *edata)
 TSDebug(PLUGIN_NAME, cache-status is %d, and leaving cache on 
(promoted), obj_status);
   } else {
 TSDebug(PLUGIN_NAME, cache-status is %d, and turning off the 
cache (not promoted), obj_status);
-TSHttpTxnHookAdd(txnp, TS_HTTP_READ_RESPONSE_HDR_HOOK, contp);
+TSHttpTxnHookAdd(txnp, TS_HTTP_READ_RESPONSE_HDR_HOOK, 
gNocacheCont);
   }
   break;
 default:
@@ -413,11 +429,6 @@ cont_handle_policy(TSCont contp, TSEvent event, void 
*edata)
 }
 break;
 
-  // Temporaray hack, to deal with the fact that we can turn off the cache 
earlier
-  case TS_EVENT_HTTP_READ_RESPONSE_HDR:
-TSHttpTxnServerRespNoStoreSet(txnp, 1);
-break;
-
   // Should not happen
   default:
 TSDebug(PLUGIN_NAME, Unhandled event %d, (int)event);
@@ -447,6 +458,8 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int 
errbuf_size)
 return TS_ERROR;
   }
 
+  gNocacheCont = TSContCreate(cont_nocache_response, NULL);
+
   TSDebug(PLUGIN_NAME, remap plugin is successfully initialized);
   return TS_SUCCESS; /* success */
 }



[54/62] [abbrv] trafficserver git commit: Revert TS-3584: SPDY and H2 requests should not trigger connection keep-alive.

2015-07-28 Thread zwoop
Revert TS-3584: SPDY and H2 requests should not trigger connection keep-alive.

This reverts commit dda6814f07ee59c9e3e452a649e6e7f80906457d.

Conflicts:

CHANGES


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0b160a7f
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0b160a7f
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0b160a7f

Branch: refs/heads/6.0.x
Commit: 0b160a7f3e438101a0be3937ad3e92ff186b614e
Parents: 5c60883
Author: shinrich shinr...@yahoo-inc.com
Authored: Fri Jul 24 09:51:46 2015 -0500
Committer: shinrich shinr...@yahoo-inc.com
Committed: Fri Jul 24 09:51:46 2015 -0500

--
 proxy/http2/HTTP2.cc   | 2 --
 proxy/spdy/SpdyCallbacks.cc| 3 ---
 proxy/spdy/SpdyClientSession.h | 2 +-
 3 files changed, 1 insertion(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0b160a7f/proxy/http2/HTTP2.cc
--
diff --git a/proxy/http2/HTTP2.cc b/proxy/http2/HTTP2.cc
index 6681308..f089081 100644
--- a/proxy/http2/HTTP2.cc
+++ b/proxy/http2/HTTP2.cc
@@ -544,8 +544,6 @@ convert_from_2_to_1_1_header(HTTPHdr *headers)
   headers-field_delete(MIME_FIELD_TRANSFER_ENCODING, 
MIME_LEN_TRANSFER_ENCODING);
   headers-field_delete(MIME_FIELD_UPGRADE, MIME_LEN_UPGRADE);
 
-  headers-value_set(MIME_FIELD_CONNECTION, MIME_LEN_CONNECTION, 
HTTP_VALUE_CLOSE, HTTP_LEN_CLOSE);
-
   return PARSE_DONE;
 }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0b160a7f/proxy/spdy/SpdyCallbacks.cc
--
diff --git a/proxy/spdy/SpdyCallbacks.cc b/proxy/spdy/SpdyCallbacks.cc
index 45213a3..69b40c8 100644
--- a/proxy/spdy/SpdyCallbacks.cc
+++ b/proxy/spdy/SpdyCallbacks.cc
@@ -297,8 +297,6 @@ spdy_process_syn_stream_frame(SpdyClientSession *sm, 
SpdyRequest *req)
   spdy_fetcher_launch(req);
 }
 
-static char const *const no_keep_alive[] = {Connection, close, NULL};
-
 void
 spdy_on_ctrl_recv_callback(spdylay_session *session, spdylay_frame_type type, 
spdylay_frame *frame, void *user_data)
 {
@@ -314,7 +312,6 @@ spdy_on_ctrl_recv_callback(spdylay_session *session, 
spdylay_frame_type type, sp
 req = spdyRequestAllocator.alloc();
 req-init(sm, stream_id);
 req-append_nv(frame-syn_stream.nv);
-req-append_nv(no_keep_alive);
 sm-req_map[stream_id] = req;
 sm-vc-add_to_active_queue();
 spdy_process_syn_stream_frame(sm, req);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0b160a7f/proxy/spdy/SpdyClientSession.h
--
diff --git a/proxy/spdy/SpdyClientSession.h b/proxy/spdy/SpdyClientSession.h
index 498f6d8..12a5c79 100644
--- a/proxy/spdy/SpdyClientSession.h
+++ b/proxy/spdy/SpdyClientSession.h
@@ -56,7 +56,7 @@ public:
   void clear();
 
   void
-  append_nv(const char *const *nv)
+  append_nv(char **nv)
   {
 for (int i = 0; nv[i]; i += 2) {
   headers.push_back(make_pair(nv[i], nv[i + 1]));



[61/62] [abbrv] trafficserver git commit: Fix the backout commit

2015-07-28 Thread zwoop
Fix the backout commit


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f86beac7
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f86beac7
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f86beac7

Branch: refs/heads/6.0.x
Commit: f86beac70ffb81b84662497827b1b0f338ebb41e
Parents: 13c76b3
Author: Leif Hedstrom zw...@apache.org
Authored: Tue Jul 28 17:38:37 2015 -0600
Committer: Leif Hedstrom zw...@apache.org
Committed: Tue Jul 28 17:38:37 2015 -0600

--
 iocore/net/SSLUtils.cc | 11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f86beac7/iocore/net/SSLUtils.cc
--
diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc
index 7ebce4b..e9f30a6 100644
--- a/iocore/net/SSLUtils.cc
+++ b/iocore/net/SSLUtils.cc
@@ -186,6 +186,14 @@ SSL_CTX_add_extra_chain_cert_file(SSL_CTX *ctx, const char 
*chainfile)
   return true;
 }
 
+bool
+ssl_session_timed_out(SSL_SESSION *session)
+{
+  return SSL_SESSION_get_timeout(session)  (long)(time(NULL) - 
SSL_SESSION_get_time(session));
+}
+
+static void ssl_rm_cached_session(SSL_CTX *ctx, SSL_SESSION *sess);
+
 static SSL_SESSION *
 ssl_get_cached_session(SSL *ssl, unsigned char *id, int len, int *copy)
 {
@@ -220,8 +228,7 @@ ssl_get_cached_session(SSL *ssl, unsigned char *id, int 
len, int *copy)
   } else {
 SSL_INCREMENT_DYN_STAT(ssl_session_cache_miss);
   }
-
-  return NULL;
+  return session;
 }
 
 static int



[35/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/host/buildvm.h
--
diff --git a/lib/luajit/src/host/buildvm.h b/lib/luajit/src/host/buildvm.h
new file mode 100644
index 000..b262185
--- /dev/null
+++ b/lib/luajit/src/host/buildvm.h
@@ -0,0 +1,104 @@
+/*
+** LuaJIT VM builder.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _BUILDVM_H
+#define _BUILDVM_H
+
+#include sys/types.h
+#include stdio.h
+#include stdlib.h
+#include string.h
+#include errno.h
+
+#include lj_def.h
+#include lj_arch.h
+
+/* Hardcoded limits. Increase as needed. */
+#define BUILD_MAX_RELOC200 /* Max. number of relocations. 
*/
+#define BUILD_MAX_FOLD 4096/* Max. number of fold rules. */
+
+/* Prefix for scanned library definitions. */
+#define LIBDEF_PREFIX  LJLIB_
+
+/* Prefix for scanned fold definitions. */
+#define FOLDDEF_PREFIX LJFOLD
+
+/* Prefixes for generated labels. */
+#define LABEL_PREFIX   lj_
+#define LABEL_PREFIX_BCLABEL_PREFIX BC_
+#define LABEL_PREFIX_FFLABEL_PREFIX ff_
+#define LABEL_PREFIX_CFLABEL_PREFIX cf_
+#define LABEL_PREFIX_FFH   LABEL_PREFIX ffh_
+#define LABEL_PREFIX_LIBCF LABEL_PREFIX lib_cf_
+#define LABEL_PREFIX_LIBINIT   LABEL_PREFIX lib_init_
+
+/* Forward declaration. */
+struct dasm_State;
+
+/* Build modes. */
+#define BUILDDEF(_) \
+  _(elfasm) _(coffasm) _(machasm) _(peobj) _(raw) \
+  _(bcdef) _(ffdef) _(libdef) _(recdef) _(vmdef) \
+  _(folddef)
+
+typedef enum {
+#define BUILDENUM(name)BUILD_##name,
+BUILDDEF(BUILDENUM)
+#undef BUILDENUM
+  BUILD__MAX
+} BuildMode;
+
+/* Code relocation. */
+typedef struct BuildReloc {
+  int32_t ofs;
+  int sym;
+  int type;
+} BuildReloc;
+
+typedef struct BuildSym {
+  const char *name;
+  int32_t ofs;
+} BuildSym;
+
+/* Build context structure. */
+typedef struct BuildCtx {
+  /* DynASM state pointer. Should be first member. */
+  struct dasm_State *D;
+  /* Parsed command line. */
+  BuildMode mode;
+  FILE *fp;
+  const char *outname;
+  char **args;
+  /* Code and symbols generated by DynASM. */
+  uint8_t *code;
+  size_t codesz;
+  int npc, nglob, nsym, nreloc, nrelocsym;
+  void **glob;
+  BuildSym *sym;
+  const char **relocsym;
+  int32_t *bc_ofs;
+  const char *beginsym;
+  /* Strings generated by DynASM. */
+  const char *const *globnames;
+  const char *dasm_ident;
+  const char *dasm_arch;
+  /* Relocations. */
+  BuildReloc reloc[BUILD_MAX_RELOC];
+} BuildCtx;
+
+extern void owrite(BuildCtx *ctx, const void *ptr, size_t sz);
+extern void emit_asm(BuildCtx *ctx);
+extern void emit_peobj(BuildCtx *ctx);
+extern void emit_lib(BuildCtx *ctx);
+extern void emit_fold(BuildCtx *ctx);
+
+extern const char *const bc_names[];
+extern const char *const ir_names[];
+extern const char *const irt_names[];
+extern const char *const irfpm_names[];
+extern const char *const irfield_names[];
+extern const char *const ircall_names[];
+
+#endif

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/host/buildvm_asm.c
--
diff --git a/lib/luajit/src/host/buildvm_asm.c 
b/lib/luajit/src/host/buildvm_asm.c
new file mode 100644
index 000..2c9a2d4
--- /dev/null
+++ b/lib/luajit/src/host/buildvm_asm.c
@@ -0,0 +1,313 @@
+/*
+** LuaJIT VM builder: Assembler source code emitter.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#include buildvm.h
+#include lj_bc.h
+
+/*  */
+
+#if LJ_TARGET_X86ORX64
+/* Emit bytes piecewise as assembler text. */
+static void emit_asm_bytes(BuildCtx *ctx, uint8_t *p, int n)
+{
+  int i;
+  for (i = 0; i  n; i++) {
+if ((i  15) == 0)
+  fprintf(ctx-fp, \t.byte %d, p[i]);
+else
+  fprintf(ctx-fp, ,%d, p[i]);
+if ((i  15) == 15) putc('\n', ctx-fp);
+  }
+  if ((n  15) != 0) putc('\n', ctx-fp);
+}
+
+/* Emit relocation */
+static void emit_asm_reloc(BuildCtx *ctx, int type, const char *sym)
+{
+  switch (ctx-mode) {
+  case BUILD_elfasm:
+if (type)
+  fprintf(ctx-fp, \t.long %s-.-4\n, sym);
+else
+  fprintf(ctx-fp, \t.long %s\n, sym);
+break;
+  case BUILD_coffasm:
+fprintf(ctx-fp, \t.def %s; .scl 3; .type 32; .endef\n, sym);
+if (type)
+  fprintf(ctx-fp, \t.long %s-.-4\n, sym);
+else
+  fprintf(ctx-fp, \t.long %s\n, sym);
+break;
+  default:  /* BUILD_machasm for relative relocations handled below. */
+fprintf(ctx-fp, \t.long %s\n, sym);
+break;
+  }
+}
+
+static const char *const jccnames[] = {
+  jo, jno, jb, jnb, jz, jnz, jbe, ja,
+  js, jns, jpe, jpo, jl, jge, jle, jg
+};
+
+/* Emit relocation for the incredibly stupid OSX assembler. */
+static void emit_asm_reloc_mach(BuildCtx *ctx, uint8_t *cp, int n,
+  

[26/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_asm_mips.h
--
diff --git a/lib/luajit/src/lj_asm_mips.h b/lib/luajit/src/lj_asm_mips.h
new file mode 100644
index 000..78bd26d
--- /dev/null
+++ b/lib/luajit/src/lj_asm_mips.h
@@ -0,0 +1,1977 @@
+/*
+** MIPS IR assembler (SSA IR - machine code).
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+/* -- Register allocator extensions --- */
+
+/* Allocate a register with a hint. */
+static Reg ra_hintalloc(ASMState *as, IRRef ref, Reg hint, RegSet allow)
+{
+  Reg r = IR(ref)-r;
+  if (ra_noreg(r)) {
+if (!ra_hashint(r)  !iscrossref(as, ref))
+  ra_sethint(IR(ref)-r, hint);  /* Propagate register hint. */
+r = ra_allocref(as, ref, allow);
+  }
+  ra_noweak(as, r);
+  return r;
+}
+
+/* Allocate a register or RID_ZERO. */
+static Reg ra_alloc1z(ASMState *as, IRRef ref, RegSet allow)
+{
+  Reg r = IR(ref)-r;
+  if (ra_noreg(r)) {
+if (!(allow  RSET_FPR)  irref_isk(ref)  IR(ref)-i == 0)
+  return RID_ZERO;
+r = ra_allocref(as, ref, allow);
+  } else {
+ra_noweak(as, r);
+  }
+  return r;
+}
+
+/* Allocate two source registers for three-operand instructions. */
+static Reg ra_alloc2(ASMState *as, IRIns *ir, RegSet allow)
+{
+  IRIns *irl = IR(ir-op1), *irr = IR(ir-op2);
+  Reg left = irl-r, right = irr-r;
+  if (ra_hasreg(left)) {
+ra_noweak(as, left);
+if (ra_noreg(right))
+  right = ra_alloc1z(as, ir-op2, rset_exclude(allow, left));
+else
+  ra_noweak(as, right);
+  } else if (ra_hasreg(right)) {
+ra_noweak(as, right);
+left = ra_alloc1z(as, ir-op1, rset_exclude(allow, right));
+  } else if (ra_hashint(right)) {
+right = ra_alloc1z(as, ir-op2, allow);
+left = ra_alloc1z(as, ir-op1, rset_exclude(allow, right));
+  } else {
+left = ra_alloc1z(as, ir-op1, allow);
+right = ra_alloc1z(as, ir-op2, rset_exclude(allow, left));
+  }
+  return left | (right  8);
+}
+
+/* -- Guard handling -- */
+
+/* Need some spare long-range jump slots, for out-of-range branches. */
+#define MIPS_SPAREJUMP 4
+
+/* Setup spare long-range jump slots per mcarea. */
+static void asm_sparejump_setup(ASMState *as)
+{
+  MCode *mxp = as-mcbot;
+  /* Assumes sizeof(MCLink) == 8. */
+  if (((uintptr_t)mxp  (LJ_PAGESIZE-1)) == 8) {
+lua_assert(MIPSI_NOP == 0);
+memset(mxp+2, 0, MIPS_SPAREJUMP*8);
+mxp += MIPS_SPAREJUMP*2;
+lua_assert(mxp  as-mctop);
+lj_mcode_sync(as-mcbot, mxp);
+lj_mcode_commitbot(as-J, mxp);
+as-mcbot = mxp;
+as-mclim = as-mcbot + MCLIM_REDZONE;
+  }
+}
+
+/* Setup exit stub after the end of each trace. */
+static void asm_exitstub_setup(ASMState *as)
+{
+  MCode *mxp = as-mctop;
+  /* sw TMP, 0(sp); j -vm_exit_handler; li TMP, traceno */
+  *--mxp = MIPSI_LI|MIPSF_T(RID_TMP)|as-T-traceno;
+  *--mxp = MIPSI_J|uintptr_t)(void *)lj_vm_exit_handler)2)0x03ffu);
+  lua_assert(((uintptr_t)mxp ^ (uintptr_t)(void *)lj_vm_exit_handler)28 == 
0);
+  *--mxp = MIPSI_SW|MIPSF_T(RID_TMP)|MIPSF_S(RID_SP)|0;
+  as-mctop = mxp;
+}
+
+/* Keep this in-sync with exitstub_trace_addr(). */
+#define asm_exitstub_addr(as)  ((as)-mctop)
+
+/* Emit conditional branch to exit for guard. */
+static void asm_guard(ASMState *as, MIPSIns mi, Reg rs, Reg rt)
+{
+  MCode *target = asm_exitstub_addr(as);
+  MCode *p = as-mcp;
+  if (LJ_UNLIKELY(p == as-invmcp)) {
+as-invmcp = NULL;
+as-loopinv = 1;
+as-mcp = p+1;
+mi = mi ^ ((mi28) == 1 ? 0x0400u : 0x0001u);  /* Invert cond. */
+target = p;  /* Patch target later in asm_loop_fixup. */
+  }
+  emit_ti(as, MIPSI_LI, RID_TMP, as-snapno);
+  emit_branch(as, mi, rs, rt, target);
+}
+
+/* -- Operand fusion -- */
+
+/* Limit linear search to this distance. Avoids O(n^2) behavior. */
+#define CONFLICT_SEARCH_LIM31
+
+/* Check if there's no conflicting instruction between curins and ref. */
+static int noconflict(ASMState *as, IRRef ref, IROp conflict)
+{
+  IRIns *ir = as-ir;
+  IRRef i = as-curins;
+  if (i  ref + CONFLICT_SEARCH_LIM)
+return 0;  /* Give up, ref is too far away. */
+  while (--i  ref)
+if (ir[i].o == conflict)
+  return 0;  /* Conflict found. */
+  return 1;  /* Ok, no conflict. */
+}
+
+/* Fuse the array base of colocated arrays. */
+static int32_t asm_fuseabase(ASMState *as, IRRef ref)
+{
+  IRIns *ir = IR(ref);
+  if (ir-o == IR_TNEW  ir-op1 = LJ_MAX_COLOSIZE 
+  !neverfuse(as)  noconflict(as, ref, IR_NEWREF))
+return (int32_t)sizeof(GCtab);
+  return 0;
+}
+
+/* Fuse array/hash/upvalue reference into register+offset operand. */
+static Reg asm_fuseahuref(ASMState *as, IRRef ref, int32_t *ofsp, RegSet allow)
+{
+  IRIns *ir = IR(ref);
+  if (ra_noreg(ir-r)) {
+if (ir-o == IR_AREF) {
+  if 

[45/62] [abbrv] trafficserver git commit: TS-3774: Fix memory leak issue in host file parsing for HostDB.

2015-07-28 Thread zwoop
TS-3774: Fix memory leak issue in host file parsing for HostDB.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/c36204d5
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/c36204d5
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/c36204d5

Branch: refs/heads/6.0.x
Commit: c36204d5abaf3d4c335dd885ace1e5d58b57d451
Parents: 3838cf2
Author: Alan M. Carroll a...@apache.org
Authored: Tue Jul 21 11:10:05 2015 -0500
Committer: Alan M. Carroll a...@apache.org
Committed: Thu Jul 23 15:43:50 2015 -0500

--
 iocore/hostdb/HostDB.cc   | 39 +++---
 iocore/hostdb/I_HostDBProcessor.h |  7 +-
 iocore/hostdb/P_HostDBProcessor.h |  4 +++-
 3 files changed, 31 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c36204d5/iocore/hostdb/HostDB.cc
--
diff --git a/iocore/hostdb/HostDB.cc b/iocore/hostdb/HostDB.cc
index bb438a1..0df0cd8 100644
--- a/iocore/hostdb/HostDB.cc
+++ b/iocore/hostdb/HostDB.cc
@@ -662,19 +662,13 @@ HostDBInfo *
 probe(ProxyMutex *mutex, HostDBMD5 const md5, bool ignore_timeout)
 {
   // If we have an entry in our hosts file, we don't need to bother with DNS
+  // Make a local copy/reference so we don't have to worry about updates.
   PtrRefCountedHostsFileMap current_host_file_map = hostDB.hosts_file_ptr;
 
   ts::ConstBuffer hname(md5.host_name, md5.host_len);
   HostsFileMap::iterator find_result = 
current_host_file_map-hosts_file_map.find(hname);
   if (find_result != current_host_file_map-hosts_file_map.end()) {
-// TODO: Something to make this not local :/
-static HostDBInfo r;
-r.round_robin = false;
-r.round_robin_elt = false;
-r.reverse_dns = false;
-r.is_srv = false;
-ats_ip_set(r.ip(), (*find_result).second);
-return r;
+return (find_result-second);
   }
 
   ink_assert(this_ethread() == hostDB.lock_for_bucket((int)(fold_md5(md5.hash) 
% hostDB.buckets))-thread_holding);
@@ -2731,8 +2725,6 @@ HostDBFileContinuation::destroy()
 // proceeding at a time in any case so we might as well make these
 // globals.
 int HostDBFileUpdateActive = 0;
-// map of hostname - IpAddr
-PtrRefCountedHostsFileMap parsed_hosts_file_ptr(new 
RefCountedHostsFileMap());
 
 // Actual ordering doesn't matter as long as it's consistent.
 bool
@@ -2743,7 +2735,7 @@ CmpMD5(INK_MD5 const lhs, INK_MD5 const rhs)
 
 
 void
-ParseHostLine(char *l)
+ParseHostLine(RefCountedHostsFileMap *map, char *l)
 {
   Tokenizer elts( \t);
   int n_elts = elts.Initialize(l, SHARE_TOKS);
@@ -2754,8 +2746,13 @@ ParseHostLine(char *l)
 for (int i = 1; i  n_elts; ++i) {
   ts::ConstBuffer name(elts[i], strlen(elts[i]));
   // If we don't have an entry already (host files only support single IPs 
for a given name)
-  if (parsed_hosts_file_ptr-hosts_file_map.find(name) == 
parsed_hosts_file_ptr-hosts_file_map.end()) {
-parsed_hosts_file_ptr-hosts_file_map[name] = ip;
+  if (map-hosts_file_map.find(name) == map-hosts_file_map.end()) {
+   HostsFileMap::mapped_type item = map-hosts_file_map[name];
+   item.round_robin = false;
+   item.round_robin_elt = false;
+item.reverse_dns = false;
+item.is_srv = false;
+ats_ip_set(item.ip(), ip);
   }
 }
   }
@@ -2765,6 +2762,8 @@ ParseHostLine(char *l)
 void
 ParseHostFile(char const *path)
 {
+  PtrRefCountedHostsFileMap parsed_hosts_file_ptr;
+
   // Test and set for update in progress.
   if (0 != ink_atomic_swap(HostDBFileUpdateActive, 1)) {
 Debug(hostdb, Skipped load of host file because update already in 
progress);
@@ -2780,6 +2779,7 @@ ParseHostFile(char const *path)
 // +1 in case no terminating newline
 int64_t size = info.st_size + 1;
 
+parsed_hosts_file_ptr = new RefCountedHostsFileMap;
 parsed_hosts_file_ptr-HostFileText = static_castchar 
*(ats_malloc(size));
 if (parsed_hosts_file_ptr-HostFileText) {
   char *base = parsed_hosts_file_ptr-HostFileText;
@@ -2805,7 +2805,7 @@ ParseHostFile(char const *path)
 while (base  spot  isspace(*base))
   ++base;// skip leading ws
 if (*base != '#'  base  spot) // non-empty non-comment line
-  ParseHostLine(base);
+  ParseHostLine(parsed_hosts_file_ptr, base);
 base = spot + 1;
   }
 
@@ -2815,10 +2815,15 @@ ParseHostFile(char const *path)
 }
   }
 
-  // Swap out hostDB's map for ours
+  // Rotate the host file maps down. We depend on two assumptions here -
+  // 1) Host files are not updated frequently. Even if updated via traffic_ctl 
that will be at least 5-10 seconds between reloads.
+  // 2) 

[53/62] [abbrv] trafficserver git commit: Revert TS-3640: Drupal auth fails over SPDY

2015-07-28 Thread zwoop
Revert TS-3640: Drupal auth fails over SPDY

This reverts commit c8bcd7006ffe66e4dd2d8f072da771cd947e4643.

Conflicts:

proxy/http/HttpSM.cc


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/5c60883e
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/5c60883e
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/5c60883e

Branch: refs/heads/6.0.x
Commit: 5c60883e8919383e61b0199a6289ddc40a3ddc5a
Parents: f40bd7c
Author: shinrich shinr...@yahoo-inc.com
Authored: Fri Jul 24 09:50:52 2015 -0500
Committer: shinrich shinr...@yahoo-inc.com
Committed: Fri Jul 24 09:50:52 2015 -0500

--
 proxy/http/HttpSM.cc | 16 +---
 1 file changed, 13 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5c60883e/proxy/http/HttpSM.cc
--
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 4ac8d4a..c9b1322 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -3173,9 +3173,19 @@ HttpSM::tunnel_handler_ua(int event, HttpTunnelConsumer 
*c)
 
   ink_assert(ua_entry-vc == c-vc);
   if (close_connection) {
-// If the client could be pipelining, we need to set the ua_session into 
half close mode
-
-if (t_state.client_info.pipeline_possible == true  c-producer-vc_type 
!= HT_STATIC  event == VC_EVENT_WRITE_COMPLETE) {
+// If the client could be pipelining or is doing a POST, we need to
+//   set the ua_session into half close mode
+
+// only external POSTs should be subject to this logic; ruling out 
internal POSTs here
+bool is_eligible_post_request = (t_state.method == HTTP_WKSIDX_POST);
+if (is_eligible_post_request) {
+  NetVConnection *vc = ua_session-get_netvc();
+  if (vc) {
+is_eligible_post_request = vc-get_is_internal_request() ? false : 
true;
+  }
+}
+if ((is_eligible_post_request || t_state.client_info.pipeline_possible == 
true)  c-producer-vc_type != HT_STATIC 
+event == VC_EVENT_WRITE_COMPLETE) {
   ua_session-set_half_close_flag();
 }
 



[29/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_alloc.c
--
diff --git a/lib/luajit/src/lj_alloc.c b/lib/luajit/src/lj_alloc.c
new file mode 100644
index 000..7c7ec67
--- /dev/null
+++ b/lib/luajit/src/lj_alloc.c
@@ -0,0 +1,1396 @@
+/*
+** Bundled memory allocator.
+**
+** Beware: this is a HEAVILY CUSTOMIZED version of dlmalloc.
+** The original bears the following remark:
+**
+**   This is a version (aka dlmalloc) of malloc/free/realloc written by
+**   Doug Lea and released to the public domain, as explained at
+**   http://creativecommons.org/licenses/publicdomain.
+**
+**   * Version pre-2.8.4 Wed Mar 29 19:46:29 2006(dl at gee)
+**
+** No additional copyright is claimed over the customizations.
+** Please do NOT bother the original author about this version here!
+**
+** If you want to use dlmalloc in another project, you should get
+** the original from: ftp://gee.cs.oswego.edu/pub/misc/
+** For thread-safe derivatives, take a look at:
+** - ptmalloc: http://www.malloc.de/
+** - nedmalloc: http://www.nedprod.com/programs/portable/nedmalloc/
+*/
+
+#define lj_alloc_c
+#define LUA_CORE
+
+/* To get the mremap prototype. Must be defined before any system includes. */
+#if defined(__linux__)  !defined(_GNU_SOURCE)
+#define _GNU_SOURCE
+#endif
+
+#include lj_def.h
+#include lj_arch.h
+#include lj_alloc.h
+
+#ifndef LUAJIT_USE_SYSMALLOC
+
+#define MAX_SIZE_T (~(size_t)0)
+#define MALLOC_ALIGNMENT   ((size_t)8U)
+
+#define DEFAULT_GRANULARITY((size_t)128U * (size_t)1024U)
+#define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U)
+#define DEFAULT_MMAP_THRESHOLD ((size_t)128U * (size_t)1024U)
+#define MAX_RELEASE_CHECK_RATE 255
+
+/* --- size_t and alignment properties  */
+
+/* The byte and bit size of a size_t */
+#define SIZE_T_SIZE(sizeof(size_t))
+#define SIZE_T_BITSIZE (sizeof(size_t)  3)
+
+/* Some constants coerced to size_t */
+/* Annoying but necessary to avoid errors on some platforms */
+#define SIZE_T_ZERO((size_t)0)
+#define SIZE_T_ONE ((size_t)1)
+#define SIZE_T_TWO ((size_t)2)
+#define TWO_SIZE_T_SIZES   (SIZE_T_SIZE1)
+#define FOUR_SIZE_T_SIZES  (SIZE_T_SIZE2)
+#define SIX_SIZE_T_SIZES   (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES)
+
+/* The bit mask value corresponding to MALLOC_ALIGNMENT */
+#define CHUNK_ALIGN_MASK   (MALLOC_ALIGNMENT - SIZE_T_ONE)
+
+/* the number of bytes to offset an address to align it */
+#define align_offset(A)\
+ size_t)(A)  CHUNK_ALIGN_MASK) == 0)? 0 :\
+  ((MALLOC_ALIGNMENT - ((size_t)(A)  CHUNK_ALIGN_MASK))  CHUNK_ALIGN_MASK))
+
+/* -- MMAP support --- */
+
+#define MFAIL  ((void *)(MAX_SIZE_T))
+#define CMFAIL ((char *)(MFAIL)) /* defined for convenience */
+
+#define IS_DIRECT_BIT  (SIZE_T_ONE)
+
+#if LJ_TARGET_WINDOWS
+
+#define WIN32_LEAN_AND_MEAN
+#include windows.h
+
+#if LJ_64
+
+/* Undocumented, but hey, that's what we all love so much about Windows. */
+typedef long (*PNTAVM)(HANDLE handle, void **addr, ULONG zbits,
+  size_t *size, ULONG alloctype, ULONG prot);
+static PNTAVM ntavm;
+
+/* Number of top bits of the lower 32 bits of an address that must be zero.
+** Apparently 0 gives us full 64 bit addresses and 1 gives us the lower 2GB.
+*/
+#define NTAVM_ZEROBITS 1
+
+static void INIT_MMAP(void)
+{
+  ntavm = (PNTAVM)GetProcAddress(GetModuleHandleA(ntdll.dll),
+NtAllocateVirtualMemory);
+}
+
+/* Win64 32 bit MMAP via NtAllocateVirtualMemory. */
+static LJ_AINLINE void *CALL_MMAP(size_t size)
+{
+  DWORD olderr = GetLastError();
+  void *ptr = NULL;
+  long st = ntavm(INVALID_HANDLE_VALUE, ptr, NTAVM_ZEROBITS, size,
+ MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
+  SetLastError(olderr);
+  return st == 0 ? ptr : MFAIL;
+}
+
+/* For direct MMAP, use MEM_TOP_DOWN to minimize interference */
+static LJ_AINLINE void *DIRECT_MMAP(size_t size)
+{
+  DWORD olderr = GetLastError();
+  void *ptr = NULL;
+  long st = ntavm(INVALID_HANDLE_VALUE, ptr, NTAVM_ZEROBITS, size,
+ MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, PAGE_READWRITE);
+  SetLastError(olderr);
+  return st == 0 ? ptr : MFAIL;
+}
+
+#else
+
+#define INIT_MMAP()((void)0)
+
+/* Win32 MMAP via VirtualAlloc */
+static LJ_AINLINE void *CALL_MMAP(size_t size)
+{
+  DWORD olderr = GetLastError();
+  void *ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
+  SetLastError(olderr);
+  return ptr ? ptr : MFAIL;
+}
+
+/* For direct MMAP, use MEM_TOP_DOWN to minimize interference */
+static LJ_AINLINE void *DIRECT_MMAP(size_t size)
+{
+  DWORD olderr = GetLastError();
+  void *ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
+

[08/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_tab.c
--
diff --git a/lib/luajit/src/lj_tab.c b/lib/luajit/src/lj_tab.c
new file mode 100644
index 000..a8062db
--- /dev/null
+++ b/lib/luajit/src/lj_tab.c
@@ -0,0 +1,631 @@
+/*
+** Table handling.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+**
+** Major portions taken verbatim or adapted from the Lua interpreter.
+** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
+*/
+
+#define lj_tab_c
+#define LUA_CORE
+
+#include lj_obj.h
+#include lj_gc.h
+#include lj_err.h
+#include lj_tab.h
+
+/* -- Object hashing -- */
+
+/* Hash values are masked with the table hash mask and used as an index. */
+static LJ_AINLINE Node *hashmask(const GCtab *t, uint32_t hash)
+{
+  Node *n = noderef(t-node);
+  return n[hash  t-hmask];
+}
+
+/* String hashes are precomputed when they are interned. */
+#define hashstr(t, s)  hashmask(t, (s)-hash)
+
+#define hashlohi(t, lo, hi)hashmask((t), hashrot((lo), (hi)))
+#define hashnum(t, o)  hashlohi((t), (o)-u32.lo, ((o)-u32.hi  1))
+#define hashptr(t, p)  hashlohi((t), u32ptr(p), u32ptr(p) + HASH_BIAS)
+#define hashgcref(t, r)hashlohi((t), gcrefu(r), gcrefu(r) + 
HASH_BIAS)
+
+/* Hash an arbitrary key and return its anchor position in the hash table. */
+static Node *hashkey(const GCtab *t, cTValue *key)
+{
+  lua_assert(!tvisint(key));
+  if (tvisstr(key))
+return hashstr(t, strV(key));
+  else if (tvisnum(key))
+return hashnum(t, key);
+  else if (tvisbool(key))
+return hashmask(t, boolV(key));
+  else
+return hashgcref(t, key-gcr);
+  /* Only hash 32 bits of lightuserdata on a 64 bit CPU. Good enough? */
+}
+
+/* -- Table creation and destruction -- */
+
+/* Create new hash part for table. */
+static LJ_AINLINE void newhpart(lua_State *L, GCtab *t, uint32_t hbits)
+{
+  uint32_t hsize;
+  Node *node;
+  lua_assert(hbits != 0);
+  if (hbits  LJ_MAX_HBITS)
+lj_err_msg(L, LJ_ERR_TABOV);
+  hsize = 1u  hbits;
+  node = lj_mem_newvec(L, hsize, Node);
+  setmref(node-freetop, node[hsize]);
+  setmref(t-node, node);
+  t-hmask = hsize-1;
+}
+
+/*
+** Q: Why all of these copies of t-hmask, t-node etc. to local variables?
+** A: Because alias analysis for C is _really_ tough.
+**Even state-of-the-art C compilers won't produce good code without this.
+*/
+
+/* Clear hash part of table. */
+static LJ_AINLINE void clearhpart(GCtab *t)
+{
+  uint32_t i, hmask = t-hmask;
+  Node *node = noderef(t-node);
+  lua_assert(t-hmask != 0);
+  for (i = 0; i = hmask; i++) {
+Node *n = node[i];
+setmref(n-next, NULL);
+setnilV(n-key);
+setnilV(n-val);
+  }
+}
+
+/* Clear array part of table. */
+static LJ_AINLINE void clearapart(GCtab *t)
+{
+  uint32_t i, asize = t-asize;
+  TValue *array = tvref(t-array);
+  for (i = 0; i  asize; i++)
+setnilV(array[i]);
+}
+
+/* Create a new table. Note: the slots are not initialized (yet). */
+static GCtab *newtab(lua_State *L, uint32_t asize, uint32_t hbits)
+{
+  GCtab *t;
+  /* First try to colocate the array part. */
+  if (LJ_MAX_COLOSIZE != 0  asize  0  asize = LJ_MAX_COLOSIZE) {
+lua_assert((sizeof(GCtab)  7) == 0);
+t = (GCtab *)lj_mem_newgco(L, sizetabcolo(asize));
+t-gct = ~LJ_TTAB;
+t-nomm = (uint8_t)~0;
+t-colo = (int8_t)asize;
+setmref(t-array, (TValue *)((char *)t + sizeof(GCtab)));
+setgcrefnull(t-metatable);
+t-asize = asize;
+t-hmask = 0;
+setmref(t-node, G(L)-nilnode);
+  } else {  /* Otherwise separately allocate the array part. */
+t = lj_mem_newobj(L, GCtab);
+t-gct = ~LJ_TTAB;
+t-nomm = (uint8_t)~0;
+t-colo = 0;
+setmref(t-array, NULL);
+setgcrefnull(t-metatable);
+t-asize = 0;  /* In case the array allocation fails. */
+t-hmask = 0;
+setmref(t-node, G(L)-nilnode);
+if (asize  0) {
+  if (asize  LJ_MAX_ASIZE)
+   lj_err_msg(L, LJ_ERR_TABOV);
+  setmref(t-array, lj_mem_newvec(L, asize, TValue));
+  t-asize = asize;
+}
+  }
+  if (hbits)
+newhpart(L, t, hbits);
+  return t;
+}
+
+/* Create a new table.
+**
+** IMPORTANT NOTE: The API differs from lua_createtable()!
+**
+** The array size is non-inclusive. E.g. asize=128 creates array slots
+** for 0..127, but not for 128. If you need slots 1..128, pass asize=129
+** (slot 0 is wasted in this case).
+**
+** The hash size is given in hash bits. hbits=0 means no hash part.
+** hbits=1 creates 2 hash slots, hbits=2 creates 4 hash slots and so on.
+*/
+GCtab *lj_tab_new(lua_State *L, uint32_t asize, uint32_t hbits)
+{
+  GCtab *t = newtab(L, asize, hbits);
+  clearapart(t);
+  if (t-hmask  0) clearhpart(t);
+  return t;
+}
+
+#if LJ_HASJIT
+GCtab * LJ_FASTCALL lj_tab_new1(lua_State *L, uint32_t ahsize)
+{
+  GCtab *t = 

[17/62] [abbrv] trafficserver git commit: TS-3783 TS-3030 Add luajit v2.0.4 as a subtree

2015-07-28 Thread zwoop
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1f27b840/lib/luajit/src/lj_frame.h
--
diff --git a/lib/luajit/src/lj_frame.h b/lib/luajit/src/lj_frame.h
new file mode 100644
index 000..cd57be2
--- /dev/null
+++ b/lib/luajit/src/lj_frame.h
@@ -0,0 +1,183 @@
+/*
+** Stack frames.
+** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _LJ_FRAME_H
+#define _LJ_FRAME_H
+
+#include lj_obj.h
+#include lj_bc.h
+
+/* -- Lua stack frame - */
+
+/* Frame type markers in callee function slot (callee base-1). */
+enum {
+  FRAME_LUA, FRAME_C, FRAME_CONT, FRAME_VARG,
+  FRAME_LUAP, FRAME_CP, FRAME_PCALL, FRAME_PCALLH
+};
+#define FRAME_TYPE 3
+#define FRAME_P4
+#define FRAME_TYPEP(FRAME_TYPE|FRAME_P)
+
+/* Macros to access and modify Lua frames. */
+#define frame_gc(f)(gcref((f)-fr.func))
+#define frame_func(f)  (frame_gc(f)-fn)
+#define frame_ftsz(f)  ((f)-fr.tp.ftsz)
+
+#define frame_type(f)  (frame_ftsz(f)  FRAME_TYPE)
+#define frame_typep(f) (frame_ftsz(f)  FRAME_TYPEP)
+#define frame_islua(f) (frame_type(f) == FRAME_LUA)
+#define frame_isc(f)   (frame_type(f) == FRAME_C)
+#define frame_iscont(f)(frame_typep(f) == FRAME_CONT)
+#define frame_isvarg(f)(frame_typep(f) == FRAME_VARG)
+#define frame_ispcall(f)   ((frame_ftsz(f)  6) == FRAME_PCALL)
+
+#define frame_pc(f)(mref((f)-fr.tp.pcr, const BCIns))
+#define frame_contpc(f)(frame_pc((f)-1))
+#if LJ_64
+#define frame_contf(f) \
+  ((ASMFunction)(void *)((intptr_t)lj_vm_asm_begin + \
+(intptr_t)(int32_t)((f)-1)-u32.lo))
+#else
+#define frame_contf(f) ((ASMFunction)gcrefp(((f)-1)-gcr, void))
+#endif
+#define frame_delta(f) (frame_ftsz(f)  3)
+#define frame_sized(f) (frame_ftsz(f)  ~FRAME_TYPEP)
+
+#define frame_prevl(f) ((f) - (1+bc_a(frame_pc(f)[-1])))
+#define frame_prevd(f) ((TValue *)((char *)(f) - frame_sized(f)))
+#define frame_prev(f)  (frame_islua(f)?frame_prevl(f):frame_prevd(f))
+/* Note: this macro does not skip over FRAME_VARG. */
+
+#define setframe_pc(f, pc) (setmref((f)-fr.tp.pcr, (pc)))
+#define setframe_ftsz(f, sz)   ((f)-fr.tp.ftsz = (sz))
+#define setframe_gc(f, p)  (setgcref((f)-fr.func, (p)))
+
+/* -- C stack frame --- */
+
+/* Macros to access and modify the C stack frame chain. */
+
+/* These definitions must match with the arch-specific *.dasc files. */
+#if LJ_TARGET_X86
+#define CFRAME_OFS_ERRF(15*4)
+#define CFRAME_OFS_NRES(14*4)
+#define CFRAME_OFS_PREV(13*4)
+#define CFRAME_OFS_L   (12*4)
+#define CFRAME_OFS_PC  (6*4)
+#define CFRAME_OFS_MULTRES (5*4)
+#define CFRAME_SIZE(12*4)
+#define CFRAME_SHIFT_MULTRES   0
+#elif LJ_TARGET_X64
+#if LJ_ABI_WIN
+#define CFRAME_OFS_PREV(13*8)
+#define CFRAME_OFS_PC  (25*4)
+#define CFRAME_OFS_L   (24*4)
+#define CFRAME_OFS_ERRF(23*4)
+#define CFRAME_OFS_NRES(22*4)
+#define CFRAME_OFS_MULTRES (21*4)
+#define CFRAME_SIZE(10*8)
+#define CFRAME_SIZE_JIT(CFRAME_SIZE + 9*16 + 4*8)
+#define CFRAME_SHIFT_MULTRES   0
+#else
+#define CFRAME_OFS_PREV(4*8)
+#define CFRAME_OFS_PC  (7*4)
+#define CFRAME_OFS_L   (6*4)
+#define CFRAME_OFS_ERRF(5*4)
+#define CFRAME_OFS_NRES(4*4)
+#define CFRAME_OFS_MULTRES (1*4)
+#define CFRAME_SIZE(10*8)
+#define CFRAME_SIZE_JIT(CFRAME_SIZE + 16)
+#define CFRAME_SHIFT_MULTRES   0
+#endif
+#elif LJ_TARGET_ARM
+#define CFRAME_OFS_ERRF24
+#define CFRAME_OFS_NRES20
+#define CFRAME_OFS_PREV16
+#define CFRAME_OFS_L   12
+#define CFRAME_OFS_PC  8
+#define CFRAME_OFS_MULTRES 4
+#if LJ_ARCH_HASFPU
+#define CFRAME_SIZE128
+#else
+#define CFRAME_SIZE64
+#endif
+#define CFRAME_SHIFT_MULTRES   3
+#elif LJ_TARGET_PPC
+#if LJ_TARGET_XBOX360
+#define CFRAME_OFS_ERRF424
+#define CFRAME_OFS_NRES420
+#define CFRAME_OFS_PREV400
+#define CFRAME_OFS_L   416
+#define CFRAME_OFS_PC  412
+#define CFRAME_OFS_MULTRES 408
+#define CFRAME_SIZE384
+#define CFRAME_SHIFT_MULTRES   3
+#elif LJ_ARCH_PPC64
+#define CFRAME_OFS_ERRF472
+#define CFRAME_OFS_NRES468
+#define CFRAME_OFS_PREV448
+#define CFRAME_OFS_L   464
+#define CFRAME_OFS_PC  460
+#define CFRAME_OFS_MULTRES 456
+#define CFRAME_SIZE400
+#define CFRAME_SHIFT_MULTRES   3
+#else
+#define 

[43/62] [abbrv] trafficserver git commit: TS-3793: Check the incoming header request length for HTTP/2 requests

2015-07-28 Thread zwoop
TS-3793: Check the incoming header request length for HTTP/2 requests


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1cb87d28
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1cb87d28
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1cb87d28

Branch: refs/heads/6.0.x
Commit: 1cb87d281fef19c4e4e0a97c071fb0bcdad84365
Parents: 1f27b84
Author: Bryan Call bc...@apache.org
Authored: Thu Jul 23 19:42:25 2015 +0200
Committer: Bryan Call bc...@apache.org
Committed: Thu Jul 23 19:45:53 2015 +0200

--
 proxy/http2/HTTP2.cc|  2 ++
 proxy/http2/HTTP2.h |  1 +
 proxy/http2/Http2ConnectionState.cc | 14 ++
 proxy/http2/Http2ConnectionState.h  |  3 +++
 4 files changed, 20 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1cb87d28/proxy/http2/HTTP2.cc
--
diff --git a/proxy/http2/HTTP2.cc b/proxy/http2/HTTP2.cc
index e7db7cb..6681308 100644
--- a/proxy/http2/HTTP2.cc
+++ b/proxy/http2/HTTP2.cc
@@ -762,6 +762,7 @@ uint32_t Http2::initial_window_size = 1048576;
 uint32_t Http2::max_frame_size = 16384;
 uint32_t Http2::header_table_size = 4096;
 uint32_t Http2::max_header_list_size = 4294967295;
+uint32_t Http2::max_request_header_size = 131072;
 
 void
 Http2::init()
@@ -771,6 +772,7 @@ Http2::init()
   REC_EstablishStaticConfigInt32U(max_frame_size, 
proxy.config.http2.max_frame_size);
   REC_EstablishStaticConfigInt32U(header_table_size, 
proxy.config.http2.header_table_size);
   REC_EstablishStaticConfigInt32U(max_header_list_size, 
proxy.config.http2.max_header_list_size);
+  REC_EstablishStaticConfigInt32U(max_request_header_size, 
proxy.config.http.request_header_max_size);
 
   // Setup statistics
   http2_rsb = RecAllocateRawStatBlock(static_castint(HTTP2_N_STATS));

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1cb87d28/proxy/http2/HTTP2.h
--
diff --git a/proxy/http2/HTTP2.h b/proxy/http2/HTTP2.h
index bdaf6f2..a577a15 100644
--- a/proxy/http2/HTTP2.h
+++ b/proxy/http2/HTTP2.h
@@ -314,6 +314,7 @@ public:
   static uint32_t max_frame_size;
   static uint32_t header_table_size;
   static uint32_t max_header_list_size;
+  static uint32_t max_request_header_size;
 
   static void init();
 };

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1cb87d28/proxy/http2/Http2ConnectionState.cc
--
diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index c45ee32..eb24735 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -169,6 +169,13 @@ rcv_headers_frame(Http2ClientSession cs, 
Http2ConnectionState cstate, const Ht
 return HTTP2_ERROR_PROTOCOL_ERROR;
   }
 
+  // keep track of how many bytes we get in the frame
+  stream-request_header_length += payload_length;
+  if (stream-request_header_length  Http2::max_request_header_size) {
+Error(HTTP/2 payload for headers exceeded: %u, 
stream-request_header_length);
+return HTTP2_ERROR_PROTOCOL_ERROR;
+  }
+
   // A receiver MUST treat the receipt of any other type of frame or
   // a frame on a different stream as a connection error of type 
PROTOCOL_ERROR.
   if (cstate.get_continued_id() != 0) {
@@ -540,6 +547,13 @@ rcv_continuation_frame(Http2ClientSession cs, 
Http2ConnectionState cstate, con
 unsigned read_bytes = read_rcv_buffer(buf + remaining_bytes, sizeof(buf) - 
remaining_bytes, nbytes, frame);
 IOVec header_block_fragment = make_iovec(buf, read_bytes + 
remaining_bytes);
 
+// keep track of how many bytes we get in the frame
+stream-request_header_length += frame.header().length;
+if (stream-request_header_length  Http2::max_request_header_size) {
+  Error(HTTP/2 payload for headers exceeded: %u, 
stream-request_header_length);
+  return HTTP2_ERROR_PROTOCOL_ERROR;
+}
+
 bool cont = nbytes  frame.header().length || !(frame.header().flags  
HTTP2_FLAGS_HEADERS_END_HEADERS);
 int64_t decoded_bytes = 
stream-decode_request_header(header_block_fragment, 
*cstate.local_dynamic_table, cont);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1cb87d28/proxy/http2/Http2ConnectionState.h
--
diff --git a/proxy/http2/Http2ConnectionState.h 
b/proxy/http2/Http2ConnectionState.h
index 9c05ab4..42f05f4 100644
--- a/proxy/http2/Http2ConnectionState.h
+++ b/proxy/http2/Http2ConnectionState.h
@@ -106,6 +106,7 @@ public:
 HTTP2_INCREMENT_THREAD_DYN_STAT(HTTP2_STAT_CURRENT_CLIENT_STREAM_COUNT, 
_thread);
 _start_time = ink_hrtime();