summaryrefslogtreecommitdiffstats
path: root/lib/libsqlite3/tool/vdbe-compress.tcl
diff options
context:
space:
mode:
authorsthen <sthen@openbsd.org>2016-09-23 09:21:58 +0000
committersthen <sthen@openbsd.org>2016-09-23 09:21:58 +0000
commit25e4f8ab5acd0ef40feec6767a572bebbbe294b3 (patch)
tree20197c0e46bb6d260f4a310b6d5dd73b8d826f01 /lib/libsqlite3/tool/vdbe-compress.tcl
parentremove usr.bin/sqlite3, it has moved back to ports (diff)
downloadwireguard-openbsd-25e4f8ab5acd0ef40feec6767a572bebbbe294b3.tar.xz
wireguard-openbsd-25e4f8ab5acd0ef40feec6767a572bebbbe294b3.zip
remove lib/libsqlite3, it has moved back to ports
Diffstat (limited to 'lib/libsqlite3/tool/vdbe-compress.tcl')
-rw-r--r--lib/libsqlite3/tool/vdbe-compress.tcl143
1 files changed, 0 insertions, 143 deletions
diff --git a/lib/libsqlite3/tool/vdbe-compress.tcl b/lib/libsqlite3/tool/vdbe-compress.tcl
deleted file mode 100644
index 9477f4afe62..00000000000
--- a/lib/libsqlite3/tool/vdbe-compress.tcl
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/tcl
-#
-# This script makes modifications to the vdbe.c source file which reduce
-# the amount of stack space required by the sqlite3VdbeExec() routine.
-#
-# The modifications performed by this script are optional. The vdbe.c
-# source file will compile correctly with and without the modifications
-# performed by this script. And all routines within vdbe.c will compute
-# the same result. The modifications made by this script merely help
-# the C compiler to generate code for sqlite3VdbeExec() that uses less
-# stack space.
-#
-# Script usage:
-#
-# mv vdbe.c vdbe.c.template
-# tclsh vdbe-compress.tcl $CFLAGS <vdbe.c.template >vdbe.c
-#
-# Modifications made:
-#
-# All modifications are within the sqlite3VdbeExec() function. The
-# modifications seek to reduce the amount of stack space allocated by
-# this routine by moving local variable declarations out of individual
-# opcode implementations and into a single large union. The union contains
-# a separate structure for each opcode and that structure contains the
-# local variables used by that opcode. In this way, the total amount
-# of stack space required by sqlite3VdbeExec() is reduced from the
-# sum of all local variables to the maximum of the local variable space
-# required for any single opcode.
-#
-# In order to be recognized by this script, local variables must appear
-# on the first line after the open curly-brace that begins a new opcode
-# implementation. Local variables must not have initializers, though they
-# may be commented.
-#
-# The union definition is inserted in place of a special marker comment
-# in the preamble to the sqlite3VdbeExec() implementation.
-#
-#############################################################################
-#
-set beforeUnion {} ;# C code before union
-set unionDef {} ;# C code of the union
-set afterUnion {} ;# C code after the union
-set sCtr 0 ;# Context counter
-
-# If the SQLITE_SMALL_STACK compile-time option is missing, then
-# this transformation becomes a no-op.
-#
-if {![regexp {SQLITE_SMALL_STACK} $argv]} {
- while {![eof stdin]} {
- puts [gets stdin]
- }
- exit
-}
-
-# Read program text up to the spot where the union should be
-# inserted.
-#
-while {![eof stdin]} {
- set line [gets stdin]
- if {[regexp {INSERT STACK UNION HERE} $line]} break
- append beforeUnion $line\n
-}
-
-# Process the remaining text. Build up the union definition as we go.
-#
-set vlist {}
-set seenDecl 0
-set namechars {abcdefghijklmnopqrstuvwxyz}
-set nnc [string length $namechars]
-while {![eof stdin]} {
- set line [gets stdin]
- if {[regexp "^case (OP_\\w+): \173" $line all operator]} {
- append afterUnion $line\n
- set vlist {}
- while {![eof stdin]} {
- set line [gets stdin]
- if {[regexp {^ +(const )?\w+ \**(\w+)(\[.*\])?;} $line \
- all constKeyword vname notused1]} {
- if {!$seenDecl} {
- set sname {}
- append sname [string index $namechars [expr {$sCtr/$nnc}]]
- append sname [string index $namechars [expr {$sCtr%$nnc}]]
- incr sCtr
- append unionDef " struct ${operator}_stack_vars \173\n"
- append afterUnion \
- "#if 0 /* local variables moved into u.$sname */\n"
- set seenDecl 1
- }
- append unionDef " $line\n"
- append afterUnion $line\n
- lappend vlist $vname
- } elseif {[regexp {^#(if|endif)} $line] && [llength $vlist]>0} {
- append unionDef "$line\n"
- append afterUnion $line\n
- } else {
- break
- }
- }
- if {$seenDecl} {
- append unionDef " \175 $sname;\n"
- append afterUnion "#endif /* local variables moved into u.$sname */\n"
- }
- set seenDecl 0
- }
- if {[regexp "^\175" $line]} {
- append afterUnion $line\n
- set vlist {}
- } elseif {[llength $vlist]>0} {
- append line " "
- foreach v $vlist {
- regsub -all "(\[^a-zA-Z0-9>.\])${v}(\\W)" $line "\\1u.$sname.$v\\2" line
- regsub -all "(\[^a-zA-Z0-9>.\])${v}(\\W)" $line "\\1u.$sname.$v\\2" line
-
- # The expressions above fail to catch instance of variable "abc" in
- # expressions like (32>abc). The following expression makes those
- # substitutions.
- regsub -all "(\[^-\])>${v}(\\W)" $line "\\1>u.$sname.$v\\2" line
- }
- append afterUnion [string trimright $line]\n
- } elseif {$line=="" && [eof stdin]} {
- # no-op
- } else {
- append afterUnion $line\n
- }
-}
-
-# Output the resulting text.
-#
-puts -nonewline $beforeUnion
-puts " /********************************************************************"
-puts " ** Automatically generated code"
-puts " **"
-puts " ** The following union is automatically generated by the"
-puts " ** vdbe-compress.tcl script. The purpose of this union is to"
-puts " ** reduce the amount of stack space required by this function."
-puts " ** See comments in the vdbe-compress.tcl script for details."
-puts " */"
-puts " union vdbeExecUnion \173"
-puts -nonewline $unionDef
-puts " \175 u;"
-puts " /* End automatically generated code"
-puts " ********************************************************************/"
-puts -nonewline $afterUnion