1. A method for dynamic separation of transactionally-accessed and non-transactionally accessed data comprising: providing protect/unprotect operations to designate data as transactionally-accessed and non-transactionally-accessed; providing strong semantics to a program that designates data for a correct access mode prior to access, the correct access mode being transactional access for transactionally accessed data; checking that an implementation of transactional code only accesses data designated for transactional access; opening an object for transactional update; examining a protection status to determine if the object is designated for transactional access; and allowing the transaction to proceed if the object is designated as for transactional access, or validating the transaction if the object is not designated for transactional access.