diff options
Diffstat (limited to 'lobject.h')
| -rw-r--r-- | lobject.h | 25 |
1 files changed, 21 insertions, 4 deletions
| @@ -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 | */ | ||
| 430 | typedef struct AbsLineInfo { | ||
| 431 | int pc; | ||
| 432 | int line; | ||
| 433 | } AbsLineInfo; | ||
| 434 | |||
| 435 | /* | ||
| 421 | ** Function Prototypes | 436 | ** Function Prototypes |
| 422 | */ | 437 | */ |
| 423 | typedef struct Proto { | 438 | typedef 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; |
