📄 cc.notes
字号:
At entry to each basic block, the following can be assumed (and hencemust be forced where necessary at the end of each basic block):The shadow stack @stack is empty.For each lexical object in @pad, VALID_IV holds for each T_INT,VALID_DOUBLE holds for each T_DOUBLE and VALID_SV holds otherwise.The C shadow variable sp holds the stack pointer (not necessarily stack_sp).write_back_stack Writes the contents of the shadow stack @stack back to the real stack. A write-back of each object in the stack is forced so that its backing SV contains the right value and that SV is then pushed onto the real stack. On return, @stack is empty.write_back_lexicals Forces a write-back (i.e. achieves VALID_SV), where necessary, for each lexical object in @pad. Objects with the TEMPORARY flag are skipped. If write_back_lexicals is called with an (optional) argument, then it is taken to be a bitmask of more flags: any lexical object with one of those flags set is also skipped and not written back to its SV.invalidate_lexicals($avoid) The VALID_INT and VALID_DOUBLE flags are turned off for each lexical object in @pad whose flags field doesn't overlap with $avoid.reload_lexicals For each necessary lexical object in @pad, makes sure that VALID_IV holds for objects of type T_INT, VALID_DOUBLE holds for objects for type T_DOUBLE, and VALID_SV holds for other objects. An object is considered for reloading if its flags field does not overlap with the (optional) argument passed to reload_lexicals.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -