mirror of
https://github.com/lua/lua.git
synced 2026-08-03 03:49:04 +00:00
Details
Comments, capitalization in the manual, globals in test 'heady.lua'
This commit is contained in:
@@ -340,7 +340,7 @@ OP_VARARG,/* A C R[A], R[A+1], ..., R[A+C-2] = vararg */
|
||||
|
||||
OP_GETVARG, /* A B C R[A] := R[B][R[C]], R[B] is vararg parameter */
|
||||
|
||||
OP_ERRNNIL,/* A Bx raise error if R[A] ~= nil (K[Bx] is global name)*/
|
||||
OP_ERRNNIL,/* A Bx raise error if R[A] ~= nil (K[Bx - 1] is global name)*/
|
||||
|
||||
OP_VARARGPREP,/* (adjust vararg parameters) */
|
||||
|
||||
@@ -386,6 +386,9 @@ OP_EXTRAARG/* Ax extra (larger) argument for previous opcode */
|
||||
power of 2) plus 1, or zero for size zero. If not k, the array size
|
||||
is vC. Otherwise, the array size is EXTRAARG _ vC.
|
||||
|
||||
(*) In OP_ERRNNIL, (Bx == 0) means index of global name doesn't
|
||||
fit in Bx. (So, that name is not available for the instruction.)
|
||||
|
||||
(*) For comparisons, k specifies what condition the test should accept
|
||||
(true or false).
|
||||
|
||||
|
||||
@@ -2402,7 +2402,7 @@ g(3, 4, 5, 8) a=3, b=4, ... -> 5 8
|
||||
g(5, r()) a=5, b=1, ... -> 2 3
|
||||
}
|
||||
|
||||
The presence of a varag table in a variadic function is indicated
|
||||
The presence of a vararg table in a variadic function is indicated
|
||||
by a name after the three dots.
|
||||
When present,
|
||||
a vararg table behaves like a read-only local variable
|
||||
@@ -2418,8 +2418,9 @@ local <const> name = table.pack(...)
|
||||
}
|
||||
|
||||
As an optimization,
|
||||
if the vararg table is used only as a base in indexing expressions
|
||||
(the @T{t} in @T{t[exp]} or @T{t.id}) and it is not an upvalue,
|
||||
if the vararg table is used only as the base table
|
||||
in the syntactic constructions @T{t[exp]} or @T{t.id})
|
||||
and it is not an upvalue,
|
||||
the code does not create an actual table and instead translates
|
||||
the indexing expressions into accesses to the internal vararg data.
|
||||
|
||||
@@ -2427,8 +2428,7 @@ the indexing expressions into accesses to the internal vararg data.
|
||||
|
||||
}
|
||||
|
||||
@sect3{multires| @title{Lists of expressions, multiple results,
|
||||
and adjustment}
|
||||
@sect3{multires| @title{Lists of Expressions, Multiple Results, and Adjustment}
|
||||
|
||||
Both function calls and vararg expressions can result in multiple values.
|
||||
These expressions are called @def{multires expressions}.
|
||||
@@ -2686,7 +2686,7 @@ which behaves like a nil value.
|
||||
|
||||
}
|
||||
|
||||
@sect3{constchar|@title{Pointers to strings}
|
||||
@sect3{constchar|@title{Pointers to Strings}
|
||||
|
||||
Several functions in the API return pointers (@T{const char*})
|
||||
to Lua strings in the stack.
|
||||
@@ -4126,6 +4126,8 @@ Lua still has to allocate a header for the string.
|
||||
In case of a memory-allocation error,
|
||||
Lua will call @id{falloc} before raising the error.
|
||||
|
||||
The function returns a pointer to the string (that is, @id{s}).
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8413,7 +8415,7 @@ a value greater than any other numeric value.
|
||||
|
||||
}
|
||||
|
||||
@LibEntry{math.ldexp(m, e)|
|
||||
@LibEntry{math.ldexp (m, e)|
|
||||
|
||||
Returns @M{m2@sp{e}}, where @id{e} is an integer.
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
-- $Id: testes/heavy.lua,v $
|
||||
-- See Copyright Notice in file lua.h
|
||||
|
||||
global <const> *
|
||||
|
||||
local function teststring ()
|
||||
print("creating a string too long")
|
||||
do
|
||||
@@ -47,9 +49,9 @@ local function loadrep (x, what)
|
||||
end
|
||||
|
||||
|
||||
function controlstruct ()
|
||||
local function controlstruct ()
|
||||
print("control structure too long")
|
||||
local lim = ((1 << 24) - 2) // 3
|
||||
local lim = ((1 << 24) - 2) // 4
|
||||
local s = string.rep("a = a + 1\n", lim)
|
||||
s = "while true do " .. s .. "end"
|
||||
assert(load(s))
|
||||
@@ -63,7 +65,7 @@ function controlstruct ()
|
||||
end
|
||||
|
||||
|
||||
function manylines ()
|
||||
local function manylines ()
|
||||
print("loading chunk with too many lines")
|
||||
local st, msg = loadrep("\n", "lines")
|
||||
assert(not st and string.find(msg, "too many lines"))
|
||||
@@ -71,7 +73,7 @@ function manylines ()
|
||||
end
|
||||
|
||||
|
||||
function hugeid ()
|
||||
local function hugeid ()
|
||||
print("loading chunk with huge identifier")
|
||||
local st, msg = loadrep("a", "chars")
|
||||
assert(not st and
|
||||
@@ -80,7 +82,7 @@ function hugeid ()
|
||||
print('+')
|
||||
end
|
||||
|
||||
function toomanyinst ()
|
||||
local function toomanyinst ()
|
||||
print("loading chunk with too many instructions")
|
||||
local st, msg = loadrep("a = 10; ", "instructions")
|
||||
print('+')
|
||||
@@ -107,7 +109,7 @@ local function loadrepfunc (prefix, f)
|
||||
end
|
||||
|
||||
|
||||
function toomanyconst ()
|
||||
local function toomanyconst ()
|
||||
print("loading function with too many constants")
|
||||
loadrepfunc("function foo () return {0,",
|
||||
function (n)
|
||||
@@ -126,7 +128,7 @@ function toomanyconst ()
|
||||
end
|
||||
|
||||
|
||||
function toomanystr ()
|
||||
local function toomanystr ()
|
||||
local a = {}
|
||||
local st, msg = pcall(function ()
|
||||
for i = 1, math.huge do
|
||||
@@ -144,7 +146,7 @@ function toomanystr ()
|
||||
end
|
||||
|
||||
|
||||
function toomanyidx ()
|
||||
local function toomanyidx ()
|
||||
local a = {}
|
||||
local st, msg = pcall(function ()
|
||||
for i = 1, math.huge do
|
||||
|
||||
Reference in New Issue
Block a user