Fix Scoped<T> constructors/assignment operators that take a T*

When assigning a null T*, we would not always set m correctly to zero but to
undefinedValue() instead.

Change-Id: Ia2a439f4a9946664d9835230869161a8499b1659
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Avoid calling destroy() on most objects

The method is now optional, and we can simply avoid
calling it if all members an object has are themselves
garbage collected.

Change-Id: If560fce051908bcc10409ead1a7d8a5bd5fa71d2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Use Members for storing the bound arguments in BoundFunction

Cleans up the code, and allows us to remove the destructor
for bound function objects.

Change-Id: Id32ac69171f7975ec7679d07d25c0eb6b4ca6fb5
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Get rid of different macros for vtable specializations

Detect existence of a a vtable entry at compile time.

Change-Id: Ieed5d34b063184bc4435b22c6685ac0e3fabf493
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Move Managed data into it's own subclass

This prepares for moving over to a d pointer scheme,
where Managed subclasses don't hold any data directly. This
is required to be able to move over to a modern GC.

Change-Id: I3f59633ac07a7da461bd2d4f0f9f3a8e3b0baf02
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Move string data into subclass

Change-Id: I95dcdda8c68e2a5c36244798c8c10dcfdd69d2c2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Move object data into internal structure

Change-Id: I1fcccd535ed356e736468337bd450270cd290044
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert Boolean, Number and DateObject

Change-Id: I8815578422fe1af87eb5f02899f35131fea70b76
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Move data of FunctionObject into an inner struct

Change-Id: Ic00b1761565f9f8881b665a3fecca723239e2279
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert the remaining classes in functionobject.h

Change-Id: I7dbc56ca3952772b99681f95f50129204f9d6c7c
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert RegExp and RegExpObject to new data layout

Change-Id: I0c2bbab4b158069d5c1648edc38f7c5e38ee67ee
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert ObjectIterator to new data layout

Change-Id: Icda43ec9c1e324afebcf632a5fdcc40d855b193d
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert ArgumentsObject to new data layout

Change-Id: I568ccacb065fff0257a193087eb0cafaeba2d5e0
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Move ArrayData over to new data layout

Change-Id: Ic51f37bea030b196f0fa35ab21e618447edaa25d
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
First step unifying data structures

Make Object::Data inherit from Managed::Data. To keep this
working in the current allocation scheme, we need a dummy
ObjectData in Object for now.

Change-Id: I39036c0bf0431f1c2cf32dadc17a3742ff8d6831
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert Boolean and NumberObject to the new Data scheme

Change-Id: I418103fdca625692d4aa33a1466df0083b063bcb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert FunctionObject to new storage scheme

Change-Id: Ida213b4684c4d7c4c64e75999cbc87987d9894c8
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert RegexpObject to new storage scheme

Change-Id: I7dbaa52d3898bbe44b5a865ded6361bcc7ec2acf
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert ArgumentsObject over to the new storage scheme

Change-Id: I087e51cef255c025dfabe416ba459cc51a889153
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Convert ArrayObject over to the new storage scheme

Change-Id: Ib453d682902ccc751fc8fadf2ef9e21c0c234f69
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>