I think per-object mutexes won't provide very much useful critical region definition. For example, see the following code,
It involves accesses to three properties to two tables. How do you define the critical region? Do you lock and unlock each table before and after each access to a property? Do you lock both tables in the duration of the entire line? How do you achieve the latter without extend Lua syntax to expose explicitly PV?