aboutsummaryrefslogtreecommitdiff
path: root/lobject.h
diff options
context:
space:
mode:
Diffstat (limited to 'lobject.h')
-rw-r--r--lobject.h25
1 files changed, 21 insertions, 4 deletions
diff --git a/lobject.h b/lobject.h
index e245f306..9af501af 100644
--- a/lobject.h
+++ b/lobject.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lobject.h,v 2.122 2017/06/09 16:48:44 roberto Exp roberto $ 2** $Id: lobject.h,v 2.123 2017/06/12 14:21:44 roberto Exp roberto $
3** Type definitions for Lua objects 3** Type definitions for Lua objects
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -418,6 +418,21 @@ typedef struct LocVar {
418 418
419 419
420/* 420/*
421** Associates the absolute line source for a given instruction ('pc').
422** The array 'lineinfo' gives, for each instruction, the difference in
423** lines from the previous instruction. When that difference does not
424** fit into a byte, Lua saves the absolute line for that instruction.
425** (Lua also saves the absolute line periodically, to speed up the
426** computation of a line number: we can use binary search in the
427** absolute-line array, but we must traverse the 'lineinfo' array
428** linearly to compute a line.)
429*/
430typedef struct AbsLineInfo {
431 int pc;
432 int line;
433} AbsLineInfo;
434
435/*
421** Function Prototypes 436** Function Prototypes
422*/ 437*/
423typedef struct Proto { 438typedef struct Proto {
@@ -432,15 +447,17 @@ typedef struct Proto {
432 int sizelineinfo; 447 int sizelineinfo;
433 int sizep; /* size of 'p' */ 448 int sizep; /* size of 'p' */
434 int sizelocvars; 449 int sizelocvars;
450 int sizeabslineinfo; /* size of 'abslineinfo' */
435 int linedefined; /* debug information */ 451 int linedefined; /* debug information */
436 int lastlinedefined; /* debug information */ 452 int lastlinedefined; /* debug information */
437 TValue *k; /* constants used by the function */ 453 TValue *k; /* constants used by the function */
454 struct LClosure *cache; /* last-created closure with this prototype */
438 Instruction *code; /* opcodes */ 455 Instruction *code; /* opcodes */
439 struct Proto **p; /* functions defined inside the function */ 456 struct Proto **p; /* functions defined inside the function */
440 int *lineinfo; /* map from opcodes to source lines (debug information) */
441 LocVar *locvars; /* information about local variables (debug information) */
442 Upvaldesc *upvalues; /* upvalue information */ 457 Upvaldesc *upvalues; /* upvalue information */
443 struct LClosure *cache; /* last-created closure with this prototype */ 458 ls_byte *lineinfo; /* information about source lines (debug information) */
459 AbsLineInfo *abslineinfo; /* idem */
460 LocVar *locvars; /* information about local variables (debug information) */
444 TString *source; /* used for debug information */ 461 TString *source; /* used for debug information */
445 GCObject *gclist; 462 GCObject *gclist;
446} Proto; 463} Proto;