Go to the documentation of this file.
31 #include <boost/random/mersenne_twister.hpp>
32 #include <boost/noncopyable.hpp>
50 class SharedObjectLibrary;
111 void setSWFVersion(
int v);
114 unsigned long int getTime()
const;
124 const std::string& getPlayerVersion()
const;
130 std::string getOSName()
const;
135 std::string getSystemLanguage()
const;
152 typedef boost::mt11213b
RNG;
156 RNG& randomNumberGenerator();
163 assert(_shLib.get());
175 void markReachableResources()
const;
199 const as_value* getRegister(
size_t index);
218 void setRegister(
size_t index,
const as_value& val);
241 return !_callStack.empty();
245 void dumpState(std::ostream&
o,
size_t limit = 0);
262 typedef std::map<unsigned int, as_c_function_ptr> FuncMap;
263 typedef std::map<unsigned int, FuncMap> AsNativeTable;
264 AsNativeTable _asNativeTable;
273 typedef std::array<as_value, 4> GlobalRegisters;
274 GlobalRegisters _globalRegisters;
279 std::unique_ptr<SharedObjectLibrary> _shLib;
290 getURI(
const VM& vm,
const std::string& str,
bool lowerCaseHint=
false)
307 inline const std::string&
324 _callFrame(_vm.pushCallFrame(func))
365 void newAdd(as_value& op1,
const as_value& op2,
const VM& vm);
372 void subtract(as_value& op1,
const as_value& op2,
const VM& vm);
379 as_value
newLessThan(
const as_value& op1,
const as_value& op2,
const VM& vm);
394 bool equals(
const as_value&
a,
const as_value&
b,
const VM& vm);
401 bool toBool(
const as_value&
v,
const VM& vm);
415 as_object*
toObject(
const as_value&
v, VM& vm);
428 std::int32_t
toInt(
const as_value& val,
const VM& vm);
void setConstantPool(const ConstantPool *pool)
Definition: VM.h:247
const ConstantPool * getConstantPool() const
Definition: VM.h:249
SharedObjectLibrary & getSharedObjectLibrary() const
Return the Shared Object Library.
Definition: VM.h:162
double toNumber(const as_value &v, const VM &vm)
Convert an as_value to a double.
Definition: VM.cpp:451
void setSWFVersion(int v)
Set SWF version of the currently executing code.
Definition: VM.cpp:74
bool isNaN(const T &num)
Definition: GnashNumeric.h:62
std::vector< CallFrame > CallStack
Definition: CallStack.h:146
bool toBool(const as_value &v, const VM &vm)
Convert an as_value to boolean type.
Definition: VM.cpp:445
std::int32_t toInt(const as_value &v, const VM &vm)
AS2-compatible conversion to 32bit integer.
Definition: VM.cpp:463
@ d
Definition: GnashKey.h:150
as_value getOwnProperty(as_object &o, const ObjectURI &uri)
Get an own member of an object.
Definition: as_object.h:777
as_object * toObject(const as_value &v, VM &vm)
Convert an as_value to an object.
Definition: VM.cpp:457
void log_action(StringType msg, Args... args)
Definition: log.h:307
A general use string table.
Definition: string_table.h:42
A class used to virtualize time flow.
Definition: VirtualClock.h:34
string_table & getStringTable() const
Get a reference to the string table used by the VM.
Definition: VM.h:117
CallFrame & callFrame()
Get the CallFrame we've just pushed.
Definition: VM.h:329
void log_debug(StringType msg, Args... args)
Definition: log.h:301
std::int32_t y
Definition: BitmapData_as.cpp:435
@ i
Definition: GnashKey.h:155
NamedStrings
Definition: namedStrings.h:57
@ CLASS_FUNCTION
Definition: namedStrings.h:216
#define _(String)
Definition: log.h:44
movie_root & getRoot() const
Get a pointer to this VM's Root movie (stage)
Definition: VM.cpp:143
The AVM1 virtual machine.
Definition: VM.h:72
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:41
Global_as * getGlobal() const
Get a pointer to this VM's _global Object.
Definition: VM.cpp:149
void popCallFrame()
Remove a function call from the call frame.
Definition: VM.cpp:261
@ s
Definition: GnashKey.h:165
@ n
Definition: GnashKey.h:160
void set_double(double val)
Set to a primitive number.
Definition: as_value.cpp:739
AsType
Definition: as_value.h:101
Global_as & getGlobal(const as_environment &env)
Definition: as_environment.cpp:651
as_value to_primitive(AsType hint) const
Return value as a primitive type, with a preference.
Definition: as_value.cpp:263
@ PROP_CONSTRUCTOR
Definition: namedStrings.h:68
~FrameGuard()
Definition: VM.h:333
void setLocalRegister(size_t i, const as_value &val)
Set a specific register in this CallFrame.
Definition: CallStack.cpp:57
const std::string & getPlayerVersion() const
Get version of the player, in a compatible representation.
Definition: VM.cpp:86
as_value & convertToBoolean(as_value &v, const VM &vm)
Force type to bool.
Definition: VM.cpp:501
#define UNUSED(x)
Definition: utility.h:113
void loadStrings(string_table &table)
Load the prenamed strings.
Definition: namedStrings.cpp:254
as_value getMember(as_object &o, const ObjectURI &uri)
Get a member of an object using AS lookup rules.
Definition: as_object.h:756
virtual unsigned long int elapsed() const =0
Return number of milliseconds elapsed since start.
VirtualClock & getClock()
Get the VM clock.
Definition: VM.h:98
boost::mt11213b RNG
Definition: VM.h:152
void set_string(const std::string &str)
Set to a primitive string.
Definition: as_value.cpp:732
std::string getOSName() const
Definition: VM.cpp:94
bool isFinite(double d)
Definition: GnashNumeric.h:47
Parameters/environment for builtin or user-defined functions callable from ActionScript.
Definition: fn_call.h:118
static const int DefaultFlags
The most common flags for built-in properties.
Definition: as_object.h:192
@ t
Definition: GnashKey.h:166
@ r
Definition: GnashKey.h:164
void for_each(C &container, R(T::*pmf)(const A &), const A &arg)
Definition: Renderer_ogl.cpp:690
@ a
Definition: GnashKey.h:147
void markReachableResources() const
Mark all reachable resources (for GC)
Definition: VM.cpp:161
A UserFunction is a callable function defined in ActionScript.
Definition: UserFunction.h:38
@ NUMBER
Definition: as_value.h:110
VM(movie_root &root, VirtualClock &clock)
Initializes the VM.
Definition: VM.cpp:53
An ActionScript type error.
Definition: GnashException.h:161
as_function * to_function() const
Return the value as a function only if it is a function.
Definition: as_value.cpp:499
DSOTEXPORT std::string to_string(int version=7) const
Get a std::string representation for this value.
Definition: as_value.cpp:205
CallFrame & pushCallFrame(UserFunction &f)
Add a function call to the call frame.
Definition: VM.cpp:236
std::uint16_t getRecursionLimit() const
Definition: movie_root.h:771
void setRegister(size_t index, const as_value &val)
Set value of a register (local or global).
Definition: VM.cpp:206
const as_value * getRegister(size_t index)
Get value of a register (local or global).
Definition: VM.cpp:191
void registerNative(as_c_function_ptr fun, unsigned int x, unsigned int y)
Definition: VM.cpp:268
std::vector< const char * > ConstantPool
An indexed list of strings (must match the definition in action_buffer.h)
Definition: ConstantPool.h:27
#define DEFAULT_FLASH_SYSTEM_OS
Definition: gnashconfig.h:60
void subtract(as_value &op1, const as_value &op2, const VM &vm)
Carry out ActionSubtract.
Definition: VM.cpp:392
int getSWFVersion() const
Get SWF version context for the currently running actions.
Definition: VM.h:106
NativeFunction * getNative(unsigned int x, unsigned int y) const
Return a native function or null.
Definition: VM.cpp:276
bool calling() const
Whether a function call is in progress.
Definition: VM.h:240
ActionScript value type.
Definition: as_value.h:95
as_value(* as_c_function_ptr)(const fn_call &fn)
Definition: Property.h:34
StackType::size_type StackSize
Definition: SafeStack.h:49
as_value & convertToNumber(as_value &v, const VM &vm)
Force type to number.
Definition: VM.cpp:485
RNG & randomNumberGenerator()
Definition: VM.cpp:80
key find(const std::string &to_find, bool insert_unfound=true)
Find a key for a string.
Definition: string_table.cpp:40
bool hasRegisters() const
Set the number of registers for this CallFrame.
Definition: CallStack.h:104
movie_root & getRoot(const as_environment &env)
Definition: as_environment.cpp:645
virtual void restart()=0
Restart the clock.
void setReachable() const
Set any object value as reachable (for the GC)
Definition: as_value.cpp:691
#define IF_VERBOSE_ACTION(x)
Definition: log.h:384
An ActionScript limit exception.
Definition: GnashException.h:136
@ onlySWF6Up
Only visible by VM initialized for version 6 or higher.
Definition: PropFlags.h:45
as_value & convertToString(as_value &v, const VM &vm)
Force type to string.
Definition: VM.cpp:493
FrameGuard(VM &vm, UserFunction &func)
Definition: VM.h:321
This class implements functions native to the player.
Definition: NativeFunction.h:41
as_value(* ASFunction)(const fn_call &fn)
Definition: Global_as.h:53
@ f
Definition: GnashKey.h:152
unsigned long int getTime() const
Get the number of milliseconds since VM was started.
Definition: VM.cpp:155
bool is_string() const
Return true if this value is a string.
Definition: as_value.h:207
static RcInitFile & getDefaultInstance()
Return the default instance of RC file.
Definition: rc.cpp:61
This class represents the 'Stage' and top-level movie.
Definition: movie_root.h:151
void registerClasses()
Definition: Global_as.cpp:235
#define DSOTEXPORT
Definition: dsodefs.h:63
The Global object ultimately contains all objects in an ActionScript run.
Definition: Global_as.h:50
void dumpState(std::ostream &o, size_t limit=0)
Print stack, call stack, and registers to the specified ostream.
Definition: VM.cpp:299
uri
Definition: test.py:12
Definition: SharedObject_as.h:37
#define DSOEXPORT
Definition: dsodefs.h:55
@ PROP_uuPROTOuu
Definition: namedStrings.h:118
ObjectURI getURI(const VM &vm, const std::string &str, bool lowerCaseHint=false)
Definition: VM.h:290
bool is_sprite() const
Return true if this value is a DISPLAYOBJECT.
Definition: as_value.h:224
A CallFrame is an element of a CallStack.
Definition: CallStack.h:44
as_value newLessThan(const as_value &op1, const as_value &op2, const VM &vm)
Carry out ActionSubtract.
Definition: VM.cpp:400
const std::string & toString(VM &vm, const ObjectURI &uri)
Definition: VM.h:308
@ o
Definition: GnashKey.h:161
@ PROP_PROTOTYPE
Definition: namedStrings.h:87
A URI for describing as_objects.
Definition: ObjectURI.h:45
bool is_object() const
Return true if this value is an object.
Definition: as_value.h:219
std::int32_t x
Definition: BitmapData_as.cpp:434
const as_value * getLocalRegister(size_t i) const
Get a specific register in this CallFrame.
Definition: CallStack.h:87
std::string getSystemLanguage() const
Definition: VM.cpp:124
@ b
Definition: GnashKey.h:148
SafeStack< as_value > & getStack()
Accessor for the VM's stack.
Definition: VM.h:88
@ e
Definition: GnashKey.h:151
bool equals(const as_value &a, const as_value &b, const VM &vm)
Check if two values are equal.
Definition: VM.cpp:439
as_value & convertToPrimitive(as_value &v, const VM &vm)
Convert to the appropriate primitive type.
Definition: VM.cpp:508
ActionScript Function, either builtin or SWF-defined.
Definition: as_function.h:63
CallFrame & currentCall()
Return the CallFrame of the currently executing function.
Definition: VM.cpp:229
void setReachable() const
Mark this resource as being reachable.
Definition: GC.h:92
Definition: SafeStack.h:42
void newAdd(as_value &op1, const as_value &op2, const VM &vm)
Carry out ActionNewAdd.
Definition: VM.cpp:356
~VM()
Definition: VM.cpp:69