From c594082dfa9533e8dee04d706571b250426725a4 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Mon, 21 Apr 2014 16:16:55 +0300 Subject: [PATCH] Lua: Deprecate global addresses These are a frequent source of bugs in Lua scripts, so deprecate those. --- include/library/lua-params.hpp | 4 ++ lua.lyx | 103 ++++++++++++++++++----------------------- lua.pdf | Bin 280667 -> 280084 bytes src/lua/memory.cpp | 15 ++++++ 4 files changed, 65 insertions(+), 57 deletions(-) diff --git a/include/library/lua-params.hpp b/include/library/lua-params.hpp index 41b6af64..21023757 100644 --- a/include/library/lua-params.hpp +++ b/include/library/lua-params.hpp @@ -253,6 +253,10 @@ public: * Table tag. */ table_parameter_tag& table(int& fnidx) { return *new table_parameter_tag(fnidx); } +/** + * Get Lua state. + */ + state& get_state() { return L; } private: state& L; std::string fname; diff --git a/lua.lyx b/lua.lyx index d42d8e9e..8dda54a0 100644 --- a/lua.lyx +++ b/lua.lyx @@ -416,10 +416,6 @@ operator(): Bind key in mmap structure \end_layout \begin_layout Itemize -Syntax: obj(key, address, type) -\end_layout - -\begin_layout Itemize Syntax: obj(key, marea, address, type) \end_layout @@ -3611,11 +3607,11 @@ Static function new: Create a checker \end_layout \begin_layout Itemize -Syntax: handle classes.COMPARE_OBJ.new([marea], offset, size, [rows, stride]) +Syntax: handle classes.COMPARE_OBJ.new(marea, offset, size, [rows, stride]) \end_layout \begin_layout Itemize -Syntax: handle memory.compare_new([marea], offset, size, rows, stride) +Syntax: handle memory.compare_new(marea, offset, size, rows, stride) \end_layout \begin_layout Standard @@ -3624,7 +3620,6 @@ Parameters: \begin_layout Itemize marea: string: The memory area to interpret against. - Default is global space. \end_layout \begin_layout Itemize @@ -6676,43 +6671,43 @@ memory.read{,s}{byte,{,h,d,q}word}: Read memory \end_layout \begin_layout Itemize -Syntax: none memory.readbyte([string marea, ]number address) +Syntax: none memory.readbyte(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readword([string marea, ]number address) +Syntax: none memory.readword(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readhword([string marea, ]number address) +Syntax: none memory.readhword(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readdword([string marea, ]number address) +Syntax: none memory.readdword(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readqword([string marea, ]number address) +Syntax: none memory.readqword(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readsbyte([string marea, ]number address) +Syntax: none memory.readsbyte(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readsword([string marea, ]number address) +Syntax: none memory.readsword(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readshword([string marea, ]number address) +Syntax: none memory.readshword(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readsdword([string marea, ]number address) +Syntax: none memory.readsdword(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readsqword([string marea, ]number address) +Syntax: none memory.readsqword(string marea, number address) \end_layout \begin_layout Standard @@ -6788,11 +6783,11 @@ memory.read{float,double}: Read memory \end_layout \begin_layout Itemize -Syntax: none memory.readfloat([string marea, ]number address) +Syntax: none memory.readfloat(string marea, number address) \end_layout \begin_layout Itemize -Syntax: none memory.readdouble([string marea, ]number address) +Syntax: none memory.readdouble(string marea, number address) \end_layout \begin_layout Standard @@ -6804,31 +6799,31 @@ memory.write{byte,{,h,d,q}word,float,double}: Write memory \end_layout \begin_layout Itemize -Syntax: none memory.writebyte([string marea, ]number address, number value) +Syntax: none memory.writebyte(string marea, number address, number value) \end_layout \begin_layout Itemize -Syntax: none memory.writeword([string marea, ]number address, number value) +Syntax: none memory.writeword(string marea, number address, number value) \end_layout \begin_layout Itemize -Syntax: none memory.writehword([string marea, ]number address, number value) +Syntax: none memory.writehword(string marea, number address, number value) \end_layout \begin_layout Itemize -Syntax: none memory.writedword([string marea, ]number address, number value) +Syntax: none memory.writedword(string marea, number address, number value) \end_layout \begin_layout Itemize -Syntax: none memory.writeqword([string marea, ]number address, number value) +Syntax: none memory.writeqword(string marea, number address, number value) \end_layout \begin_layout Itemize -Syntax: none memory.writefloat([string marea, ]number address, number value) +Syntax: none memory.writefloat(string marea, number address, number value) \end_layout \begin_layout Itemize -Syntax: none memory.writedouble([string marea, ]number address, number value) +Syntax: none memory.writedouble(string marea, number address, number value) \end_layout \begin_layout Standard @@ -6841,12 +6836,11 @@ memory.map{{,s}{byte,{,h,d,q}word},float,double}: Map an array \end_layout \begin_layout Itemize -Syntax: userdata memory.map([[string marea, ]number base, number size]) +Syntax: userdata memory.map(string marea, number base, number size) \end_layout \begin_layout Standard Returns a table mapping specified memory aperture for read/write. - If parameters are omitted, entiere map space is the aperture. \end_layout \begin_layout Itemize @@ -6859,7 +6853,7 @@ memory.hash_region: Hash region of memory \end_layout \begin_layout Itemize -Syntax: string memory.hash_region([string marea, ]number base, number size) +Syntax: string memory.hash_region(string marea, number base, number size) \end_layout \begin_layout Standard @@ -6872,7 +6866,7 @@ memory.hash_region2: Hash region of memory \end_layout \begin_layout Itemize -Syntax: string memory.hash_region2([string marea, ]number base, number size[, +Syntax: string memory.hash_region2(string marea, number base, number size[, number rows, number stride]) \end_layout @@ -6887,7 +6881,7 @@ memory.hash_region_skein: Hash region of memory \end_layout \begin_layout Itemize -Syntax: string memory.hash_region_skein([string marea, ]number base, number +Syntax: string memory.hash_region_skein(string marea, number base, number size[, number rows, number stride]) \end_layout @@ -6901,7 +6895,7 @@ memory.store: Store region of memory \end_layout \begin_layout Itemize -Syntax: none memory.store([string marea, ]number addr, number daddr[, number +Syntax: none memory.store(string marea, number addr, number daddr[, number rows, number stride] \end_layout @@ -6917,8 +6911,8 @@ memory.storecmp: Compare and store region of memory \end_layout \begin_layout Itemize -Syntax: bool memory.storecmp([string marea, ]number addr, number daddr[, - number rows, number stride] +Syntax: bool memory.storecmp(string marea, number addr, number daddr[, number + rows, number stride] \end_layout \begin_layout Standard @@ -6945,7 +6939,7 @@ memory.readregion: Read region of memory \end_layout \begin_layout Itemize -Syntax: table memory.readregion([string marea, ]number base, number size) +Syntax: table memory.readregion(string marea, number base, number size) \end_layout \begin_layout Standard @@ -6961,8 +6955,8 @@ memory.writeregion: Write region of memory \end_layout \begin_layout Itemize -Syntax: none memory.writeregion([string marea, ]number base, number size, - table data) +Syntax: none memory.writeregion(string marea, number base, number size, table + data) \end_layout \begin_layout Standard @@ -7047,40 +7041,36 @@ memory.{,un}register{read,write,exec}: (Un)Register read / write / execute \end_layout \begin_layout Itemize -Syntax: function memory.registerread([string marea, ] number addr, function +Syntax: function memory.registerread(string marea, number addr, function fn); \end_layout \begin_layout Itemize -Syntax: function memory.registerwrite([string marea, ] number addr, function +Syntax: function memory.registerwrite(string marea, number addr, function fn); \end_layout \begin_layout Itemize -Syntax: function memory.registerexec([string marea, ] number addr, function +Syntax: function memory.registerexec(string marea, number addr, function fn); \end_layout \begin_layout Itemize -Syntax: none memory.unregisterread([string marea, ] number addr, function - fn); +Syntax: none memory.unregisterread(string marea, number addr, function fn); \end_layout \begin_layout Itemize -Syntax: none memory.unregisterwrite([string marea, ] number addr, function - fn); +Syntax: none memory.unregisterwrite(string marea, number addr, function fn); \end_layout \begin_layout Itemize -Syntax: none memory.unregisterexec([string marea, ] number addr, function - fn); +Syntax: none memory.unregisterexec(string marea, number addr, function fn); \end_layout \begin_layout Standard Add or remove callback on memory read, write or execute (depending on the function). - If is specified, is relative to it, otherwise is - global. + is relative to . is the callback. The register* functions return (which can then be passed to unregister* functions. @@ -7121,16 +7111,15 @@ memory.cheat: Set cheat \end_layout \begin_layout Itemize -Syntax: none memory.cheat([string marea, ] number addr, number value); +Syntax: none memory.cheat(string marea, number addr, number value); \end_layout \begin_layout Itemize -Syntax: none memory.cheat([string marea, ] number addr); +Syntax: none memory.cheat(string marea, number addr); \end_layout \begin_layout Standard -Set or clear cheat (value ) on address . - If is specified, is relative to that. +Set or clear cheat (value ) on address (relative to ). If is not speicified, clear a cheat. \end_layout @@ -7650,7 +7639,7 @@ bsnes.dump_sprite: Dump a sprite \end_layout \begin_layout Itemize -Syntax: BITMAP bsnes.dump_sprite([string marea, ] number addr, number width, +Syntax: BITMAP bsnes.dump_sprite(string marea, number addr, number width, number height[, number stride]) \end_layout @@ -7674,7 +7663,7 @@ bsnes.dump_palette: Dump a palette \end_layout \begin_layout Itemize -Syntax: PALETTE bsnes.dump_palette([string marea, ] number addr, bool full256, +Syntax: PALETTE bsnes.dump_palette(string marea, number addr, bool full256, bool first_trans) \end_layout @@ -7710,7 +7699,7 @@ bsnes.redump_sprite: Redump a sprite \end_layout \begin_layout Itemize -Syntax: none bsnes.redump_sprite(BITMAP bitmap, [string marea, ] number addr[, +Syntax: none bsnes.redump_sprite(BITMAP bitmap, string marea, number addr[, number stride]) \end_layout @@ -7724,8 +7713,8 @@ bsnes.redump_palette: Redump a palette \end_layout \begin_layout Itemize -Syntax: none bsnes.dump_palette(PALETTE pal, [string marea, ] number addr, - bool first_trans) +Syntax: none bsnes.dump_palette(PALETTE pal, string marea, number addr, bool + first_trans) \end_layout \begin_layout Standard diff --git a/lua.pdf b/lua.pdf index ffb7fff418218deaf9c60b1d10f901118ab8d962..32133440b2b02113a0b37604a2e9ed5f4caa49df 100644 GIT binary patch delta 33212 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Ⓢ{H4qHn9$XuHx**O?%mQZM{taXmU2P?^ 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 delta 33787 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 E8xhSlw*UYD diff --git a/src/lua/memory.cpp b/src/lua/memory.cpp index 31a47200..8800a10e 100644 --- a/src/lua/memory.cpp +++ b/src/lua/memory.cpp @@ -23,9 +23,16 @@ uint64_t lua_get_vmabase(const std::string& vma) uint64_t lua_get_read_address(lua::parameters& P) { + static std::map deprecation_keys; + char* deprecation = &deprecation_keys[P.get_fname()]; uint64_t vmabase = 0; if(P.is_string()) vmabase = lua_get_vmabase(P.arg()); + else { + //Deprecated. + if(P.get_state().do_once(deprecation)) + messages << P.get_fname() << ": Global memory form is deprecated." << std::endl; + } auto addr = P.arg(); return addr + vmabase; } @@ -372,6 +379,9 @@ namespace int lua_mmap_memory(lua::state& L, lua::parameters& P) { if(P.is_novalue()) { + static char deprecation; + if(L.do_once(&deprecation)) + messages << P.get_fname() << ": Mapping entiere space is deprecated." << std::endl; aperture_make_fun(L.get_master(), 0, 0xFFFFFFFFFFFFFFFFULL); return 1; } @@ -415,10 +425,12 @@ namespace template int memory_scattergather(lua::state& L, lua::parameters& P) { + static char deprecation; uint64_t val = 0; unsigned shift = 0; uint64_t addr = 0; uint64_t vmabase = 0; + bool have_vmabase = false; if(write) val = P.arg(); while(P.more()) { @@ -429,9 +441,12 @@ namespace addr--; } else if(P.is_string()) { vmabase = lua_get_vmabase(P.arg()); + have_vmabase = true; continue; } else addr = P.arg(); + if(!have_vmabase && L.do_once(&deprecation)) + messages << P.get_fname() << ": Global memory form is deprecated." << std::endl; if(write) lsnes_memory.write(addr + vmabase, val >> shift); else -- 2.11.4.GIT