summaryrefslogtreecommitdiff
path: root/lcode.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* First implementation for 'const' variablesRoberto Ierusalimschy2019-05-171-15/+21
| | | | | A variable can be declared const, which means it cannot be assigned to, with the syntax 'local <const> name = exp'.
* Keep correct type for immediate operands in comparisonsRoberto Ierusalimschy2019-03-221-19/+23
| | | | | | | | | | | | When calling metamethods for things like 'a < 3.0', which generates the opcode OP_LTI, the C register tells that the operand was converted to an integer, so that it can be corrected to float when calling a metamethod. This commit also includes some other stuff: - file 'onelua.c' added to the project - opcode OP_PREPVARARG renamed to OP_VARARGPREP - comparison opcodes rewritten through macros
* Added opcodes for arithmetic with K operandsRoberto Ierusalimschy2018-11-231-53/+73
| | | | | | | | Added opcodes for all seven arithmetic operators with K operands (that is, operands that are numbers in the array of constants of the function). They cover the cases of constant float operands (e.g., 'x + .0.0', 'x^0.5') and large integer operands (e.g., 'x % 10000').
* Big revamp in the implmentation of labels/gotosRoberto Ierusalimschy2018-10-291-34/+0
| | | | | | | | Added restriction that, when a label is created, there cannot be another label with the same name visible. That allows backward goto's to be resolved when they are read. Backward goto's get a close if they jump out of the scope of some variable; labels get a close only if previous goto to it jumps out of the scope of some upvalue.
* Towards "to closed" local variablesRoberto Ierusalimschy2018-10-081-2/+2
| | | | | | | | | | | | Start of the implementation of "scoped variables" or "to be closed" variables, local variables whose '__close' (or themselves) are called when they go out of scope. This commit implements the syntax, the opcode, and the creation of the corresponding upvalue, but it still does not call the finalizations when the variable goes out of scope (the most important part). Currently, the syntax is 'local scoped name = exp', but that will probably change.
* Fixed bug in line info. when using 'not' operatorRoberto Ierusalimschy2018-07-111-23/+53
| | | | | | | | | When creating code for a jump on a 'not' condition, the code generator was removing an instruction (the OP_NOT) without adjusting its corresponding line information. This fix also added tests for this case and extra functionality in the test library to debug line info. structures.
* no more nil-in-tableRoberto Ierusalimschy2018-04-041-52/+3
|
* FALLTHROUGH comment must be last "statement"Roberto Ierusalimschy2018-03-161-3/+2
| | | | (so it does not work when inside a block)
* new experimental syntax using reserved word 'undef'Roberto Ierusalimschy2018-03-071-3/+60
|
* better names for macros for tags and types.Roberto Ierusalimschy2018-02-261-2/+2
| | | | | rttype -> rawtt; ttyperaw -> withvariant; ttype -> ttypetag; tnov -> ttype
* new opcodes OP_GTI/OP_GEIRoberto Ierusalimschy2018-02-211-18/+12
|
* small reorganization of 'luaV_flttointeger'/'luaV_tointeger'Roberto Ierusalimschy2018-02-211-4/+2
|
* correct way to check stack space for vararg functionsRoberto Ierusalimschy2018-02-171-2/+2
|
* some simplifications/optimizations in returns from Lua functionsRoberto Ierusalimschy2018-02-151-14/+18
|
* vararg back to '...' (but with another implementation)Roberto Ierusalimschy2018-02-091-13/+13
| | | | new implementation should have zero overhead for non-vararg functions
* janitor work on castsRoberto Ierusalimschy2018-01-281-2/+2
|
* OP_CONCAT does not move its result (to simplify its execution)Roberto Ierusalimschy2018-01-271-32/+52
|
* commentsRoberto Ierusalimschy2018-01-181-11/+13
|
* keep more opcode arguments byte-alignedRoberto Ierusalimschy2018-01-091-6/+6
|
* assert cannot use instruction after the lastRoberto Ierusalimschy2017-12-221-2/+2
|
* new macros 'isOT'/'isIT'Roberto Ierusalimschy2017-12-221-7/+7
| | | | | (plus exchanged parameters of OP_VARARG to make it similar to other 'isOT' instructions)
* new auxiliary function 'luaK_isKint' + removal of 'luaK_needclose',Roberto Ierusalimschy2017-12-181-16/+10
| | | | which was not being used anywhere.
* some cleaning on signed opcode parametersRoberto Ierusalimschy2017-12-151-12/+32
|
* 'VRELOCABLE' -> 'VRELOC'Roberto Ierusalimschy2017-12-141-16/+16
|
* new opcodes BANDK/BORK/BXORK. (They do not use immediate operandsRoberto Ierusalimschy2017-12-131-10/+42
| | | | | because, too often, masks in bitwise operations are integers larger than one byte.)
* new opcodes OP_SHLI/OP_SHRIRoberto Ierusalimschy2017-12-041-14/+55
|
* warnings from Visual Studio /W3Roberto Ierusalimschy2017-11-301-2/+2
|
* small peephole optimizationsRoberto Ierusalimschy2017-11-301-38/+53
|
* new opcodes OP_RETURN0/OP_RETURN1Roberto Ierusalimschy2017-11-291-2/+12
|
* order opcodes cannot use 'K' operandsRoberto Ierusalimschy2017-11-281-2/+2
|
* using register 'k' for conditions in tests (we only need one bit there)Roberto Ierusalimschy2017-11-281-36/+58
|
* detail (typo in comments)Roberto Ierusalimschy2017-11-231-2/+2
|
* using 'A' for register instead of 'B' in relational opcodesRoberto Ierusalimschy2017-11-221-5/+5
| | | | ('R(A)' is already created by default for all instructions.)
* new opcode 'OP_EQI' for equality with immediate numbersRoberto Ierusalimschy2017-11-221-22/+51
|
* new instruction 'OP_EQK' (for equality with constants)Roberto Ierusalimschy2017-11-161-11/+44
|
* new function 'luaV_flttointeger' to convert floats to integers (withoutRoberto Ierusalimschy2017-11-081-3/+3
| | | | | string coercions) + string operands to bitwise operations handled by string metamethods
* new format for JUMP instructions (to allow larger offsets)Roberto Ierusalimschy2017-11-071-10/+25
|
* eplicit 1-bit opcode operand 'k'Roberto Ierusalimschy2017-10-041-29/+45
|
* new opcodes with immediate integer operand for all arithmetic operationsRoberto Ierusalimschy2017-10-041-19/+52
|
* string constants (Kstr) must fit into 'B' registerRoberto Ierusalimschy2017-10-021-2/+2
|
* avoid the use of bit 'Bk' ('B' will lose this bit soon)Roberto Ierusalimschy2017-10-011-4/+4
|
* no more 'getBMode'-'getCMode' (imprecise + we will need more spaceRoberto Ierusalimschy2017-09-281-5/+13
| | | | for op mode) + better control of op modes
* binary operators use R instead of RKRoberto Ierusalimschy2017-09-261-11/+10
| | | | | faster + nobody uses RK(B), so B can be smaller (freeing one bit for more opcodes, soon)
* detailRoberto Ierusalimschy2017-09-261-2/+4
| | | | put explicit all cases for a switch of an enumeration
* new opcode OP_LOADF (load immediate float)Roberto Ierusalimschy2017-09-191-2/+14
|
* jumps do not close upvalues (to be faster and simpler);Roberto Ierusalimschy2017-09-131-10/+41
| | | | | | explicit instruction to close upvalues; command 'break' not handled like a 'goto' (to optimize removal of uneeded 'close' instructions)
* new type 'StackValue' for stack elementsRoberto Ierusalimschy2017-06-291-2/+2
| | | | (we may want to put extra info there in the future)
* 'lineinfo' in prototypes saved as differences instead of absoluteRoberto Ierusalimschy2017-06-271-7/+45
| | | | | | values, so that the array can use bytes instead of ints, reducing its size. (A new array 'abslineinfo' is used when line differences do not fit in a byte.)
* table field names for dedicated opcodes can be restricted toRoberto Ierusalimschy2017-05-181-3/+3
| | | | small strings for slightly faster access
* new opcodes for table access with constant keys (strings and integers)Roberto Ierusalimschy2017-04-281-18/+56
|