mirror of
https://github.com/wg/wrk
synced 2026-06-10 00:55:51 +08:00
Compare commits
25 Commits
+13
@@ -1,3 +1,16 @@
|
|||||||
*.o
|
*.o
|
||||||
*.a
|
*.a
|
||||||
wrk
|
wrk
|
||||||
|
|
||||||
|
deps/luajit/src/host/buildvm
|
||||||
|
deps/luajit/src/host/buildvm_arch.h
|
||||||
|
deps/luajit/src/host/minilua
|
||||||
|
deps/luajit/src/jit/vmdef.lua
|
||||||
|
deps/luajit/src/lj_bcdef.h
|
||||||
|
deps/luajit/src/lj_ffdef.h
|
||||||
|
deps/luajit/src/lj_folddef.h
|
||||||
|
deps/luajit/src/lj_libdef.h
|
||||||
|
deps/luajit/src/lj_recdef.h
|
||||||
|
deps/luajit/src/lj_vm.s
|
||||||
|
deps/luajit/src/lua/
|
||||||
|
deps/luajit/src/luajit
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
wrk 4.0.0
|
||||||
|
|
||||||
|
* The wrk global variable is the only global defined by default.
|
||||||
|
* wrk.init() calls the global init(), remove calls to wrk.init().
|
||||||
|
* Add wrk.lookup(host, port) and wrk.connect(addr) functions.
|
||||||
|
* Add setup phase that calls the global setup() for each thread.
|
||||||
|
* Allow assignment to thread.addr to specify the server address.
|
||||||
|
* Add thread:set(name, value), thread:get(name), and thread:stop().
|
||||||
|
* Record latency for every request instead of random samples.
|
||||||
|
* Latency and requests in done() are now callable, not indexable.
|
||||||
|
* Only record timeouts when a response is actually received.
|
||||||
|
* Remove calibration phase and record rate at fixed interval.
|
||||||
|
* Improve correction of coordinated omission.
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
Apache License
|
Modified Apache 2.0 License
|
||||||
Version 2.0, January 2004
|
Version 2.0.1, February 2015
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
@@ -121,6 +120,12 @@
|
|||||||
that such additional attribution notices cannot be construed
|
that such additional attribution notices cannot be construed
|
||||||
as modifying the License.
|
as modifying the License.
|
||||||
|
|
||||||
|
(e) If the Derivative Work includes substantial changes to features
|
||||||
|
or functionality of the Work, then you must remove the name of
|
||||||
|
the Work, and any derivation thereof, from all copies that you
|
||||||
|
distribute, whether in Source or Object form, except as required
|
||||||
|
in copyright, patent, trademark, and attribution notices.
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
You may add Your own copyright statement to Your modifications and
|
||||||
may provide additional or different license terms and conditions
|
may provide additional or different license terms and conditions
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
CFLAGS := -std=c99 -Wall -O2 -D_REENTRANT
|
CFLAGS := -std=c99 -Wall -O2 -D_REENTRANT
|
||||||
LIBS := -lpthread -lm -lcrypto -lssl
|
LIBS := -lpthread -lm -lcrypto -lssl
|
||||||
|
|
||||||
TARGET := $(shell uname -s | tr [A-Z] [a-z] 2>/dev/null || echo unknown)
|
TARGET := $(shell uname -s | tr '[A-Z]' '[a-z]' 2>/dev/null || echo unknown)
|
||||||
|
|
||||||
ifeq ($(TARGET), sunos)
|
ifeq ($(TARGET), sunos)
|
||||||
CFLAGS += -D_PTHREADS -D_POSIX_C_SOURCE=200112L
|
CFLAGS += -D_PTHREADS -D_POSIX_C_SOURCE=200112L
|
||||||
@@ -9,6 +9,7 @@ ifeq ($(TARGET), sunos)
|
|||||||
else ifeq ($(TARGET), darwin)
|
else ifeq ($(TARGET), darwin)
|
||||||
LDFLAGS += -pagezero_size 10000 -image_base 100000000
|
LDFLAGS += -pagezero_size 10000 -image_base 100000000
|
||||||
else ifeq ($(TARGET), linux)
|
else ifeq ($(TARGET), linux)
|
||||||
|
CFLAGS += -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE
|
||||||
LIBS += -ldl
|
LIBS += -ldl
|
||||||
LDFLAGS += -Wl,-E
|
LDFLAGS += -Wl,-E
|
||||||
else ifeq ($(TARGET), freebsd)
|
else ifeq ($(TARGET), freebsd)
|
||||||
@@ -17,16 +18,16 @@ else ifeq ($(TARGET), freebsd)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
SRC := wrk.c net.c ssl.c aprintf.c stats.c script.c units.c \
|
SRC := wrk.c net.c ssl.c aprintf.c stats.c script.c units.c \
|
||||||
ae.c zmalloc.c http_parser.c tinymt64.c
|
ae.c zmalloc.c http_parser.c
|
||||||
BIN := wrk
|
BIN := wrk
|
||||||
|
|
||||||
ODIR := obj
|
ODIR := obj
|
||||||
OBJ := $(patsubst %.c,$(ODIR)/%.o,$(SRC))
|
OBJ := $(patsubst %.c,$(ODIR)/%.o,$(SRC)) $(ODIR)/bytecode.o
|
||||||
|
|
||||||
LDIR = deps/luajit/src
|
LDIR = deps/luajit/src
|
||||||
LIBS := -lluajit $(LIBS)
|
LIBS := -lluajit $(LIBS)
|
||||||
CFLAGS += -I $(LDIR)
|
CFLAGS += -I$(LDIR)
|
||||||
LDFLAGS += -L $(LDIR)
|
LDFLAGS += -L$(LDIR)
|
||||||
|
|
||||||
all: $(BIN)
|
all: $(BIN)
|
||||||
|
|
||||||
@@ -34,16 +35,16 @@ clean:
|
|||||||
$(RM) $(BIN) obj/*
|
$(RM) $(BIN) obj/*
|
||||||
@$(MAKE) -C deps/luajit clean
|
@$(MAKE) -C deps/luajit clean
|
||||||
|
|
||||||
$(BIN): $(OBJ) $(ODIR)/bytecode.o
|
$(BIN): $(OBJ)
|
||||||
@echo LINK $(BIN)
|
@echo LINK $(BIN)
|
||||||
@$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
|
@$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
$(OBJ): config.h Makefile | $(ODIR)
|
$(OBJ): config.h Makefile $(LDIR)/libluajit.a | $(ODIR)
|
||||||
|
|
||||||
$(ODIR): $(LDIR)/libluajit.a
|
$(ODIR):
|
||||||
@mkdir -p $@
|
@mkdir -p $@
|
||||||
|
|
||||||
$(ODIR)/bytecode.o: scripts/wrk.lua
|
$(ODIR)/bytecode.o: src/wrk.lua
|
||||||
@echo LUAJIT $<
|
@echo LUAJIT $<
|
||||||
@$(SHELL) -c 'cd $(LDIR) && ./luajit -b $(CURDIR)/$< $(CURDIR)/$@'
|
@$(SHELL) -c 'cd $(LDIR) && ./luajit -b $(CURDIR)/$< $(CURDIR)/$@'
|
||||||
|
|
||||||
@@ -52,7 +53,7 @@ $(ODIR)/%.o : %.c
|
|||||||
@$(CC) $(CFLAGS) -c -o $@ $<
|
@$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
$(LDIR)/libluajit.a:
|
$(LDIR)/libluajit.a:
|
||||||
@echo Building LuaJit...
|
@echo Building LuaJIT...
|
||||||
@$(MAKE) -C $(LDIR) BUILDMODE=static
|
@$(MAKE) -C $(LDIR) BUILDMODE=static
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|||||||
@@ -106,38 +106,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
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
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
=========================================================================
|
|
||||||
== Tiny Mersenne Twister (TinyMT) Notice ==
|
|
||||||
=========================================================================
|
|
||||||
|
|
||||||
Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima University
|
|
||||||
and The University of Tokyo. All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the
|
|
||||||
distribution.
|
|
||||||
|
|
||||||
* Neither the name of the Hiroshima University nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
||||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
||||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ wrk - a HTTP benchmarking tool
|
|||||||
design with scalable event notification systems such as epoll and kqueue.
|
design with scalable event notification systems such as epoll and kqueue.
|
||||||
|
|
||||||
An optional LuaJIT script can perform HTTP request generation, response
|
An optional LuaJIT script can perform HTTP request generation, response
|
||||||
processing, and custom reporting.
|
processing, and custom reporting. Details are available in SCRIPTING and
|
||||||
|
several examples are located in scripts/
|
||||||
|
|
||||||
Basic Usage
|
Basic Usage
|
||||||
|
|
||||||
@@ -25,64 +26,6 @@ Basic Usage
|
|||||||
Requests/sec: 748868.53
|
Requests/sec: 748868.53
|
||||||
Transfer/sec: 606.33MB
|
Transfer/sec: 606.33MB
|
||||||
|
|
||||||
Scripting
|
|
||||||
|
|
||||||
wrk's public Lua API is:
|
|
||||||
|
|
||||||
init = function(args)
|
|
||||||
request = function()
|
|
||||||
response = function(status, headers, body)
|
|
||||||
done = function(summary, latency, requests)
|
|
||||||
|
|
||||||
wrk = {
|
|
||||||
scheme = "http",
|
|
||||||
host = "localhost",
|
|
||||||
port = nil,
|
|
||||||
method = "GET",
|
|
||||||
path = "/",
|
|
||||||
headers = {},
|
|
||||||
body = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
function wrk.format(method, path, headers, body)
|
|
||||||
|
|
||||||
wrk.format returns a HTTP request string containing the passed
|
|
||||||
parameters merged with values from the wrk table.
|
|
||||||
|
|
||||||
global init -- function called when the thread is initialized
|
|
||||||
global request -- function returning the HTTP message for each request
|
|
||||||
global response -- optional function called with HTTP response data
|
|
||||||
global done -- optional function called with results of run
|
|
||||||
|
|
||||||
The init() function receives any extra command line arguments for the
|
|
||||||
script. Script arguments must be separated from wrk arguments with "--"
|
|
||||||
and scripts that override init() but not request() must call wrk.init()
|
|
||||||
|
|
||||||
The done() function receives a table containing result data, and two
|
|
||||||
statistics objects representing the sampled per-request latency and
|
|
||||||
per-thread request rate. Duration and latency are microsecond values
|
|
||||||
and rate is measured in requests per second.
|
|
||||||
|
|
||||||
latency.min -- minimum value seen
|
|
||||||
latency.max -- maximum value seen
|
|
||||||
latency.mean -- average value seen
|
|
||||||
latency.stdev -- standard deviation
|
|
||||||
latency:percentile(99.0) -- 99th percentile value
|
|
||||||
latency[i] -- raw sample value
|
|
||||||
|
|
||||||
summary = {
|
|
||||||
duration = N, -- run duration in microseconds
|
|
||||||
requests = N, -- total completed requests
|
|
||||||
bytes = N, -- total bytes received
|
|
||||||
errors = {
|
|
||||||
connect = N, -- total socket connection errors
|
|
||||||
read = N, -- total socket read errors
|
|
||||||
write = N, -- total socket write errors
|
|
||||||
status = N, -- total HTTP status codes > 399
|
|
||||||
timeout = N -- total request timeouts
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Benchmarking Tips
|
Benchmarking Tips
|
||||||
|
|
||||||
The machine running wrk must have a sufficient number of ephemeral ports
|
The machine running wrk must have a sufficient number of ephemeral ports
|
||||||
@@ -91,15 +34,13 @@ Benchmarking Tips
|
|||||||
than the number of concurrent connections being tested.
|
than the number of concurrent connections being tested.
|
||||||
|
|
||||||
A user script that only changes the HTTP method, path, adds headers or
|
A user script that only changes the HTTP method, path, adds headers or
|
||||||
a body, will have no performance impact. If multiple HTTP requests are
|
a body, will have no performance impact. Per-request actions, particularly
|
||||||
necessary they should be pre-generated and returned via a quick lookup in
|
building a new HTTP request, and use of response() will necessarily reduce
|
||||||
the request() call. Per-request actions, particularly building a new HTTP
|
the amount of load that can be generated.
|
||||||
request, and use of response() will necessarily reduce the amount of load
|
|
||||||
that can be generated.
|
|
||||||
|
|
||||||
Acknowledgements
|
Acknowledgements
|
||||||
|
|
||||||
wrk contains code from a number of open source projects including the
|
wrk contains code from a number of open source projects including the
|
||||||
'ae' event loop from redis, the nginx/joyent/node.js 'http-parser',
|
'ae' event loop from redis, the nginx/joyent/node.js 'http-parser',
|
||||||
Mike Pall's LuaJIT, and the Tiny Mersenne Twister PRNG. Please consult
|
and Mike Pall's LuaJIT. Please consult the NOTICE file for licensing
|
||||||
the NOTICE file for licensing details.
|
details.
|
||||||
|
|||||||
@@ -0,0 +1,112 @@
|
|||||||
|
Overview
|
||||||
|
|
||||||
|
wrk supports executing a LuaJIT script during three distinct phases: setup,
|
||||||
|
running, and done. Each wrk thread has an independent scripting environment
|
||||||
|
and the setup & done phases execute in a separate environment which does
|
||||||
|
not participate in the running phase.
|
||||||
|
|
||||||
|
The public Lua API consists of a global table and a number of global
|
||||||
|
functions:
|
||||||
|
|
||||||
|
wrk = {
|
||||||
|
scheme = "http",
|
||||||
|
host = "localhost",
|
||||||
|
port = nil,
|
||||||
|
method = "GET",
|
||||||
|
path = "/",
|
||||||
|
headers = {},
|
||||||
|
body = nil,
|
||||||
|
thread = <userdata>,
|
||||||
|
}
|
||||||
|
|
||||||
|
function wrk.format(method, path, headers, body)
|
||||||
|
|
||||||
|
wrk.format returns a HTTP request string containing the passed parameters
|
||||||
|
merged with values from the wrk table.
|
||||||
|
|
||||||
|
function wrk.lookup(host, service)
|
||||||
|
|
||||||
|
wrk.lookup returns a table containing all known addresses for the host
|
||||||
|
and service pair. This corresponds to the POSIX getaddrinfo() function.
|
||||||
|
|
||||||
|
function wrk.connect(addr)
|
||||||
|
|
||||||
|
wrk.connect returns true if the address can be connected to, otherwise
|
||||||
|
it returns false. The address must be one returned from wrk.lookup().
|
||||||
|
|
||||||
|
The following globals are optional, and if defined must be functions:
|
||||||
|
|
||||||
|
global setup -- called during thread setup
|
||||||
|
global init -- called when the thread is starting
|
||||||
|
global request -- called to generate the HTTP request
|
||||||
|
global response -- called with HTTP response data
|
||||||
|
global done -- called with results of run
|
||||||
|
|
||||||
|
Setup
|
||||||
|
|
||||||
|
function setup(thread)
|
||||||
|
|
||||||
|
The setup phase begins after the target IP address has been resolved and all
|
||||||
|
threads have been initialized but not yet started.
|
||||||
|
|
||||||
|
setup() is called once for each thread and receives a userdata object
|
||||||
|
representing the thread.
|
||||||
|
|
||||||
|
thread.addr - get or set the thread's server address
|
||||||
|
thread:get(name) - get the value of a global in the thread's env
|
||||||
|
thread:set(name, value) - set the value of a global in the thread's env
|
||||||
|
thread:stop() - stop the thread
|
||||||
|
|
||||||
|
Only boolean, nil, number, and string values or tables of the same may be
|
||||||
|
transfered via get()/set() and thread:stop() can only be called while the
|
||||||
|
thread is running.
|
||||||
|
|
||||||
|
Running
|
||||||
|
|
||||||
|
function init(args)
|
||||||
|
function request()
|
||||||
|
function response(status, headers, body)
|
||||||
|
|
||||||
|
The running phase begins with a single call to init(), followed by
|
||||||
|
a call to request() and response() for each request cycle.
|
||||||
|
|
||||||
|
The init() function receives any extra command line arguments for the
|
||||||
|
script which must be separated from wrk arguments with "--".
|
||||||
|
|
||||||
|
request() returns a string containing the HTTP request. Building a new
|
||||||
|
request each time is expensive, when testing a high performance server
|
||||||
|
one solution is to pre-generate all requests in init() and do a quick
|
||||||
|
lookup in request().
|
||||||
|
|
||||||
|
response() is called with the HTTP response status, headers, and body.
|
||||||
|
Parsing the headers and body is expensive, so if the response global is
|
||||||
|
nil after the call to init() wrk will ignore the headers and body.
|
||||||
|
|
||||||
|
Done
|
||||||
|
|
||||||
|
function done(summary, latency, requests)
|
||||||
|
|
||||||
|
The done() function receives a table containing result data, and two
|
||||||
|
statistics objects representing the per-request latency and per-thread
|
||||||
|
request rate. Duration and latency are microsecond values and rate is
|
||||||
|
measured in requests per second.
|
||||||
|
|
||||||
|
latency.min -- minimum value seen
|
||||||
|
latency.max -- maximum value seen
|
||||||
|
latency.mean -- average value seen
|
||||||
|
latency.stdev -- standard deviation
|
||||||
|
latency:percentile(99.0) -- 99th percentile value
|
||||||
|
latency(i) -- raw value and count
|
||||||
|
|
||||||
|
summary = {
|
||||||
|
duration = N, -- run duration in microseconds
|
||||||
|
requests = N, -- total completed requests
|
||||||
|
bytes = N, -- total bytes received
|
||||||
|
errors = {
|
||||||
|
connect = N, -- total socket connection errors
|
||||||
|
read = N, -- total socket read errors
|
||||||
|
write = N, -- total socket write errors
|
||||||
|
status = N, -- total HTTP status codes > 399
|
||||||
|
timeout = N -- total request timeouts
|
||||||
|
}
|
||||||
|
}
|
||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
===============================================================================
|
===============================================================================
|
||||||
LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
|
LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
|
||||||
|
|
||||||
Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
Vendored
+6
-4
@@ -10,12 +10,12 @@
|
|||||||
# For MSVC, please follow the instructions given in src/msvcbuild.bat.
|
# For MSVC, please follow the instructions given in src/msvcbuild.bat.
|
||||||
# For MinGW and Cygwin, cd to src and run make with the Makefile there.
|
# For MinGW and Cygwin, cd to src and run make with the Makefile there.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
# Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
MAJVER= 2
|
MAJVER= 2
|
||||||
MINVER= 0
|
MINVER= 0
|
||||||
RELVER= 2
|
RELVER= 3
|
||||||
VERSION= $(MAJVER).$(MINVER).$(RELVER)
|
VERSION= $(MAJVER).$(MINVER).$(RELVER)
|
||||||
ABIVER= 5.1
|
ABIVER= 5.1
|
||||||
|
|
||||||
@@ -25,11 +25,12 @@ ABIVER= 5.1
|
|||||||
# the paths in src/luaconf.h, too. Note: PREFIX must be an absolute path!
|
# the paths in src/luaconf.h, too. Note: PREFIX must be an absolute path!
|
||||||
#
|
#
|
||||||
export PREFIX= /usr/local
|
export PREFIX= /usr/local
|
||||||
|
export MULTILIB= lib
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
DPREFIX= $(DESTDIR)$(PREFIX)
|
DPREFIX= $(DESTDIR)$(PREFIX)
|
||||||
INSTALL_BIN= $(DPREFIX)/bin
|
INSTALL_BIN= $(DPREFIX)/bin
|
||||||
INSTALL_LIB= $(DPREFIX)/lib
|
INSTALL_LIB= $(DPREFIX)/$(MULTILIB)
|
||||||
INSTALL_SHARE= $(DPREFIX)/share
|
INSTALL_SHARE= $(DPREFIX)/share
|
||||||
INSTALL_INC= $(DPREFIX)/include/luajit-$(MAJVER).$(MINVER)
|
INSTALL_INC= $(DPREFIX)/include/luajit-$(MAJVER).$(MINVER)
|
||||||
|
|
||||||
@@ -73,7 +74,8 @@ INSTALL_X= install -m 0755
|
|||||||
INSTALL_F= install -m 0644
|
INSTALL_F= install -m 0644
|
||||||
UNINSTALL= $(RM)
|
UNINSTALL= $(RM)
|
||||||
LDCONFIG= ldconfig -n
|
LDCONFIG= ldconfig -n
|
||||||
SED_PC= sed -e "s|^prefix=.*|prefix=$(PREFIX)|"
|
SED_PC= sed -e "s|^prefix=.*|prefix=$(PREFIX)|" \
|
||||||
|
-e "s|^multilib=.*|multilib=$(MULTILIB)|"
|
||||||
|
|
||||||
FILE_T= luajit
|
FILE_T= luajit
|
||||||
FILE_A= libluajit.a
|
FILE_A= libluajit.a
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,11 +1,11 @@
|
|||||||
README for LuaJIT 2.0.2
|
README for LuaJIT 2.0.3
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language.
|
LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language.
|
||||||
|
|
||||||
Project Homepage: http://luajit.org/
|
Project Homepage: http://luajit.org/
|
||||||
|
|
||||||
LuaJIT is Copyright (C) 2005-2013 Mike Pall.
|
LuaJIT is Copyright (C) 2005-2014 Mike Pall.
|
||||||
LuaJIT is free software, released under the MIT license.
|
LuaJIT is free software, released under the MIT license.
|
||||||
See full Copyright Notice in the COPYRIGHT file or in luajit.h.
|
See full Copyright Notice in the COPYRIGHT file or in luajit.h.
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2004-2013 Mike Pall.
|
/* Copyright (C) 2004-2014 Mike Pall.
|
||||||
*
|
*
|
||||||
* You are welcome to use the general ideas of this design for your own sites.
|
* You are welcome to use the general ideas of this design for your own sites.
|
||||||
* But please do not steal the stylesheet, the layout or the color scheme.
|
* But please do not steal the stylesheet, the layout or the color scheme.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2004-2013 Mike Pall.
|
/* Copyright (C) 2004-2014 Mike Pall.
|
||||||
*
|
*
|
||||||
* You are welcome to use the general ideas of this design for your own sites.
|
* You are welcome to use the general ideas of this design for your own sites.
|
||||||
* But please do not steal the stylesheet, the layout or the color scheme.
|
* But please do not steal the stylesheet, the layout or the color scheme.
|
||||||
|
|||||||
Vendored
+39
-3
@@ -4,7 +4,7 @@
|
|||||||
<title>LuaJIT Change History</title>
|
<title>LuaJIT Change History</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -63,7 +63,7 @@ div.major { max-width: 600px; padding: 1em; margin: 1em 0 1em 0; }
|
|||||||
<div id="main">
|
<div id="main">
|
||||||
<p>
|
<p>
|
||||||
This is a list of changes between the released versions of LuaJIT.<br>
|
This is a list of changes between the released versions of LuaJIT.<br>
|
||||||
The current <span style="color: #0000c0;">stable version</span> is <strong>LuaJIT 2.0.2</strong>.<br>
|
The current <span style="color: #0000c0;">stable version</span> is <strong>LuaJIT 2.0.3</strong>.<br>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Please check the
|
Please check the
|
||||||
@@ -72,6 +72,42 @@ to see whether newer versions are available.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="major" style="background: #d0d0ff;">
|
<div class="major" style="background: #d0d0ff;">
|
||||||
|
<h2 id="LuaJIT-2.0.3">LuaJIT 2.0.3 — 2014-03-12</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Add PS4 port.</li>
|
||||||
|
<li>Add support for multilib distro builds.</li>
|
||||||
|
<li>Fix OSX build.</li>
|
||||||
|
<li>Fix MinGW build.</li>
|
||||||
|
<li>Fix Xbox 360 build.</li>
|
||||||
|
<li>Improve ULOAD forwarding for open upvalues.</li>
|
||||||
|
<li>Fix GC steps threshold handling when called by JIT-compiled code.</li>
|
||||||
|
<li>Fix argument checks for <tt>math.deg()</tt> and <tt>math.rad()</tt>.</li>
|
||||||
|
<li>Fix <tt>jit.flush(func|true)</tt>.</li>
|
||||||
|
<li>Respect <tt>jit.off(func)</tt> when returning to a function, too.</li>
|
||||||
|
<li>Fix compilation of <tt>string.byte(s, nil, n)</tt>.</li>
|
||||||
|
<li>Fix line number for relocated bytecode after closure fixup</li>
|
||||||
|
<li>Fix frame traversal for backtraces.</li>
|
||||||
|
<li>Fix ABC elimination.</li>
|
||||||
|
<li>Fix handling of redundant PHIs.</li>
|
||||||
|
<li>Fix snapshot restore for exit to function header.</li>
|
||||||
|
<li>Fix type punning alias analysis for constified pointers</li>
|
||||||
|
<li>Fix call unroll checks in the presence of metamethod frames.</li>
|
||||||
|
<li>Fix initial maxslot for down-recursive traces.</li>
|
||||||
|
<li>Prevent BASE register coalescing if parent uses <tt>IR_RETF</tt>.</li>
|
||||||
|
<li>Don't purge modified function from stack slots in <tt>BC_RET</tt>.</li>
|
||||||
|
<li>Fix recording of <tt>BC_VARG</tt>.</li>
|
||||||
|
<li>Don't access dangling reference to reallocated IR.</li>
|
||||||
|
<li>Fix frame depth display for bytecode dump in <tt>-jdump</tt>.</li>
|
||||||
|
<li>ARM: Fix register allocation when rematerializing FPRs.</li>
|
||||||
|
<li>x64: Fix store to upvalue for lightuserdata values.</li>
|
||||||
|
<li>FFI: Add missing GC steps for callback argument conversions.</li>
|
||||||
|
<li>FFI: Properly unload loaded DLLs.</li>
|
||||||
|
<li>FFI: Fix argument checks for <tt>ffi.string()</tt>.</li>
|
||||||
|
<li>FFI/x64: Fix passing of vector arguments to calls.</li>
|
||||||
|
<li>FFI: Rehash finalizer table after GC cycle, if needed.</li>
|
||||||
|
<li>FFI: Fix <tt>cts->L</tt> for cdata unsinking in snapshot restore.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h2 id="LuaJIT-2.0.2">LuaJIT 2.0.2 — 2013-06-03</h2>
|
<h2 id="LuaJIT-2.0.2">LuaJIT 2.0.2 — 2013-06-03</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Fix memory access check for fast string interning.</li>
|
<li>Fix memory access check for fast string interning.</li>
|
||||||
@@ -882,7 +918,7 @@ This is the initial non-public release of LuaJIT.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+3
-3
@@ -4,7 +4,7 @@
|
|||||||
<title>Contact</title>
|
<title>Contact</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -84,7 +84,7 @@ xD("fyZKB8xv\"FJytmz8.KAB0u52D")
|
|||||||
<h2>Copyright</h2>
|
<h2>Copyright</h2>
|
||||||
<p>
|
<p>
|
||||||
All documentation is
|
All documentation is
|
||||||
Copyright © 2005-2013 Mike Pall.
|
Copyright © 2005-2014 Mike Pall.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ Copyright © 2005-2013 Mike Pall.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>Lua/C API Extensions</title>
|
<title>Lua/C API Extensions</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -177,7 +177,7 @@ Also note that this mechanism is not without overhead.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>FFI Library</title>
|
<title>FFI Library</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -320,7 +320,7 @@ without undue conversion penalties.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>ffi.* API Functions</title>
|
<title>ffi.* API Functions</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -556,7 +556,7 @@ named <tt>i</tt>.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
+5
-3
@@ -4,7 +4,7 @@
|
|||||||
<title>FFI Semantics</title>
|
<title>FFI Semantics</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -1188,7 +1188,9 @@ storing and initializing them are supported, yet.</li>
|
|||||||
<li>The <tt>volatile</tt> type qualifier is currently ignored by
|
<li>The <tt>volatile</tt> type qualifier is currently ignored by
|
||||||
compiled code.</li>
|
compiled code.</li>
|
||||||
<li><a href="ext_ffi_api.html#ffi_cdef"><tt>ffi.cdef</tt></a> silently
|
<li><a href="ext_ffi_api.html#ffi_cdef"><tt>ffi.cdef</tt></a> silently
|
||||||
ignores all re-declarations.</li>
|
ignores most re-declarations. Note: avoid re-declarations which do not
|
||||||
|
conform to C99. The implementation will eventually be changed to
|
||||||
|
perform strict checks.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
The JIT compiler already handles a large subset of all FFI operations.
|
The JIT compiler already handles a large subset of all FFI operations.
|
||||||
@@ -1233,7 +1235,7 @@ compiled.</li>
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>FFI Tutorial</title>
|
<title>FFI Tutorial</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -591,7 +591,7 @@ it to a local variable in the function scope is unnecessary.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>jit.* Library</title>
|
<title>jit.* Library</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -189,7 +189,7 @@ if you want to know more.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>Extensions</title>
|
<title>Extensions</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -398,7 +398,7 @@ lead to the termination of the process.</li>
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>Frequently Asked Questions (FAQ)</title>
|
<title>Frequently Asked Questions (FAQ)</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -174,7 +174,7 @@ the development of certain features, if they are important to you.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+25
-7
@@ -4,7 +4,7 @@
|
|||||||
<title>Installation</title>
|
<title>Installation</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -120,7 +120,7 @@ operating systems, CPUs and compilers:
|
|||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td class="compatcpu">x64 (64 bit)</td>
|
<td class="compatcpu">x64 (64 bit)</td>
|
||||||
<td class="compatos">GCC 4.x</td>
|
<td class="compatos">GCC 4.x</td>
|
||||||
<td class="compatos compatno"> </td>
|
<td class="compatos">ORBIS (<a href="#ps4">PS4</a>)</td>
|
||||||
<td class="compatos">GCC 4.x</td>
|
<td class="compatos">GCC 4.x</td>
|
||||||
<td class="compatos">MSVC + SDK v7.0<br>WinSDK v7.0</td>
|
<td class="compatos">MSVC + SDK v7.0<br>WinSDK v7.0</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -188,8 +188,8 @@ open a terminal window and change to this directory. Now unpack the archive
|
|||||||
and change to the newly created directory:
|
and change to the newly created directory:
|
||||||
</p>
|
</p>
|
||||||
<pre class="code">
|
<pre class="code">
|
||||||
tar zxf LuaJIT-2.0.2.tar.gz
|
tar zxf LuaJIT-2.0.3.tar.gz
|
||||||
cd LuaJIT-2.0.2</pre>
|
cd LuaJIT-2.0.3</pre>
|
||||||
<h3>Building LuaJIT</h3>
|
<h3>Building LuaJIT</h3>
|
||||||
<p>
|
<p>
|
||||||
The supplied Makefiles try to auto-detect the settings needed for your
|
The supplied Makefiles try to auto-detect the settings needed for your
|
||||||
@@ -460,7 +460,7 @@ make HOST_CC="gcc -m32 -arch i386" CROSS=$ISDKP TARGET_FLAGS="$ISDKF" \
|
|||||||
</pre>
|
</pre>
|
||||||
<p>
|
<p>
|
||||||
You can cross-compile for <b id="ps3">PS3</b> using the PS3 SDK from
|
You can cross-compile for <b id="ps3">PS3</b> using the PS3 SDK from
|
||||||
a Linux host or a Windows host (requires 32 bit MinGW (GCC) on the host,
|
a Linux host or a Windows host (requires 32 bit MinGW (GCC) on the host,
|
||||||
too). Due to restrictions on consoles, the JIT compiler is disabled and
|
too). Due to restrictions on consoles, the JIT compiler is disabled and
|
||||||
only the fast interpreter is built:
|
only the fast interpreter is built:
|
||||||
</p>
|
</p>
|
||||||
@@ -468,6 +468,22 @@ only the fast interpreter is built:
|
|||||||
make HOST_CC="gcc -m32" CROSS=ppu-lv2-
|
make HOST_CC="gcc -m32" CROSS=ppu-lv2-
|
||||||
</pre>
|
</pre>
|
||||||
<p>
|
<p>
|
||||||
|
You can cross-compile for <b id="ps4">PS4</b> from a Windows host using
|
||||||
|
the PS4 SDK (ORBIS) plus 64 bit MSVC. Due to restrictions on
|
||||||
|
consoles, the JIT compiler is disabled and only the fast interpreter
|
||||||
|
is built.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Open a "Visual Studio .NET Command Prompt" (64 bit host compiler),
|
||||||
|
<tt>cd</tt> to the directory where you've unpacked the sources and run
|
||||||
|
the following commands. This builds a static library <tt>libluajit.a</tt>,
|
||||||
|
which can be linked against your game, just like the Lua library.
|
||||||
|
</p>
|
||||||
|
<pre class="code">
|
||||||
|
cd src
|
||||||
|
ps4build
|
||||||
|
</pre>
|
||||||
|
<p>
|
||||||
You can cross-compile for <b id="xbox360">Xbox 360</b> using the
|
You can cross-compile for <b id="xbox360">Xbox 360</b> using the
|
||||||
Xbox 360 SDK (MSVC + XEDK). Due to restrictions on consoles, the
|
Xbox 360 SDK (MSVC + XEDK). Due to restrictions on consoles, the
|
||||||
JIT compiler is disabled and only the fast interpreter is built.
|
JIT compiler is disabled and only the fast interpreter is built.
|
||||||
@@ -565,9 +581,11 @@ for a regular distribution build:
|
|||||||
<ul>
|
<ul>
|
||||||
<li><tt>PREFIX</tt> overrides the installation path and should usually
|
<li><tt>PREFIX</tt> overrides the installation path and should usually
|
||||||
be set to <tt>/usr</tt>. Setting this also changes the module paths and
|
be set to <tt>/usr</tt>. Setting this also changes the module paths and
|
||||||
the <tt>-rpath</tt> of the shared library.</li>
|
the paths needed to locate the shared library.</li>
|
||||||
<li><tt>DESTDIR</tt> is an absolute path which allows you to install
|
<li><tt>DESTDIR</tt> is an absolute path which allows you to install
|
||||||
to a shadow tree instead of the root tree of the build system.</li>
|
to a shadow tree instead of the root tree of the build system.</li>
|
||||||
|
<li><tt>MULTILIB</tt> sets the architecture-specific library path component
|
||||||
|
for multilib systems. The default is <tt>lib</tt>.</li>
|
||||||
<li>Have a look at the top-level <tt>Makefile</tt> and <tt>src/Makefile</tt>
|
<li>Have a look at the top-level <tt>Makefile</tt> and <tt>src/Makefile</tt>
|
||||||
for additional variables to tweak. The following variables <em>may</em> be
|
for additional variables to tweak. The following variables <em>may</em> be
|
||||||
overridden, but it's <em>not</em> recommended, except for special needs
|
overridden, but it's <em>not</em> recommended, except for special needs
|
||||||
@@ -603,7 +621,7 @@ to me (the upstream) and not you (the package maintainer), anyway.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+4
-4
@@ -4,7 +4,7 @@
|
|||||||
<title>LuaJIT</title>
|
<title>LuaJIT</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -147,7 +147,7 @@ Lua is a powerful, dynamic and light-weight programming language.
|
|||||||
It may be embedded or used as a general-purpose, stand-alone language.
|
It may be embedded or used as a general-purpose, stand-alone language.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
LuaJIT is Copyright © 2005-2013 Mike Pall, released under the
|
LuaJIT is Copyright © 2005-2014 Mike Pall, released under the
|
||||||
<a href="http://www.opensource.org/licenses/mit-license.php"><span class="ext">»</span> MIT open source license</a>.
|
<a href="http://www.opensource.org/licenses/mit-license.php"><span class="ext">»</span> MIT open source license</a>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@@ -158,7 +158,7 @@ LuaJIT is Copyright © 2005-2013 Mike Pall, released under the
|
|||||||
<tr><td>Windows</td><td>Linux</td><td>BSD</td><td>OSX</td><td>POSIX</td></tr>
|
<tr><td>Windows</td><td>Linux</td><td>BSD</td><td>OSX</td><td>POSIX</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<table class="feature os os2">
|
<table class="feature os os2">
|
||||||
<tr><td><span style="font-size:90%;">Embedded</span></td><td>Android</td><td>iOS</td><td>PS3</td><td>Xbox 360</td></tr>
|
<tr><td><span style="font-size:90%;">Embedded</span></td><td>Android</td><td>iOS</td><td>PS3</td><td>PS4</td><td>Xbox 360</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<table class="feature compiler">
|
<table class="feature compiler">
|
||||||
<tr><td>GCC</td><td>CLANG<br>LLVM</td><td>MSVC</td></tr>
|
<tr><td>GCC</td><td>CLANG<br>LLVM</td><td>MSVC</td></tr>
|
||||||
@@ -218,7 +218,7 @@ Please select a sub-topic in the navigation bar to learn more about LuaJIT.
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+3
-3
@@ -4,7 +4,7 @@
|
|||||||
<title>Running LuaJIT</title>
|
<title>Running LuaJIT</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -186,7 +186,7 @@ itself. For a description of their options and output format, please
|
|||||||
read the comment block at the start of their source.
|
read the comment block at the start of their source.
|
||||||
They can be found in the <tt>lib</tt> directory of the source
|
They can be found in the <tt>lib</tt> directory of the source
|
||||||
distribution or installed under the <tt>jit</tt> directory. By default
|
distribution or installed under the <tt>jit</tt> directory. By default
|
||||||
this is <tt>/usr/local/share/luajit-2.0.2/jit</tt> on POSIX
|
this is <tt>/usr/local/share/luajit-2.0.3/jit</tt> on POSIX
|
||||||
systems.
|
systems.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -296,7 +296,7 @@ Here are the parameters and their default settings:
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<title>Status & Roadmap</title>
|
<title>Status & Roadmap</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta name="Author" content="Mike Pall">
|
<meta name="Author" content="Mike Pall">
|
||||||
<meta name="Copyright" content="Copyright (C) 2005-2013, Mike Pall">
|
<meta name="Copyright" content="Copyright (C) 2005-2014, Mike Pall">
|
||||||
<meta name="Language" content="en">
|
<meta name="Language" content="en">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
||||||
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
||||||
@@ -115,7 +115,7 @@ Please refer to the
|
|||||||
</div>
|
</div>
|
||||||
<div id="foot">
|
<div id="foot">
|
||||||
<hr class="hide">
|
<hr class="hide">
|
||||||
Copyright © 2005-2013 Mike Pall
|
Copyright © 2005-2014 Mike Pall
|
||||||
<span class="noprint">
|
<span class="noprint">
|
||||||
·
|
·
|
||||||
<a href="contact.html">Contact</a>
|
<a href="contact.html">Contact</a>
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** DynASM ARM encoding engine.
|
** DynASM ARM encoding engine.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
** Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
-- DynASM ARM module.
|
-- DynASM ARM module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- See dynasm.lua for full copyright notice.
|
-- See dynasm.lua for full copyright notice.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** DynASM MIPS encoding engine.
|
** DynASM MIPS encoding engine.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
** Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
-- DynASM MIPS module.
|
-- DynASM MIPS module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- See dynasm.lua for full copyright notice.
|
-- See dynasm.lua for full copyright notice.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** DynASM PPC encoding engine.
|
** DynASM PPC encoding engine.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
** Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
-- DynASM PPC module.
|
-- DynASM PPC module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- See dynasm.lua for full copyright notice.
|
-- See dynasm.lua for full copyright notice.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** DynASM encoding engine prototypes.
|
** DynASM encoding engine prototypes.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
** Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
-- DynASM x64 module.
|
-- DynASM x64 module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- See dynasm.lua for full copyright notice.
|
-- See dynasm.lua for full copyright notice.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
-- This module just sets 64 bit mode for the combined x86/x64 module.
|
-- This module just sets 64 bit mode for the combined x86/x64 module.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** DynASM x86 encoding engine.
|
** DynASM x86 encoding engine.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
** Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
** Released under the MIT license. See dynasm.lua for full copyright notice.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Vendored
+10
-4
@@ -1,7 +1,7 @@
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
-- DynASM x86/x64 module.
|
-- DynASM x86/x64 module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- See dynasm.lua for full copyright notice.
|
-- See dynasm.lua for full copyright notice.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -1040,7 +1040,7 @@ local map_op = {
|
|||||||
-- ED: *in Rdw,dx
|
-- ED: *in Rdw,dx
|
||||||
-- EE: *out dx,Rb
|
-- EE: *out dx,Rb
|
||||||
-- EF: *out dx,Rdw
|
-- EF: *out dx,Rdw
|
||||||
-- F0: *lock
|
lock_0 = "F0",
|
||||||
int1_0 = "F1",
|
int1_0 = "F1",
|
||||||
repne_0 = "F2",
|
repne_0 = "F2",
|
||||||
repnz_0 = "F2",
|
repnz_0 = "F2",
|
||||||
@@ -1678,7 +1678,7 @@ if x64 then
|
|||||||
function map_op.mov64_2(params)
|
function map_op.mov64_2(params)
|
||||||
if not params then return { "reg, imm", "reg, [disp]", "[disp], reg" } end
|
if not params then return { "reg, imm", "reg, [disp]", "[disp], reg" } end
|
||||||
if secpos+2 > maxsecpos then wflush() end
|
if secpos+2 > maxsecpos then wflush() end
|
||||||
local opcode, op64, sz, rex
|
local opcode, op64, sz, rex, vreg
|
||||||
local op64 = match(params[1], "^%[%s*(.-)%s*%]$")
|
local op64 = match(params[1], "^%[%s*(.-)%s*%]$")
|
||||||
if op64 then
|
if op64 then
|
||||||
local a = parseoperand(params[2])
|
local a = parseoperand(params[2])
|
||||||
@@ -1699,11 +1699,17 @@ if x64 then
|
|||||||
werror("bad operand mode")
|
werror("bad operand mode")
|
||||||
end
|
end
|
||||||
op64 = params[2]
|
op64 = params[2]
|
||||||
opcode = 0xb8 + band(a.reg, 7) -- !x64: no VREG support.
|
if a.reg == -1 then
|
||||||
|
vreg = a.vreg
|
||||||
|
opcode = 0xb8
|
||||||
|
else
|
||||||
|
opcode = 0xb8 + band(a.reg, 7)
|
||||||
|
end
|
||||||
rex = a.reg > 7 and 9 or 8
|
rex = a.reg > 7 and 9 or 8
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
wputop(sz, opcode, rex)
|
wputop(sz, opcode, rex)
|
||||||
|
if vreg then waction("VREG", vreg); wputxb(0) end
|
||||||
waction("IMM_D", format("(unsigned int)(%s)", op64))
|
waction("IMM_D", format("(unsigned int)(%s)", op64))
|
||||||
waction("IMM_D", format("(unsigned int)((%s)>>32)", op64))
|
waction("IMM_D", format("(unsigned int)((%s)>>32)", op64))
|
||||||
end
|
end
|
||||||
|
|||||||
Vendored
+7
-8
@@ -2,7 +2,7 @@
|
|||||||
-- DynASM. A dynamic assembler for code generation engines.
|
-- DynASM. A dynamic assembler for code generation engines.
|
||||||
-- Originally designed and implemented for LuaJIT.
|
-- Originally designed and implemented for LuaJIT.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- See below for full copyright notice.
|
-- See below for full copyright notice.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ local _info = {
|
|||||||
url = "http://luajit.org/dynasm.html",
|
url = "http://luajit.org/dynasm.html",
|
||||||
license = "MIT",
|
license = "MIT",
|
||||||
copyright = [[
|
copyright = [[
|
||||||
Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
a copy of this software and associated documentation files (the
|
a copy of this software and associated documentation files (the
|
||||||
@@ -85,7 +85,7 @@ end
|
|||||||
-- Resync CPP line numbers.
|
-- Resync CPP line numbers.
|
||||||
local function wsync()
|
local function wsync()
|
||||||
if g_synclineno ~= g_lineno and g_opt.cpp then
|
if g_synclineno ~= g_lineno and g_opt.cpp then
|
||||||
wline("# "..g_lineno..' "'..g_fname..'"')
|
wline("#line "..g_lineno..' "'..g_fname..'"')
|
||||||
g_synclineno = g_lineno
|
g_synclineno = g_lineno
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -695,6 +695,9 @@ map_op[".arch_1"] = function(params)
|
|||||||
if not params then return "name" end
|
if not params then return "name" end
|
||||||
local err = loadarch(params[1])
|
local err = loadarch(params[1])
|
||||||
if err then wfatal(err) end
|
if err then wfatal(err) end
|
||||||
|
wline(format("#if DASM_VERSION != %d", _info.vernum))
|
||||||
|
wline('#error "Version mismatch between DynASM and included encoding engine"')
|
||||||
|
wline("#endif")
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Dummy .arch pseudo-opcode to improve the error report.
|
-- Dummy .arch pseudo-opcode to improve the error report.
|
||||||
@@ -877,13 +880,9 @@ local function dasmhead(out)
|
|||||||
** DO NOT EDIT! The original file is in "%s".
|
** DO NOT EDIT! The original file is in "%s".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if DASM_VERSION != %d
|
|
||||||
#error "Version mismatch between DynASM and included encoding engine"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
]], _info.url,
|
]], _info.url,
|
||||||
_info.version, g_arch._info.arch, g_arch._info.version,
|
_info.version, g_arch._info.arch, g_arch._info.version,
|
||||||
g_fname, _info.vernum))
|
g_fname))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Read input file.
|
-- Read input file.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -74,7 +74,7 @@ luajit \-jv \-e "for i=1,10 do for j=1,10 do for k=1,100 do end end end"
|
|||||||
Runs some nested loops and shows the resulting traces.
|
Runs some nested loops and shows the resulting traces.
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
.PP
|
.PP
|
||||||
\fBLuaJIT\fR is Copyright \(co 2005-2013 Mike Pall.
|
\fBLuaJIT\fR is Copyright \(co 2005-2014 Mike Pall.
|
||||||
.br
|
.br
|
||||||
\fBLuaJIT\fR is open source software, released under the MIT license.
|
\fBLuaJIT\fR is open source software, released under the MIT license.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
|||||||
Vendored
+4
-3
@@ -1,18 +1,19 @@
|
|||||||
# Package information for LuaJIT to be used by pkg-config.
|
# Package information for LuaJIT to be used by pkg-config.
|
||||||
majver=2
|
majver=2
|
||||||
minver=0
|
minver=0
|
||||||
relver=2
|
relver=3
|
||||||
version=${majver}.${minver}.${relver}
|
version=${majver}.${minver}.${relver}
|
||||||
abiver=5.1
|
abiver=5.1
|
||||||
|
|
||||||
prefix=/usr/local
|
prefix=/usr/local
|
||||||
|
multilib=lib
|
||||||
exec_prefix=${prefix}
|
exec_prefix=${prefix}
|
||||||
libdir=${exec_prefix}/lib
|
libdir=${exec_prefix}/${multilib}
|
||||||
libname=luajit-${abiver}
|
libname=luajit-${abiver}
|
||||||
includedir=${prefix}/include/luajit-${majver}.${minver}
|
includedir=${prefix}/include/luajit-${majver}.${minver}
|
||||||
|
|
||||||
INSTALL_LMOD=${prefix}/share/lua/${abiver}
|
INSTALL_LMOD=${prefix}/share/lua/${abiver}
|
||||||
INSTALL_CMOD=${prefix}/lib/lua/${abiver}
|
INSTALL_CMOD=${prefix}/${multilib}/lua/${abiver}
|
||||||
|
|
||||||
Name: LuaJIT
|
Name: LuaJIT
|
||||||
Description: Just-in-time compiler for Lua
|
Description: Just-in-time compiler for Lua
|
||||||
|
|||||||
Vendored
+15
-6
@@ -7,12 +7,12 @@
|
|||||||
# Also works with MinGW and Cygwin on Windows.
|
# Also works with MinGW and Cygwin on Windows.
|
||||||
# Please check msvcbuild.bat for building with MSVC on Windows.
|
# Please check msvcbuild.bat for building with MSVC on Windows.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2005-2012 Mike Pall. See Copyright Notice in luajit.h
|
# Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
MAJVER= 2
|
MAJVER= 2
|
||||||
MINVER= 0
|
MINVER= 0
|
||||||
RELVER= 2
|
RELVER= 3
|
||||||
ABIVER= 5.1
|
ABIVER= 5.1
|
||||||
NODOTABIVER= 51
|
NODOTABIVER= 51
|
||||||
|
|
||||||
@@ -188,9 +188,10 @@ TARGET_LD= $(CROSS)$(CC)
|
|||||||
TARGET_AR= $(CROSS)ar rcus
|
TARGET_AR= $(CROSS)ar rcus
|
||||||
TARGET_STRIP= $(CROSS)strip
|
TARGET_STRIP= $(CROSS)strip
|
||||||
|
|
||||||
|
TARGET_LIBPATH= $(or $(PREFIX),/usr/local)/$(or $(MULTILIB),lib)
|
||||||
TARGET_SONAME= libluajit-$(ABIVER).so.$(MAJVER)
|
TARGET_SONAME= libluajit-$(ABIVER).so.$(MAJVER)
|
||||||
TARGET_DYLIBNAME= libluajit-$(ABIVER).$(MAJVER).dylib
|
TARGET_DYLIBNAME= libluajit-$(ABIVER).$(MAJVER).dylib
|
||||||
TARGET_DYLIBPATH= $(or $(PREFIX),/usr/local)/lib/$(TARGET_DYLIBNAME)
|
TARGET_DYLIBPATH= $(TARGET_LIBPATH)/$(TARGET_DYLIBNAME)
|
||||||
TARGET_DLLNAME= lua$(NODOTABIVER).dll
|
TARGET_DLLNAME= lua$(NODOTABIVER).dll
|
||||||
TARGET_XSHLDFLAGS= -shared -fPIC -Wl,-soname,$(TARGET_SONAME)
|
TARGET_XSHLDFLAGS= -shared -fPIC -Wl,-soname,$(TARGET_SONAME)
|
||||||
TARGET_DYNXLDOPTS=
|
TARGET_DYNXLDOPTS=
|
||||||
@@ -249,12 +250,18 @@ TARGET_ARCH+= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_LJARCH))
|
|||||||
|
|
||||||
ifneq (,$(PREFIX))
|
ifneq (,$(PREFIX))
|
||||||
ifneq (/usr/local,$(PREFIX))
|
ifneq (/usr/local,$(PREFIX))
|
||||||
TARGET_XCFLAGS+= -DLUA_XROOT=\"$(PREFIX)/\"
|
TARGET_XCFLAGS+= -DLUA_ROOT=\"$(PREFIX)\"
|
||||||
ifneq (/usr,$(PREFIX))
|
ifneq (/usr,$(PREFIX))
|
||||||
TARGET_DYNXLDOPTS= -Wl,-rpath,$(PREFIX)/lib
|
TARGET_DYNXLDOPTS= -Wl,-rpath,$(TARGET_LIBPATH)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
ifneq (,$(MULTILIB))
|
||||||
|
TARGET_XCFLAGS+= -DLUA_MULTILIB=\"$(MULTILIB)\"
|
||||||
|
endif
|
||||||
|
ifneq (,$(LMULTILIB))
|
||||||
|
TARGET_XCFLAGS+= -DLUA_LMULTILIB=\"$(LMULTILIB)\"
|
||||||
|
endif
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# System detection.
|
# System detection.
|
||||||
@@ -287,7 +294,9 @@ ifeq (Darwin,$(TARGET_SYS))
|
|||||||
endif
|
endif
|
||||||
TARGET_STRIP+= -x
|
TARGET_STRIP+= -x
|
||||||
TARGET_AR+= 2>/dev/null
|
TARGET_AR+= 2>/dev/null
|
||||||
TARGET_XCFLAGS+= -fno-stack-protector
|
ifeq (,$(shell $(TARGET_CC) -o /dev/null -c -x c /dev/null -fno-stack-protector 2>/dev/null || echo 1))
|
||||||
|
TARGET_XCFLAGS+= -fno-stack-protector
|
||||||
|
endif
|
||||||
TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC
|
TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC
|
||||||
TARGET_DYNXLDOPTS=
|
TARGET_DYNXLDOPTS=
|
||||||
TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER)
|
TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER)
|
||||||
|
|||||||
Vendored
+4
-4
@@ -17,8 +17,8 @@ lib_ffi.o: lib_ffi.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
|
|||||||
lj_ccallback.h lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h
|
lj_ccallback.h lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h
|
||||||
lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h
|
lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h
|
||||||
lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
|
lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
|
||||||
lj_arch.h lj_err.h lj_errmsg.h lj_str.h lj_state.h lj_ff.h lj_ffdef.h \
|
lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_state.h lj_ff.h \
|
||||||
lj_lib.h lj_libdef.h
|
lj_ffdef.h lj_lib.h lj_libdef.h
|
||||||
lib_jit.o: lib_jit.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h \
|
lib_jit.o: lib_jit.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h \
|
||||||
lj_obj.h lj_def.h lj_err.h lj_errmsg.h lj_debug.h lj_str.h lj_tab.h \
|
lj_obj.h lj_def.h lj_err.h lj_errmsg.h lj_debug.h lj_str.h lj_tab.h \
|
||||||
lj_bc.h lj_ir.h lj_jit.h lj_ircall.h lj_iropt.h lj_target.h \
|
lj_bc.h lj_ir.h lj_jit.h lj_ircall.h lj_iropt.h lj_target.h \
|
||||||
@@ -129,8 +129,8 @@ lj_load.o: lj_load.c lua.h luaconf.h lauxlib.h lj_obj.h lj_def.h \
|
|||||||
lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_func.h lj_frame.h \
|
lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_func.h lj_frame.h \
|
||||||
lj_bc.h lj_vm.h lj_lex.h lj_bcdump.h lj_parse.h
|
lj_bc.h lj_vm.h lj_lex.h lj_bcdump.h lj_parse.h
|
||||||
lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
|
lj_mcode.o: lj_mcode.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
|
||||||
lj_gc.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h lj_dispatch.h lj_bc.h \
|
lj_gc.h lj_err.h lj_errmsg.h lj_jit.h lj_ir.h lj_mcode.h lj_trace.h \
|
||||||
lj_traceerr.h lj_vm.h
|
lj_dispatch.h lj_bc.h lj_traceerr.h lj_vm.h
|
||||||
lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
|
lj_meta.o: lj_meta.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_gc.h \
|
||||||
lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_frame.h lj_bc.h \
|
lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h lj_frame.h lj_bc.h \
|
||||||
lj_vm.h lj_strscan.h
|
lj_vm.h lj_strscan.h
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** LuaJIT VM builder.
|
** LuaJIT VM builder.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** This is a tool to build the hand-tuned assembler code required for
|
** This is a tool to build the hand-tuned assembler code required for
|
||||||
** LuaJIT's bytecode interpreter. It supports a variety of output formats
|
** LuaJIT's bytecode interpreter. It supports a variety of output formats
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** LuaJIT VM builder.
|
** LuaJIT VM builder.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _BUILDVM_H
|
#ifndef _BUILDVM_H
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** LuaJIT VM builder: Assembler source code emitter.
|
** LuaJIT VM builder: Assembler source code emitter.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "buildvm.h"
|
#include "buildvm.h"
|
||||||
@@ -100,7 +100,7 @@ static void emit_asm_wordreloc(BuildCtx *ctx, uint8_t *p, int n,
|
|||||||
fprintf(ctx->fp, "\tblx %s\n", sym);
|
fprintf(ctx->fp, "\tblx %s\n", sym);
|
||||||
} else if ((ins & 0x0e000000u) == 0x0a000000u) {
|
} else if ((ins & 0x0e000000u) == 0x0a000000u) {
|
||||||
fprintf(ctx->fp, "\t%s%.2s %s\n", (ins & 0x01000000u) ? "bl" : "b",
|
fprintf(ctx->fp, "\t%s%.2s %s\n", (ins & 0x01000000u) ? "bl" : "b",
|
||||||
"eqnecsccmiplvsvchilsgeltgtle" + 2*(ins >> 28), sym);
|
&"eqnecsccmiplvsvchilsgeltgtle"[2*(ins >> 28)], sym);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Error: unsupported opcode %08x for %s symbol relocation.\n",
|
"Error: unsupported opcode %08x for %s symbol relocation.\n",
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** LuaJIT VM builder: IR folding hash table generator.
|
** LuaJIT VM builder: IR folding hash table generator.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "buildvm.h"
|
#include "buildvm.h"
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** LuaJIT VM builder: library definition compiler.
|
** LuaJIT VM builder: library definition compiler.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "buildvm.h"
|
#include "buildvm.h"
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** LuaJIT VM builder: PE object emitter.
|
** LuaJIT VM builder: PE object emitter.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Only used for building on Windows, since we cannot assume the presence
|
** Only used for building on Windows, since we cannot assume the presence
|
||||||
** of a suitable assembler. The host and target byte order must match.
|
** of a suitable assembler. The host and target byte order must match.
|
||||||
|
|||||||
Vendored
+2
-1
@@ -2,7 +2,7 @@
|
|||||||
-- Lua script to generate a customized, minified version of Lua.
|
-- Lua script to generate a customized, minified version of Lua.
|
||||||
-- The resulting 'minilua' is used for the build process of LuaJIT.
|
-- The resulting 'minilua' is used for the build process of LuaJIT.
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -210,6 +210,7 @@ typedef unsigned __int64 U64;
|
|||||||
#else
|
#else
|
||||||
typedef unsigned long long U64;
|
typedef unsigned long long U64;
|
||||||
#endif
|
#endif
|
||||||
|
int _CRT_glob = 0;
|
||||||
]]}, {}
|
]]}, {}
|
||||||
|
|
||||||
local function preprocess(src)
|
local function preprocess(src)
|
||||||
|
|||||||
Vendored
+1
@@ -27,6 +27,7 @@ typedef unsigned __int64 U64;
|
|||||||
#else
|
#else
|
||||||
typedef unsigned long long U64;
|
typedef unsigned long long U64;
|
||||||
#endif
|
#endif
|
||||||
|
int _CRT_glob = 0;
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT bytecode listing module.
|
-- LuaJIT bytecode listing module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--
|
--
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
-- Cache some library functions and objects.
|
-- Cache some library functions and objects.
|
||||||
local jit = require("jit")
|
local jit = require("jit")
|
||||||
assert(jit.version_num == 20002, "LuaJIT core/library version mismatch")
|
assert(jit.version_num == 20003, "LuaJIT core/library version mismatch")
|
||||||
local jutil = require("jit.util")
|
local jutil = require("jit.util")
|
||||||
local vmdef = require("jit.vmdef")
|
local vmdef = require("jit.vmdef")
|
||||||
local bit = require("bit")
|
local bit = require("bit")
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT module to save/list bytecode.
|
-- LuaJIT module to save/list bytecode.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--
|
--
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
local jit = require("jit")
|
local jit = require("jit")
|
||||||
assert(jit.version_num == 20002, "LuaJIT core/library version mismatch")
|
assert(jit.version_num == 20003, "LuaJIT core/library version mismatch")
|
||||||
local bit = require("bit")
|
local bit = require("bit")
|
||||||
|
|
||||||
-- Symbol name prefix for LuaJIT bytecode.
|
-- Symbol name prefix for LuaJIT bytecode.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT ARM disassembler module.
|
-- LuaJIT ARM disassembler module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- This is a helper module used by the LuaJIT machine code dumper module.
|
-- This is a helper module used by the LuaJIT machine code dumper module.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT MIPS disassembler module.
|
-- LuaJIT MIPS disassembler module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT/X license. See Copyright Notice in luajit.h
|
-- Released under the MIT/X license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- This is a helper module used by the LuaJIT machine code dumper module.
|
-- This is a helper module used by the LuaJIT machine code dumper module.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT MIPSEL disassembler wrapper module.
|
-- LuaJIT MIPSEL disassembler wrapper module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- This module just exports the little-endian functions from the
|
-- This module just exports the little-endian functions from the
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT PPC disassembler module.
|
-- LuaJIT PPC disassembler module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT/X license. See Copyright Notice in luajit.h
|
-- Released under the MIT/X license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- This is a helper module used by the LuaJIT machine code dumper module.
|
-- This is a helper module used by the LuaJIT machine code dumper module.
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT x64 disassembler wrapper module.
|
-- LuaJIT x64 disassembler wrapper module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- This module just exports the 64 bit functions from the combined
|
-- This module just exports the 64 bit functions from the combined
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT x86/x64 disassembler module.
|
-- LuaJIT x86/x64 disassembler module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- This is a helper module used by the LuaJIT machine code dumper module.
|
-- This is a helper module used by the LuaJIT machine code dumper module.
|
||||||
|
|||||||
Vendored
+3
-4
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- LuaJIT compiler dump module.
|
-- LuaJIT compiler dump module.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--
|
--
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
-- * m Dump the generated machine code.
|
-- * m Dump the generated machine code.
|
||||||
-- x Print each taken trace exit.
|
-- x Print each taken trace exit.
|
||||||
-- X Print each taken trace exit and the contents of all registers.
|
-- X Print each taken trace exit and the contents of all registers.
|
||||||
|
-- a Print the IR of aborted traces, too.
|
||||||
--
|
--
|
||||||
-- The output format can be set with the following characters:
|
-- The output format can be set with the following characters:
|
||||||
--
|
--
|
||||||
@@ -54,7 +55,7 @@
|
|||||||
|
|
||||||
-- Cache some library functions and objects.
|
-- Cache some library functions and objects.
|
||||||
local jit = require("jit")
|
local jit = require("jit")
|
||||||
assert(jit.version_num == 20002, "LuaJIT core/library version mismatch")
|
assert(jit.version_num == 20003, "LuaJIT core/library version mismatch")
|
||||||
local jutil = require("jit.util")
|
local jutil = require("jit.util")
|
||||||
local vmdef = require("jit.vmdef")
|
local vmdef = require("jit.vmdef")
|
||||||
local funcinfo, funcbc = jutil.funcinfo, jutil.funcbc
|
local funcinfo, funcbc = jutil.funcinfo, jutil.funcbc
|
||||||
@@ -546,10 +547,8 @@ local function dump_trace(what, tr, func, pc, otr, oex)
|
|||||||
out:write("---- TRACE ", tr, " ", what)
|
out:write("---- TRACE ", tr, " ", what)
|
||||||
if otr then out:write(" ", otr, "/", oex) end
|
if otr then out:write(" ", otr, "/", oex) end
|
||||||
out:write(" ", fmtfunc(func, pc), "\n")
|
out:write(" ", fmtfunc(func, pc), "\n")
|
||||||
recprefix = ""
|
|
||||||
elseif what == "stop" or what == "abort" then
|
elseif what == "stop" or what == "abort" then
|
||||||
out:write("---- TRACE ", tr, " ", what)
|
out:write("---- TRACE ", tr, " ", what)
|
||||||
recprefix = nil
|
|
||||||
if what == "abort" then
|
if what == "abort" then
|
||||||
out:write(" ", fmtfunc(func, pc), " -- ", fmterr(otr, oex), "\n")
|
out:write(" ", fmtfunc(func, pc), " -- ", fmterr(otr, oex), "\n")
|
||||||
else
|
else
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
-- Verbose mode of the LuaJIT compiler.
|
-- Verbose mode of the LuaJIT compiler.
|
||||||
--
|
--
|
||||||
-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
|
-- Copyright (C) 2005-2014 Mike Pall. All rights reserved.
|
||||||
-- Released under the MIT license. See Copyright Notice in luajit.h
|
-- Released under the MIT license. See Copyright Notice in luajit.h
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--
|
--
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
-- Cache some library functions and objects.
|
-- Cache some library functions and objects.
|
||||||
local jit = require("jit")
|
local jit = require("jit")
|
||||||
assert(jit.version_num == 20002, "LuaJIT core/library version mismatch")
|
assert(jit.version_num == 20003, "LuaJIT core/library version mismatch")
|
||||||
local jutil = require("jit.util")
|
local jutil = require("jit.util")
|
||||||
local vmdef = require("jit.vmdef")
|
local vmdef = require("jit.vmdef")
|
||||||
local funcinfo, traceinfo = jutil.funcinfo, jutil.traceinfo
|
local funcinfo, traceinfo = jutil.funcinfo, jutil.traceinfo
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Auxiliary library for the Lua/C API.
|
** Auxiliary library for the Lua/C API.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major parts taken verbatim or adapted from the Lua interpreter.
|
** Major parts taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Base and coroutine library.
|
** Base and coroutine library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2011 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2011 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Bit manipulation library.
|
** Bit manipulation library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define lib_bit_c
|
#define lib_bit_c
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Debug library.
|
** Debug library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** FFI library.
|
** FFI library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define lib_ffi_c
|
#define lib_ffi_c
|
||||||
@@ -657,7 +657,7 @@ LJLIB_CF(ffi_string) LJLIB_REC(.)
|
|||||||
TValue *o = lj_lib_checkany(L, 1);
|
TValue *o = lj_lib_checkany(L, 1);
|
||||||
const char *p;
|
const char *p;
|
||||||
size_t len;
|
size_t len;
|
||||||
if (o+1 < L->top) {
|
if (o+1 < L->top && !tvisnil(o+1)) {
|
||||||
len = (size_t)ffi_checkint(L, 2);
|
len = (size_t)ffi_checkint(L, 2);
|
||||||
lj_cconv_ct_tv(cts, ctype_get(cts, CTID_P_CVOID), (uint8_t *)&p, o,
|
lj_cconv_ct_tv(cts, ctype_get(cts, CTID_P_CVOID), (uint8_t *)&p, o,
|
||||||
CCF_ARG(1));
|
CCF_ARG(1));
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Library initialization.
|
** Library initialization.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major parts taken verbatim from the Lua interpreter.
|
** Major parts taken verbatim from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** I/O library.
|
** I/O library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2011 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2011 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
@@ -426,7 +426,7 @@ LJLIB_CF(io_popen)
|
|||||||
LJLIB_CF(io_tmpfile)
|
LJLIB_CF(io_tmpfile)
|
||||||
{
|
{
|
||||||
IOFileUD *iof = io_file_new(L);
|
IOFileUD *iof = io_file_new(L);
|
||||||
#if LJ_TARGET_PS3
|
#if LJ_TARGET_PS3 || LJ_TARGET_PS4
|
||||||
iof->fp = NULL; errno = ENOSYS;
|
iof->fp = NULL; errno = ENOSYS;
|
||||||
#else
|
#else
|
||||||
iof->fp = tmpfile();
|
iof->fp = tmpfile();
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** JIT library.
|
** JIT library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define lib_jit_c
|
#define lib_jit_c
|
||||||
@@ -73,7 +73,7 @@ LJLIB_CF(jit_off)
|
|||||||
LJLIB_CF(jit_flush)
|
LJLIB_CF(jit_flush)
|
||||||
{
|
{
|
||||||
#if LJ_HASJIT
|
#if LJ_HASJIT
|
||||||
if (L->base < L->top && !tvisnil(L->base)) {
|
if (L->base < L->top && tvisnumber(L->base)) {
|
||||||
int traceno = lj_lib_checkint(L, 1);
|
int traceno = lj_lib_checkint(L, 1);
|
||||||
luaJIT_setmode(L, traceno, LUAJIT_MODE_FLUSH|LUAJIT_MODE_TRACE);
|
luaJIT_setmode(L, traceno, LUAJIT_MODE_FLUSH|LUAJIT_MODE_TRACE);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Vendored
+7
-7
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Math library.
|
** Math library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
@@ -47,6 +47,12 @@ LJLIB_ASM_(math_tanh) LJLIB_REC(math_htrig IRCALL_tanh)
|
|||||||
LJLIB_ASM_(math_frexp)
|
LJLIB_ASM_(math_frexp)
|
||||||
LJLIB_ASM_(math_modf) LJLIB_REC(.)
|
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)
|
LJLIB_ASM(math_log) LJLIB_REC(math_log)
|
||||||
{
|
{
|
||||||
double x = lj_lib_checknum(L, 1);
|
double x = lj_lib_checknum(L, 1);
|
||||||
@@ -63,12 +69,6 @@ LJLIB_ASM(math_log) LJLIB_REC(math_log)
|
|||||||
return FFH_RETRY;
|
return FFH_RETRY;
|
||||||
}
|
}
|
||||||
|
|
||||||
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_atan2) LJLIB_REC(.)
|
LJLIB_ASM(math_atan2) LJLIB_REC(.)
|
||||||
{
|
{
|
||||||
lj_lib_checknum(L, 1);
|
lj_lib_checknum(L, 1);
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** OS library.
|
** OS library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
@@ -70,7 +70,7 @@ LJLIB_CF(os_rename)
|
|||||||
|
|
||||||
LJLIB_CF(os_tmpname)
|
LJLIB_CF(os_tmpname)
|
||||||
{
|
{
|
||||||
#if LJ_TARGET_PS3
|
#if LJ_TARGET_PS3 || LJ_TARGET_PS4
|
||||||
lj_err_caller(L, LJ_ERR_OSUNIQF);
|
lj_err_caller(L, LJ_ERR_OSUNIQF);
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
|
|||||||
Vendored
+1
-4
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Package library.
|
** Package library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2012 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2012 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
@@ -68,9 +68,6 @@ static const char *ll_bcsym(void *lib, const char *sym)
|
|||||||
#elif LJ_TARGET_WINDOWS
|
#elif LJ_TARGET_WINDOWS
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#ifndef WINVER
|
|
||||||
#define WINVER 0x0500
|
|
||||||
#endif
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** String library.
|
** String library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
@@ -64,7 +64,7 @@ LJLIB_ASM(string_byte) LJLIB_REC(string_range 0)
|
|||||||
LJLIB_ASM(string_char)
|
LJLIB_ASM(string_char)
|
||||||
{
|
{
|
||||||
int i, nargs = (int)(L->top - L->base);
|
int i, nargs = (int)(L->top - L->base);
|
||||||
char *buf = lj_str_needbuf(L, &G(L)->tmpbuf, (size_t)nargs);
|
char *buf = lj_str_needbuf(L, &G(L)->tmpbuf, (MSize)nargs);
|
||||||
for (i = 1; i <= nargs; i++) {
|
for (i = 1; i <= nargs; i++) {
|
||||||
int32_t k = lj_lib_checkint(L, i);
|
int32_t k = lj_lib_checkint(L, i);
|
||||||
if (!checku8(k))
|
if (!checku8(k))
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Table library.
|
** Table library.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
|
|||||||
Vendored
+6
-4
@@ -177,7 +177,7 @@ static LJ_AINLINE int CALL_MUNMAP(void *ptr, size_t size)
|
|||||||
#if LJ_64
|
#if LJ_64
|
||||||
/* 64 bit mode needs special support for allocating memory in the lower 2GB. */
|
/* 64 bit mode needs special support for allocating memory in the lower 2GB. */
|
||||||
|
|
||||||
#if LJ_TARGET_LINUX
|
#if defined(MAP_32BIT)
|
||||||
|
|
||||||
/* Actually this only gives us max. 1GB in current Linux kernels. */
|
/* Actually this only gives us max. 1GB in current Linux kernels. */
|
||||||
static LJ_AINLINE void *CALL_MMAP(size_t size)
|
static LJ_AINLINE void *CALL_MMAP(size_t size)
|
||||||
@@ -188,7 +188,7 @@ static LJ_AINLINE void *CALL_MMAP(size_t size)
|
|||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif LJ_TARGET_OSX || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__sun__)
|
#elif LJ_TARGET_OSX || LJ_TARGET_PS4 || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun__)
|
||||||
|
|
||||||
/* OSX and FreeBSD mmap() use a naive first-fit linear search.
|
/* OSX and FreeBSD mmap() use a naive first-fit linear search.
|
||||||
** That's perfect for us. Except that -pagezero_size must be set for OSX,
|
** That's perfect for us. Except that -pagezero_size must be set for OSX,
|
||||||
@@ -197,12 +197,14 @@ static LJ_AINLINE void *CALL_MMAP(size_t size)
|
|||||||
*/
|
*/
|
||||||
#if LJ_TARGET_OSX
|
#if LJ_TARGET_OSX
|
||||||
#define MMAP_REGION_START ((uintptr_t)0x10000)
|
#define MMAP_REGION_START ((uintptr_t)0x10000)
|
||||||
|
#elif LJ_TARGET_PS4
|
||||||
|
#define MMAP_REGION_START ((uintptr_t)0x4000)
|
||||||
#else
|
#else
|
||||||
#define MMAP_REGION_START ((uintptr_t)0x10000000)
|
#define MMAP_REGION_START ((uintptr_t)0x10000000)
|
||||||
#endif
|
#endif
|
||||||
#define MMAP_REGION_END ((uintptr_t)0x80000000)
|
#define MMAP_REGION_END ((uintptr_t)0x80000000)
|
||||||
|
|
||||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
|
#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !LJ_TARGET_PS4
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -212,7 +214,7 @@ static LJ_AINLINE void *CALL_MMAP(size_t size)
|
|||||||
/* Hint for next allocation. Doesn't need to be thread-safe. */
|
/* Hint for next allocation. Doesn't need to be thread-safe. */
|
||||||
static uintptr_t alloc_hint = MMAP_REGION_START;
|
static uintptr_t alloc_hint = MMAP_REGION_START;
|
||||||
int retry = 0;
|
int retry = 0;
|
||||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
|
#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !LJ_TARGET_PS4
|
||||||
static int rlimit_modified = 0;
|
static int rlimit_modified = 0;
|
||||||
if (LJ_UNLIKELY(rlimit_modified == 0)) {
|
if (LJ_UNLIKELY(rlimit_modified == 0)) {
|
||||||
struct rlimit rlim;
|
struct rlimit rlim;
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Public Lua/C API.
|
** Public Lua/C API.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
**
|
**
|
||||||
** Major portions taken verbatim or adapted from the Lua interpreter.
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
||||||
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
||||||
@@ -1164,7 +1164,7 @@ LUA_API int lua_gc(lua_State *L, int what, int data)
|
|||||||
MSize a = (MSize)data << 10;
|
MSize a = (MSize)data << 10;
|
||||||
g->gc.threshold = (a <= g->gc.total) ? (g->gc.total - a) : 0;
|
g->gc.threshold = (a <= g->gc.total) ? (g->gc.total - a) : 0;
|
||||||
while (g->gc.total >= g->gc.threshold)
|
while (g->gc.total >= g->gc.threshold)
|
||||||
if (lj_gc_step(L)) {
|
if (lj_gc_step(L) > 0) {
|
||||||
res = 1;
|
res = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+10
-3
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Target architecture selection.
|
** Target architecture selection.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_ARCH_H
|
#ifndef _LJ_ARCH_H
|
||||||
@@ -66,8 +66,8 @@
|
|||||||
#define LUAJIT_OS LUAJIT_OS_LINUX
|
#define LUAJIT_OS LUAJIT_OS_LINUX
|
||||||
#elif defined(__MACH__) && defined(__APPLE__)
|
#elif defined(__MACH__) && defined(__APPLE__)
|
||||||
#define LUAJIT_OS LUAJIT_OS_OSX
|
#define LUAJIT_OS LUAJIT_OS_OSX
|
||||||
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
|
#elif (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
|
||||||
defined(__NetBSD__) || defined(__OpenBSD__)
|
defined(__NetBSD__) || defined(__OpenBSD__)) && !defined(__ORBIS__)
|
||||||
#define LUAJIT_OS LUAJIT_OS_BSD
|
#define LUAJIT_OS LUAJIT_OS_BSD
|
||||||
#elif (defined(__sun__) && defined(__svr4__)) || defined(__CYGWIN__)
|
#elif (defined(__sun__) && defined(__svr4__)) || defined(__CYGWIN__)
|
||||||
#define LUAJIT_OS LUAJIT_OS_POSIX
|
#define LUAJIT_OS LUAJIT_OS_POSIX
|
||||||
@@ -104,6 +104,13 @@
|
|||||||
#define LJ_TARGET_CONSOLE 1
|
#define LJ_TARGET_CONSOLE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __ORBIS__
|
||||||
|
#define LJ_TARGET_PS4 1
|
||||||
|
#define LJ_TARGET_CONSOLE 1
|
||||||
|
#undef NULL
|
||||||
|
#define NULL ((void*)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if _XBOX_VER >= 200
|
#if _XBOX_VER >= 200
|
||||||
#define LJ_TARGET_XBOX360 1
|
#define LJ_TARGET_XBOX360 1
|
||||||
#define LJ_TARGET_CONSOLE 1
|
#define LJ_TARGET_CONSOLE 1
|
||||||
|
|||||||
Vendored
+12
-10
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** IR assembler (SSA IR -> machine code).
|
** IR assembler (SSA IR -> machine code).
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define lj_asm_c
|
#define lj_asm_c
|
||||||
@@ -1246,16 +1246,18 @@ static void asm_phi_fixup(ASMState *as)
|
|||||||
Reg r = rset_picktop(work);
|
Reg r = rset_picktop(work);
|
||||||
IRRef lref = as->phireg[r];
|
IRRef lref = as->phireg[r];
|
||||||
IRIns *ir = IR(lref);
|
IRIns *ir = IR(lref);
|
||||||
/* Left PHI gained a spill slot before the loop? */
|
if (irt_ismarked(ir->t)) {
|
||||||
if (irt_ismarked(ir->t) && ra_hasspill(ir->s)) {
|
irt_clearmark(ir->t);
|
||||||
IRRef ren;
|
/* Left PHI gained a spill slot before the loop? */
|
||||||
lj_ir_set(as->J, IRT(IR_RENAME, IRT_NIL), lref, as->loopsnapno);
|
if (ra_hasspill(ir->s)) {
|
||||||
ren = tref_ref(lj_ir_emit(as->J));
|
IRRef ren;
|
||||||
as->ir = as->T->ir; /* The IR may have been reallocated. */
|
lj_ir_set(as->J, IRT(IR_RENAME, IRT_NIL), lref, as->loopsnapno);
|
||||||
IR(ren)->r = (uint8_t)r;
|
ren = tref_ref(lj_ir_emit(as->J));
|
||||||
IR(ren)->s = SPS_NONE;
|
as->ir = as->T->ir; /* The IR may have been reallocated. */
|
||||||
|
IR(ren)->r = (uint8_t)r;
|
||||||
|
IR(ren)->s = SPS_NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
irt_clearmark(ir->t); /* Always clear marker. */
|
|
||||||
rset_clear(work, r);
|
rset_clear(work, r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** IR assembler (SSA IR -> machine code).
|
** IR assembler (SSA IR -> machine code).
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_ASM_H
|
#ifndef _LJ_ASM_H
|
||||||
|
|||||||
Vendored
+13
-10
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** ARM IR assembler (SSA IR -> machine code).
|
** ARM IR assembler (SSA IR -> machine code).
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* -- Register allocator extensions --------------------------------------- */
|
/* -- Register allocator extensions --------------------------------------- */
|
||||||
@@ -493,6 +493,7 @@ static void asm_retf(ASMState *as, IRIns *ir)
|
|||||||
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
||||||
as->topslot -= (BCReg)delta;
|
as->topslot -= (BCReg)delta;
|
||||||
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
||||||
|
irt_setmark(IR(REF_BASE)->t); /* Children must not coalesce with BASE reg. */
|
||||||
/* Need to force a spill on REF_BASE now to update the stack slot. */
|
/* Need to force a spill on REF_BASE now to update the stack slot. */
|
||||||
emit_lso(as, ARMI_STR, base, RID_SP, ra_spill(as, IR(REF_BASE)));
|
emit_lso(as, ARMI_STR, base, RID_SP, ra_spill(as, IR(REF_BASE)));
|
||||||
emit_setgl(as, base, jit_base);
|
emit_setgl(as, base, jit_base);
|
||||||
@@ -521,10 +522,10 @@ static void asm_tointg(ASMState *as, IRIns *ir, Reg left)
|
|||||||
static void asm_tobit(ASMState *as, IRIns *ir)
|
static void asm_tobit(ASMState *as, IRIns *ir)
|
||||||
{
|
{
|
||||||
RegSet allow = RSET_FPR;
|
RegSet allow = RSET_FPR;
|
||||||
Reg dest = ra_dest(as, ir, RSET_GPR);
|
|
||||||
Reg left = ra_alloc1(as, ir->op1, allow);
|
Reg left = ra_alloc1(as, ir->op1, allow);
|
||||||
Reg right = ra_alloc1(as, ir->op2, rset_clear(allow, left));
|
Reg right = ra_alloc1(as, ir->op2, rset_clear(allow, left));
|
||||||
Reg tmp = ra_scratch(as, rset_clear(allow, right));
|
Reg tmp = ra_scratch(as, rset_clear(allow, right));
|
||||||
|
Reg dest = ra_dest(as, ir, RSET_GPR);
|
||||||
emit_dn(as, ARMI_VMOV_R_S, dest, (tmp & 15));
|
emit_dn(as, ARMI_VMOV_R_S, dest, (tmp & 15));
|
||||||
emit_dnm(as, ARMI_VADD_D, (tmp & 15), (left & 15), (right & 15));
|
emit_dnm(as, ARMI_VADD_D, (tmp & 15), (left & 15), (right & 15));
|
||||||
}
|
}
|
||||||
@@ -564,9 +565,9 @@ static void asm_conv(ASMState *as, IRIns *ir)
|
|||||||
lua_assert(irt_isint(ir->t) && st == IRT_NUM);
|
lua_assert(irt_isint(ir->t) && st == IRT_NUM);
|
||||||
asm_tointg(as, ir, ra_alloc1(as, lref, RSET_FPR));
|
asm_tointg(as, ir, ra_alloc1(as, lref, RSET_FPR));
|
||||||
} else {
|
} else {
|
||||||
Reg dest = ra_dest(as, ir, RSET_GPR);
|
|
||||||
Reg left = ra_alloc1(as, lref, RSET_FPR);
|
Reg left = ra_alloc1(as, lref, RSET_FPR);
|
||||||
Reg tmp = ra_scratch(as, rset_exclude(RSET_FPR, left));
|
Reg tmp = ra_scratch(as, rset_exclude(RSET_FPR, left));
|
||||||
|
Reg dest = ra_dest(as, ir, RSET_GPR);
|
||||||
ARMIns ai;
|
ARMIns ai;
|
||||||
emit_dn(as, ARMI_VMOV_R_S, dest, (tmp & 15));
|
emit_dn(as, ARMI_VMOV_R_S, dest, (tmp & 15));
|
||||||
ai = irt_isint(ir->t) ?
|
ai = irt_isint(ir->t) ?
|
||||||
@@ -1210,6 +1211,9 @@ static void asm_sload(ASMState *as, IRIns *ir)
|
|||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
if (ra_used(ir)) {
|
if (ra_used(ir)) {
|
||||||
|
Reg tmp = RID_NONE;
|
||||||
|
if ((ir->op2 & IRSLOAD_CONVERT))
|
||||||
|
tmp = ra_scratch(as, t == IRT_INT ? RSET_FPR : RSET_GPR);
|
||||||
lua_assert((LJ_SOFTFP ? 0 : irt_isnum(ir->t)) ||
|
lua_assert((LJ_SOFTFP ? 0 : irt_isnum(ir->t)) ||
|
||||||
irt_isint(ir->t) || irt_isaddr(ir->t));
|
irt_isint(ir->t) || irt_isaddr(ir->t));
|
||||||
dest = ra_dest(as, ir, (!LJ_SOFTFP && t == IRT_NUM) ? RSET_FPR : allow);
|
dest = ra_dest(as, ir, (!LJ_SOFTFP && t == IRT_NUM) ? RSET_FPR : allow);
|
||||||
@@ -1217,18 +1221,15 @@ static void asm_sload(ASMState *as, IRIns *ir)
|
|||||||
base = ra_alloc1(as, REF_BASE, allow);
|
base = ra_alloc1(as, REF_BASE, allow);
|
||||||
if ((ir->op2 & IRSLOAD_CONVERT)) {
|
if ((ir->op2 & IRSLOAD_CONVERT)) {
|
||||||
if (t == IRT_INT) {
|
if (t == IRT_INT) {
|
||||||
Reg tmp = ra_scratch(as, RSET_FPR);
|
|
||||||
emit_dn(as, ARMI_VMOV_R_S, dest, (tmp & 15));
|
emit_dn(as, ARMI_VMOV_R_S, dest, (tmp & 15));
|
||||||
emit_dm(as, ARMI_VCVT_S32_F64, (tmp & 15), (tmp & 15));
|
emit_dm(as, ARMI_VCVT_S32_F64, (tmp & 15), (tmp & 15));
|
||||||
dest = tmp;
|
|
||||||
t = IRT_NUM; /* Check for original type. */
|
t = IRT_NUM; /* Check for original type. */
|
||||||
} else {
|
} else {
|
||||||
Reg tmp = ra_scratch(as, RSET_GPR);
|
|
||||||
emit_dm(as, ARMI_VCVT_F64_S32, (dest & 15), (dest & 15));
|
emit_dm(as, ARMI_VCVT_F64_S32, (dest & 15), (dest & 15));
|
||||||
emit_dn(as, ARMI_VMOV_S_R, tmp, (dest & 15));
|
emit_dn(as, ARMI_VMOV_S_R, tmp, (dest & 15));
|
||||||
dest = tmp;
|
|
||||||
t = IRT_INT; /* Check for original type. */
|
t = IRT_INT; /* Check for original type. */
|
||||||
}
|
}
|
||||||
|
dest = tmp;
|
||||||
}
|
}
|
||||||
goto dotypecheck;
|
goto dotypecheck;
|
||||||
}
|
}
|
||||||
@@ -1503,7 +1504,7 @@ static void asm_intmul(ASMState *as, IRIns *ir)
|
|||||||
if (dest == left && left != right) { left = right; right = dest; }
|
if (dest == left && left != right) { left = right; right = dest; }
|
||||||
if (irt_isguard(ir->t)) { /* IR_MULOV */
|
if (irt_isguard(ir->t)) { /* IR_MULOV */
|
||||||
if (!(as->flags & JIT_F_ARMV6) && dest == left)
|
if (!(as->flags & JIT_F_ARMV6) && dest == left)
|
||||||
tmp = left = ra_scratch(as, rset_exclude(RSET_FPR, left));
|
tmp = left = ra_scratch(as, rset_exclude(RSET_GPR, left));
|
||||||
asm_guardcc(as, CC_NE);
|
asm_guardcc(as, CC_NE);
|
||||||
emit_nm(as, ARMI_TEQ|ARMF_SH(ARMSH_ASR, 31), RID_TMP, dest);
|
emit_nm(as, ARMI_TEQ|ARMF_SH(ARMSH_ASR, 31), RID_TMP, dest);
|
||||||
emit_dnm(as, ARMI_SMULL|ARMF_S(right), dest, RID_TMP, left);
|
emit_dnm(as, ARMI_SMULL|ARMF_S(right), dest, RID_TMP, left);
|
||||||
@@ -2102,7 +2103,8 @@ static void asm_head_root_base(ASMState *as)
|
|||||||
IRIns *ir;
|
IRIns *ir;
|
||||||
asm_head_lreg(as);
|
asm_head_lreg(as);
|
||||||
ir = IR(REF_BASE);
|
ir = IR(REF_BASE);
|
||||||
if (ra_hasreg(ir->r) && rset_test(as->modset, ir->r)) ra_spill(as, ir);
|
if (ra_hasreg(ir->r) && (rset_test(as->modset, ir->r) || irt_ismarked(ir->t)))
|
||||||
|
ra_spill(as, ir);
|
||||||
ra_destreg(as, ir, RID_BASE);
|
ra_destreg(as, ir, RID_BASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2112,7 +2114,8 @@ static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow)
|
|||||||
IRIns *ir;
|
IRIns *ir;
|
||||||
asm_head_lreg(as);
|
asm_head_lreg(as);
|
||||||
ir = IR(REF_BASE);
|
ir = IR(REF_BASE);
|
||||||
if (ra_hasreg(ir->r) && rset_test(as->modset, ir->r)) ra_spill(as, ir);
|
if (ra_hasreg(ir->r) && (rset_test(as->modset, ir->r) || irt_ismarked(ir->t)))
|
||||||
|
ra_spill(as, ir);
|
||||||
if (ra_hasspill(irp->s)) {
|
if (ra_hasspill(irp->s)) {
|
||||||
rset_clear(allow, ra_dest(as, ir, allow));
|
rset_clear(allow, ra_dest(as, ir, allow));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Vendored
+4
-3
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** MIPS IR assembler (SSA IR -> machine code).
|
** MIPS IR assembler (SSA IR -> machine code).
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* -- Register allocator extensions --------------------------------------- */
|
/* -- Register allocator extensions --------------------------------------- */
|
||||||
@@ -394,6 +394,7 @@ static void asm_retf(ASMState *as, IRIns *ir)
|
|||||||
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
||||||
as->topslot -= (BCReg)delta;
|
as->topslot -= (BCReg)delta;
|
||||||
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
||||||
|
irt_setmark(IR(REF_BASE)->t); /* Children must not coalesce with BASE reg. */
|
||||||
emit_setgl(as, base, jit_base);
|
emit_setgl(as, base, jit_base);
|
||||||
emit_addptr(as, base, -8*delta);
|
emit_addptr(as, base, -8*delta);
|
||||||
asm_guard(as, MIPSI_BNE, RID_TMP,
|
asm_guard(as, MIPSI_BNE, RID_TMP,
|
||||||
@@ -1723,7 +1724,7 @@ static void asm_head_root_base(ASMState *as)
|
|||||||
if (as->loopinv) as->mctop--;
|
if (as->loopinv) as->mctop--;
|
||||||
if (ra_hasreg(r)) {
|
if (ra_hasreg(r)) {
|
||||||
ra_free(as, r);
|
ra_free(as, r);
|
||||||
if (rset_test(as->modset, r))
|
if (rset_test(as->modset, r) || irt_ismarked(ir->t))
|
||||||
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
||||||
if (r != RID_BASE)
|
if (r != RID_BASE)
|
||||||
emit_move(as, r, RID_BASE);
|
emit_move(as, r, RID_BASE);
|
||||||
@@ -1738,7 +1739,7 @@ static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow)
|
|||||||
if (as->loopinv) as->mctop--;
|
if (as->loopinv) as->mctop--;
|
||||||
if (ra_hasreg(r)) {
|
if (ra_hasreg(r)) {
|
||||||
ra_free(as, r);
|
ra_free(as, r);
|
||||||
if (rset_test(as->modset, r))
|
if (rset_test(as->modset, r) || irt_ismarked(ir->t))
|
||||||
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
||||||
if (irp->r == r) {
|
if (irp->r == r) {
|
||||||
rset_clear(allow, r); /* Mark same BASE register as coalesced. */
|
rset_clear(allow, r); /* Mark same BASE register as coalesced. */
|
||||||
|
|||||||
Vendored
+4
-3
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** PPC IR assembler (SSA IR -> machine code).
|
** PPC IR assembler (SSA IR -> machine code).
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* -- Register allocator extensions --------------------------------------- */
|
/* -- Register allocator extensions --------------------------------------- */
|
||||||
@@ -381,6 +381,7 @@ static void asm_retf(ASMState *as, IRIns *ir)
|
|||||||
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
||||||
as->topslot -= (BCReg)delta;
|
as->topslot -= (BCReg)delta;
|
||||||
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
||||||
|
irt_setmark(IR(REF_BASE)->t); /* Children must not coalesce with BASE reg. */
|
||||||
emit_setgl(as, base, jit_base);
|
emit_setgl(as, base, jit_base);
|
||||||
emit_addptr(as, base, -8*delta);
|
emit_addptr(as, base, -8*delta);
|
||||||
asm_guardcc(as, CC_NE);
|
asm_guardcc(as, CC_NE);
|
||||||
@@ -1901,7 +1902,7 @@ static void asm_head_root_base(ASMState *as)
|
|||||||
Reg r = ir->r;
|
Reg r = ir->r;
|
||||||
if (ra_hasreg(r)) {
|
if (ra_hasreg(r)) {
|
||||||
ra_free(as, r);
|
ra_free(as, r);
|
||||||
if (rset_test(as->modset, r))
|
if (rset_test(as->modset, r) || irt_ismarked(ir->t))
|
||||||
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
||||||
if (r != RID_BASE)
|
if (r != RID_BASE)
|
||||||
emit_mr(as, r, RID_BASE);
|
emit_mr(as, r, RID_BASE);
|
||||||
@@ -1915,7 +1916,7 @@ static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow)
|
|||||||
Reg r = ir->r;
|
Reg r = ir->r;
|
||||||
if (ra_hasreg(r)) {
|
if (ra_hasreg(r)) {
|
||||||
ra_free(as, r);
|
ra_free(as, r);
|
||||||
if (rset_test(as->modset, r))
|
if (rset_test(as->modset, r) || irt_ismarked(ir->t))
|
||||||
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
||||||
if (irp->r == r) {
|
if (irp->r == r) {
|
||||||
rset_clear(allow, r); /* Mark same BASE register as coalesced. */
|
rset_clear(allow, r); /* Mark same BASE register as coalesced. */
|
||||||
|
|||||||
Vendored
+4
-3
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** x86/x64 IR assembler (SSA IR -> machine code).
|
** x86/x64 IR assembler (SSA IR -> machine code).
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* -- Guard handling ------------------------------------------------------ */
|
/* -- Guard handling ------------------------------------------------------ */
|
||||||
@@ -647,6 +647,7 @@ static void asm_retf(ASMState *as, IRIns *ir)
|
|||||||
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
int32_t delta = 1+bc_a(*((const BCIns *)pc - 1));
|
||||||
as->topslot -= (BCReg)delta;
|
as->topslot -= (BCReg)delta;
|
||||||
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
if ((int32_t)as->topslot < 0) as->topslot = 0;
|
||||||
|
irt_setmark(IR(REF_BASE)->t); /* Children must not coalesce with BASE reg. */
|
||||||
emit_setgl(as, base, jit_base);
|
emit_setgl(as, base, jit_base);
|
||||||
emit_addptr(as, base, -8*delta);
|
emit_addptr(as, base, -8*delta);
|
||||||
asm_guardcc(as, CC_NE);
|
asm_guardcc(as, CC_NE);
|
||||||
@@ -2481,7 +2482,7 @@ static void asm_head_root_base(ASMState *as)
|
|||||||
Reg r = ir->r;
|
Reg r = ir->r;
|
||||||
if (ra_hasreg(r)) {
|
if (ra_hasreg(r)) {
|
||||||
ra_free(as, r);
|
ra_free(as, r);
|
||||||
if (rset_test(as->modset, r))
|
if (rset_test(as->modset, r) || irt_ismarked(ir->t))
|
||||||
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
||||||
if (r != RID_BASE)
|
if (r != RID_BASE)
|
||||||
emit_rr(as, XO_MOV, r, RID_BASE);
|
emit_rr(as, XO_MOV, r, RID_BASE);
|
||||||
@@ -2495,7 +2496,7 @@ static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow)
|
|||||||
Reg r = ir->r;
|
Reg r = ir->r;
|
||||||
if (ra_hasreg(r)) {
|
if (ra_hasreg(r)) {
|
||||||
ra_free(as, r);
|
ra_free(as, r);
|
||||||
if (rset_test(as->modset, r))
|
if (rset_test(as->modset, r) || irt_ismarked(ir->t))
|
||||||
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
ir->r = RID_INIT; /* No inheritance for modified BASE register. */
|
||||||
if (irp->r == r) {
|
if (irp->r == r) {
|
||||||
rset_clear(allow, r); /* Mark same BASE register as coalesced. */
|
rset_clear(allow, r); /* Mark same BASE register as coalesced. */
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Bytecode instruction modes.
|
** Bytecode instruction modes.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define lj_bc_c
|
#define lj_bc_c
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Bytecode instruction format.
|
** Bytecode instruction format.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_BC_H
|
#ifndef _LJ_BC_H
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Bytecode dump definitions.
|
** Bytecode dump definitions.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_BCDUMP_H
|
#ifndef _LJ_BCDUMP_H
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Bytecode reader.
|
** Bytecode reader.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define lj_bcread_c
|
#define lj_bcread_c
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Bytecode writer.
|
** Bytecode writer.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define lj_bcwrite_c
|
#define lj_bcwrite_c
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C data arithmetic.
|
** C data arithmetic.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lj_obj.h"
|
#include "lj_obj.h"
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C data arithmetic.
|
** C data arithmetic.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_CARITH_H
|
#ifndef _LJ_CARITH_H
|
||||||
|
|||||||
Vendored
+4
-3
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** FFI C call handling.
|
** FFI C call handling.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lj_obj.h"
|
#include "lj_obj.h"
|
||||||
@@ -173,9 +173,10 @@
|
|||||||
|
|
||||||
#define CCALL_HANDLE_REGARG \
|
#define CCALL_HANDLE_REGARG \
|
||||||
if (isfp) { /* Try to pass argument in FPRs. */ \
|
if (isfp) { /* Try to pass argument in FPRs. */ \
|
||||||
if (nfpr + n <= CCALL_NARG_FPR) { \
|
int n2 = ctype_isvector(d->info) ? 1 : n; \
|
||||||
|
if (nfpr + n2 <= CCALL_NARG_FPR) { \
|
||||||
dp = &cc->fpr[nfpr]; \
|
dp = &cc->fpr[nfpr]; \
|
||||||
nfpr += n; \
|
nfpr += n2; \
|
||||||
goto done; \
|
goto done; \
|
||||||
} \
|
} \
|
||||||
} else { /* Try to pass argument in GPRs. */ \
|
} else { /* Try to pass argument in GPRs. */ \
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** FFI C call handling.
|
** FFI C call handling.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_CCALL_H
|
#ifndef _LJ_CCALL_H
|
||||||
|
|||||||
Vendored
+5
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** FFI C callback handling.
|
** FFI C callback handling.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lj_obj.h"
|
#include "lj_obj.h"
|
||||||
@@ -408,6 +408,7 @@ static void callback_conv_args(CTState *cts, lua_State *L)
|
|||||||
intptr_t *stack = cts->cb.stack;
|
intptr_t *stack = cts->cb.stack;
|
||||||
MSize slot = cts->cb.slot;
|
MSize slot = cts->cb.slot;
|
||||||
CTypeID id = 0, rid, fid;
|
CTypeID id = 0, rid, fid;
|
||||||
|
int gcsteps = 0;
|
||||||
CType *ct;
|
CType *ct;
|
||||||
GCfunc *fn;
|
GCfunc *fn;
|
||||||
MSize ngpr = 0, nsp = 0, maxgpr = CCALL_NARG_GPR;
|
MSize ngpr = 0, nsp = 0, maxgpr = CCALL_NARG_GPR;
|
||||||
@@ -475,7 +476,7 @@ static void callback_conv_args(CTState *cts, lua_State *L)
|
|||||||
done:
|
done:
|
||||||
if (LJ_BE && cta->size < CTSIZE_PTR)
|
if (LJ_BE && cta->size < CTSIZE_PTR)
|
||||||
sp = (void *)((uint8_t *)sp + CTSIZE_PTR-cta->size);
|
sp = (void *)((uint8_t *)sp + CTSIZE_PTR-cta->size);
|
||||||
lj_cconv_tv_ct(cts, cta, 0, o++, sp);
|
gcsteps += lj_cconv_tv_ct(cts, cta, 0, o++, sp);
|
||||||
}
|
}
|
||||||
fid = ctf->sib;
|
fid = ctf->sib;
|
||||||
}
|
}
|
||||||
@@ -485,6 +486,8 @@ static void callback_conv_args(CTState *cts, lua_State *L)
|
|||||||
if (ctype_cconv(ct->info) != CTCC_CDECL)
|
if (ctype_cconv(ct->info) != CTCC_CDECL)
|
||||||
(L->base-2)->u32.hi |= (nsp << (16+2));
|
(L->base-2)->u32.hi |= (nsp << (16+2));
|
||||||
#endif
|
#endif
|
||||||
|
while (gcsteps-- > 0)
|
||||||
|
lj_gc_check(L);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert Lua object to callback result. */
|
/* Convert Lua object to callback result. */
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** FFI C callback handling.
|
** FFI C callback handling.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_CCALLBACK_H
|
#ifndef _LJ_CCALLBACK_H
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C type conversions.
|
** C type conversions.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lj_obj.h"
|
#include "lj_obj.h"
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C type conversions.
|
** C type conversions.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_CCONV_H
|
#ifndef _LJ_CCONV_H
|
||||||
@@ -29,7 +29,7 @@ static LJ_AINLINE uint32_t cconv_idx(CTInfo info)
|
|||||||
uint32_t idx = ((info >> 26) & 15u); /* Dispatch bits. */
|
uint32_t idx = ((info >> 26) & 15u); /* Dispatch bits. */
|
||||||
lua_assert(ctype_type(info) <= CT_MAYCONVERT);
|
lua_assert(ctype_type(info) <= CT_MAYCONVERT);
|
||||||
#if LJ_64
|
#if LJ_64
|
||||||
idx = ((U64x(f436fff5,fff7f021) >> 4*idx) & 15u);
|
idx = ((uint32_t)(U64x(f436fff5,fff7f021) >> 4*idx) & 15u);
|
||||||
#else
|
#else
|
||||||
idx = (((idx < 8 ? 0xfff7f021u : 0xf436fff5) >> 4*(idx & 7u)) & 15u);
|
idx = (((idx < 8 ? 0xfff7f021u : 0xf436fff5) >> 4*(idx & 7u)) & 15u);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C data management.
|
** C data management.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lj_obj.h"
|
#include "lj_obj.h"
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C data management.
|
** C data management.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_CDATA_H
|
#ifndef _LJ_CDATA_H
|
||||||
|
|||||||
Vendored
+2
-5
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** FFI C library loader.
|
** FFI C library loader.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lj_obj.h"
|
#include "lj_obj.h"
|
||||||
@@ -144,9 +144,6 @@ static void *clib_getsym(CLibrary *cl, const char *name)
|
|||||||
#elif LJ_TARGET_WINDOWS
|
#elif LJ_TARGET_WINDOWS
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#ifndef WINVER
|
|
||||||
#define WINVER 0x0500
|
|
||||||
#endif
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
||||||
@@ -220,7 +217,7 @@ static void clib_unloadlib(CLibrary *cl)
|
|||||||
FreeLibrary((HINSTANCE)h);
|
FreeLibrary((HINSTANCE)h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!cl->handle) {
|
} else if (cl->handle) {
|
||||||
FreeLibrary((HINSTANCE)cl->handle);
|
FreeLibrary((HINSTANCE)cl->handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** FFI C library loader.
|
** FFI C library loader.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_CLIB_H
|
#ifndef _LJ_CLIB_H
|
||||||
|
|||||||
Vendored
+12
-12
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C declaration parser.
|
** C declaration parser.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lj_obj.h"
|
#include "lj_obj.h"
|
||||||
@@ -57,14 +57,22 @@ static LJ_AINLINE int cp_iseol(CPChar c)
|
|||||||
return (c == '\n' || c == '\r');
|
return (c == '\n' || c == '\r');
|
||||||
}
|
}
|
||||||
|
|
||||||
static LJ_AINLINE CPChar cp_get(CPState *cp);
|
|
||||||
|
|
||||||
/* Peek next raw character. */
|
/* Peek next raw character. */
|
||||||
static LJ_AINLINE CPChar cp_rawpeek(CPState *cp)
|
static LJ_AINLINE CPChar cp_rawpeek(CPState *cp)
|
||||||
{
|
{
|
||||||
return (CPChar)(uint8_t)(*cp->p);
|
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. */
|
/* Transparently skip backslash-escaped line breaks. */
|
||||||
static LJ_NOINLINE CPChar cp_get_bs(CPState *cp)
|
static LJ_NOINLINE CPChar cp_get_bs(CPState *cp)
|
||||||
{
|
{
|
||||||
@@ -77,14 +85,6 @@ static LJ_NOINLINE CPChar cp_get_bs(CPState *cp)
|
|||||||
return cp_get(cp);
|
return cp_get(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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Grow save buffer. */
|
/* Grow save buffer. */
|
||||||
static LJ_NOINLINE void cp_save_grow(CPState *cp, CPChar c)
|
static LJ_NOINLINE void cp_save_grow(CPState *cp, CPChar c)
|
||||||
{
|
{
|
||||||
@@ -1258,7 +1258,7 @@ static void cp_struct_layout(CPState *cp, CTypeID sid, CTInfo sattr)
|
|||||||
sinfo |= (info & (CTF_QUAL|CTF_VLA)); /* Merge pseudo-qualifiers. */
|
sinfo |= (info & (CTF_QUAL|CTF_VLA)); /* Merge pseudo-qualifiers. */
|
||||||
|
|
||||||
/* Check for size overflow and determine alignment. */
|
/* Check for size overflow and determine alignment. */
|
||||||
if (sz >= 0x20000000u || bofs + csz < bofs) {
|
if (sz >= 0x20000000u || bofs + csz < bofs || (info & CTF_VLA)) {
|
||||||
if (!(sz == CTSIZE_INVALID && ctype_isarray(info) &&
|
if (!(sz == CTSIZE_INVALID && ctype_isarray(info) &&
|
||||||
!(sinfo & CTF_UNION)))
|
!(sinfo & CTF_UNION)))
|
||||||
cp_err(cp, LJ_ERR_FFI_INVSIZE);
|
cp_err(cp, LJ_ERR_FFI_INVSIZE);
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** C declaration parser.
|
** C declaration parser.
|
||||||
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
|
** Copyright (C) 2005-2014 Mike Pall. See Copyright Notice in luajit.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LJ_CPARSE_H
|
#ifndef _LJ_CPARSE_H
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user