Changeset 37812 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
Oct 23, 2008, 8:55:41 AM (17 years ago)
Author:
Darin Adler
Message:

JavaScriptCore:

2008-10-23 Darin Adler <Darin Adler>

1) slowness under MSVC, since it doesn't handle a

class with a single pointer in it as efficiently
as a pointer

2) uninitialized pointers in Vector

  • API/APICast.h: (toRef):
  • VM/CTI.cpp: (JSC::CTI::asInteger):
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::addConstant):
  • VM/CodeGenerator.h: (JSC::CodeGenerator::JSValueHashTraits::constructDeletedValue): (JSC::CodeGenerator::JSValueHashTraits::isDeletedValue):
  • VM/Machine.cpp: (JSC::Machine::cti_op_add): (JSC::Machine::cti_op_pre_inc): (JSC::Machine::cti_op_get_by_id): (JSC::Machine::cti_op_get_by_id_second): (JSC::Machine::cti_op_get_by_id_generic): (JSC::Machine::cti_op_get_by_id_fail): (JSC::Machine::cti_op_instanceof): (JSC::Machine::cti_op_del_by_id): (JSC::Machine::cti_op_mul): (JSC::Machine::cti_op_call_NotJSFunction): (JSC::Machine::cti_op_resolve): (JSC::Machine::cti_op_construct_NotJSConstruct): (JSC::Machine::cti_op_get_by_val): (JSC::Machine::cti_op_sub): (JSC::Machine::cti_op_lesseq): (JSC::Machine::cti_op_negate): (JSC::Machine::cti_op_resolve_base): (JSC::Machine::cti_op_resolve_skip): (JSC::Machine::cti_op_resolve_global): (JSC::Machine::cti_op_div): (JSC::Machine::cti_op_pre_dec): (JSC::Machine::cti_op_not): (JSC::Machine::cti_op_eq): (JSC::Machine::cti_op_lshift): (JSC::Machine::cti_op_bitand): (JSC::Machine::cti_op_rshift): (JSC::Machine::cti_op_bitnot): (JSC::Machine::cti_op_mod): (JSC::Machine::cti_op_less): (JSC::Machine::cti_op_neq): (JSC::Machine::cti_op_urshift): (JSC::Machine::cti_op_bitxor): (JSC::Machine::cti_op_bitor): (JSC::Machine::cti_op_call_eval): (JSC::Machine::cti_op_throw): (JSC::Machine::cti_op_next_pname): (JSC::Machine::cti_op_typeof): (JSC::Machine::cti_op_is_undefined): (JSC::Machine::cti_op_is_boolean): (JSC::Machine::cti_op_is_number): (JSC::Machine::cti_op_is_string): (JSC::Machine::cti_op_is_object): (JSC::Machine::cti_op_is_function): (JSC::Machine::cti_op_stricteq): (JSC::Machine::cti_op_nstricteq): (JSC::Machine::cti_op_to_jsnumber): (JSC::Machine::cti_op_in): (JSC::Machine::cti_op_del_by_val): (JSC::Machine::cti_vm_throw): Removed calls to payload functions.
  • VM/Register.h: (JSC::Register::Register): Removed overload for JSCell and call to payload function.
  • kjs/JSCell.h: Changed JSCell to derive from JSValue again. Removed JSValuePtr constructor. (JSC::asCell): Changed cast from reinterpret_cast to static_cast.
  • kjs/JSImmediate.h: Removed JSValuePtr class. Added typedef back.
  • kjs/JSValue.h: (JSC::JSValue::JSValue): Added empty protected inline constructor back. (JSC::JSValue::~JSValue): Same for destructor. Removed == and != operator for JSValuePtr.
  • kjs/PropertySlot.h: (JSC::PropertySlot::PropertySlot): Chnaged argument to const JSValue* and added a const_cast.
  • kjs/protect.h: Removed overloads and specialization for JSValuePtr.

JavaScriptGlue:

2008-10-23 Darin Adler <Darin Adler>

  • JSValueWrapper.cpp: (JSValueWrapper::GetValue): Added missing call to .get().
  • JSValueWrapper.h: ProtectedPtr<JSValue> instead of ProtectedPtr<JSValuePtr>.

WebCore:

2008-10-23 Darin Adler <Darin Adler>

  • bindings/js/ScheduledAction.h:
  • inspector/InspectorController.cpp: ProtectedPtr<JSValue> instead of ProtectedPtr<JSValuePtr>.
Location:
trunk/JavaScriptCore
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/API/APICast.h

    r37712 r37812  
    7171inline JSValueRef toRef(JSC::JSValuePtr v)
    7272{
    73     return reinterpret_cast<JSValueRef>(v.payload());
     73    return reinterpret_cast<JSValueRef>(v);
    7474}
    7575
    7676inline JSValueRef* toRef(JSC::JSValuePtr* v)
    7777{
    78     return reinterpret_cast<JSValueRef*>(const_cast<const JSC::JSValue**>(v->payloadPtr()));
     78    return reinterpret_cast<JSValueRef*>(const_cast<const JSC::JSValue**>(v));
    7979}
    8080
  • trunk/JavaScriptCore/ChangeLog

    r37804 r37812  
     12008-10-23  Darin Adler  <[email protected]>
     2
     3        - roll out https://bugs.webkit.org/show_bug.cgi?id=21732
     4          to remove the JSValuePtr class, to fix two problems
     5
     6            1) slowness under MSVC, since it doesn't handle a
     7               class with a single pointer in it as efficiently
     8               as a pointer
     9
     10            2) uninitialized pointers in Vector
     11
     12        * JavaScriptCore.exp: Updated.
     13
     14        * API/APICast.h:
     15        (toRef):
     16        * VM/CTI.cpp:
     17        (JSC::CTI::asInteger):
     18        * VM/CodeGenerator.cpp:
     19        (JSC::CodeGenerator::addConstant):
     20        * VM/CodeGenerator.h:
     21        (JSC::CodeGenerator::JSValueHashTraits::constructDeletedValue):
     22        (JSC::CodeGenerator::JSValueHashTraits::isDeletedValue):
     23        * VM/Machine.cpp:
     24        (JSC::Machine::cti_op_add):
     25        (JSC::Machine::cti_op_pre_inc):
     26        (JSC::Machine::cti_op_get_by_id):
     27        (JSC::Machine::cti_op_get_by_id_second):
     28        (JSC::Machine::cti_op_get_by_id_generic):
     29        (JSC::Machine::cti_op_get_by_id_fail):
     30        (JSC::Machine::cti_op_instanceof):
     31        (JSC::Machine::cti_op_del_by_id):
     32        (JSC::Machine::cti_op_mul):
     33        (JSC::Machine::cti_op_call_NotJSFunction):
     34        (JSC::Machine::cti_op_resolve):
     35        (JSC::Machine::cti_op_construct_NotJSConstruct):
     36        (JSC::Machine::cti_op_get_by_val):
     37        (JSC::Machine::cti_op_sub):
     38        (JSC::Machine::cti_op_lesseq):
     39        (JSC::Machine::cti_op_negate):
     40        (JSC::Machine::cti_op_resolve_base):
     41        (JSC::Machine::cti_op_resolve_skip):
     42        (JSC::Machine::cti_op_resolve_global):
     43        (JSC::Machine::cti_op_div):
     44        (JSC::Machine::cti_op_pre_dec):
     45        (JSC::Machine::cti_op_not):
     46        (JSC::Machine::cti_op_eq):
     47        (JSC::Machine::cti_op_lshift):
     48        (JSC::Machine::cti_op_bitand):
     49        (JSC::Machine::cti_op_rshift):
     50        (JSC::Machine::cti_op_bitnot):
     51        (JSC::Machine::cti_op_mod):
     52        (JSC::Machine::cti_op_less):
     53        (JSC::Machine::cti_op_neq):
     54        (JSC::Machine::cti_op_urshift):
     55        (JSC::Machine::cti_op_bitxor):
     56        (JSC::Machine::cti_op_bitor):
     57        (JSC::Machine::cti_op_call_eval):
     58        (JSC::Machine::cti_op_throw):
     59        (JSC::Machine::cti_op_next_pname):
     60        (JSC::Machine::cti_op_typeof):
     61        (JSC::Machine::cti_op_is_undefined):
     62        (JSC::Machine::cti_op_is_boolean):
     63        (JSC::Machine::cti_op_is_number):
     64        (JSC::Machine::cti_op_is_string):
     65        (JSC::Machine::cti_op_is_object):
     66        (JSC::Machine::cti_op_is_function):
     67        (JSC::Machine::cti_op_stricteq):
     68        (JSC::Machine::cti_op_nstricteq):
     69        (JSC::Machine::cti_op_to_jsnumber):
     70        (JSC::Machine::cti_op_in):
     71        (JSC::Machine::cti_op_del_by_val):
     72        (JSC::Machine::cti_vm_throw):
     73        Removed calls to payload functions.
     74
     75        * VM/Register.h:
     76        (JSC::Register::Register): Removed overload for JSCell and call
     77        to payload function.
     78
     79        * kjs/JSCell.h: Changed JSCell to derive from JSValue again.
     80        Removed JSValuePtr constructor.
     81        (JSC::asCell): Changed cast from reinterpret_cast to static_cast.
     82
     83        * kjs/JSImmediate.h: Removed JSValuePtr class. Added typedef back.
     84
     85        * kjs/JSValue.h:
     86        (JSC::JSValue::JSValue): Added empty protected inline constructor back.
     87        (JSC::JSValue::~JSValue): Same for destructor.
     88        Removed == and != operator for JSValuePtr.
     89
     90        * kjs/PropertySlot.h:
     91        (JSC::PropertySlot::PropertySlot): Chnaged argument to const JSValue*
     92        and added a const_cast.
     93
     94        * kjs/protect.h: Removed overloads and specialization for JSValuePtr.
     95
    1962008-10-22  Oliver Hunt  <[email protected]>
    297
  • trunk/JavaScriptCore/JavaScriptCore.exp

    r37799 r37812  
    103103__ZN3JSC11Interpreter21shouldPrintExceptionsEv
    104104__ZN3JSC11Interpreter24setShouldPrintExceptionsEb
    105 __ZN3JSC11Interpreter8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeENS_10JSValuePtrE
     105__ZN3JSC11Interpreter8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeEPNS_7JSValueE
    106106__ZN3JSC11JSImmediate12nonInlineNaNEv
    107 __ZN3JSC11JSImmediate8toObjectENS_10JSValuePtrEPNS_9ExecStateE
    108 __ZN3JSC11JSImmediate8toStringENS_10JSValuePtrE
    109 __ZN3JSC11JSImmediate9prototypeENS_10JSValuePtrEPNS_9ExecStateE
     107__ZN3JSC11JSImmediate8toObjectEPNS_7JSValueEPNS_9ExecStateE
     108__ZN3JSC11JSImmediate8toStringEPNS_7JSValueE
    110109__ZN3JSC11ProfileNode4sortEPFbRKN3WTF6RefPtrIS0_EES5_E
    111110__ZN3JSC11ProgramNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS6_INS5_6RefPtrINS_12FuncDeclNodeEEELm16EEERKNS_10SourceCodeEji
     
    118117__ZN3JSC11StructureID21clearEnumerationCacheEv
    119118__ZN3JSC11StructureID24fromDictionaryTransitionEPS0_
    120 __ZN3JSC11StructureID25changePrototypeTransitionEPS0_NS_10JSValuePtrE
    121119__ZN3JSC11StructureID27growPropertyStorageCapacityEv
    122 __ZN3JSC11StructureIDC1ENS_10JSValuePtrERKNS_8TypeInfoE
     120__ZN3JSC11StructureIDC1EPNS_7JSValueERKNS_8TypeInfoE
    123121__ZN3JSC11StructureIDD1Ev
    124122__ZN3JSC12DateInstance4infoE
     
    136134__ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
    137135__ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
    138 __ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierENS_10JSValuePtrERNS_15PutPropertySlotE
    139136__ZN3JSC12StringObject4infoE
    140137__ZN3JSC12StringObjectC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_11StructureIDEEERKNS_7UStringE
     
    148145__ZN3JSC14JSGlobalObject14setTimeoutTimeEj
    149146__ZN3JSC14JSGlobalObject16stopTimeoutCheckEv
    150 __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_10JSValuePtrEj
     147__ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEj
    151148__ZN3JSC14JSGlobalObject17startTimeoutCheckEv
    152149__ZN3JSC14JSGlobalObject29markCrossHeapDependentObjectsEv
    153 __ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_10JSValuePtrERNS_15PutPropertySlotE
     150__ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE
    154151__ZN3JSC14JSGlobalObject4initEPNS_8JSObjectE
    155152__ZN3JSC14JSGlobalObject4markEv
     
    168165__ZN3JSC16ParserRefCounted5derefEv
    169166__ZN3JSC17PropertyNameArray3addEPNS_7UString3RepE
    170 __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_11StructureIDEEEiRKNS_10IdentifierEPFNS_10JSValuePtrES2_PNS_8JSObjectESA_RKNS_7ArgListEE
    171 __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFNS_10JSValuePtrES2_PNS_8JSObjectES6_RKNS_7ArgListEE
     167__ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_11StructureIDEEEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectESB_RKNS_7ArgListEE
    172168__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi
    173169__ZN3JSC19constructEmptyArrayEPNS_9ExecStateE
    174170__ZN3JSC19initializeThreadingEv
    175171__ZN3JSC20constructEmptyObjectEPNS_9ExecStateE
    176 __ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_10JSValuePtrERKNS_7ArgListE
    177172__ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE
    178173__ZN3JSC4Heap14allocateNumberEm
     
    185180__ZN3JSC4Heap25protectedObjectTypeCountsEv
    186181__ZN3JSC4Heap26protectedGlobalObjectCountEv
    187 __ZN3JSC4Heap4heapENS_10JSValuePtrE
     182__ZN3JSC4Heap4heapEPNS_7JSValueE
    188183__ZN3JSC4Heap4sizeEv
    189184__ZN3JSC4Heap7collectEv
    190 __ZN3JSC4Heap7protectENS_10JSValuePtrE
     185__ZN3JSC4Heap7protectEPNS_7JSValueE
    191186__ZN3JSC4Heap8allocateEm
    192 __ZN3JSC4Heap9unprotectENS_10JSValuePtrE
    193 __ZN3JSC4callEPNS_9ExecStateENS_10JSValuePtrENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE
     187__ZN3JSC4Heap9unprotectEPNS_7JSValueE
     188__ZN3JSC4callEPNS_9ExecStateEPNS_7JSValueENS_8CallTypeERKNS_8CallDataES3_RKNS_7ArgListE
    194189__ZN3JSC5equalEPKNS_7UString3RepES3_
    195190__ZN3JSC6JSCell11getCallDataERNS_8CallDataE
     
    201196__ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
    202197__ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
    203 __ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_10JSValuePtrERNS_15PutPropertySlotE
    204 __ZN3JSC6JSCell3putEPNS_9ExecStateEjNS_10JSValuePtrE
     198__ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE
     199__ZN3JSC6JSCell3putEPNS_9ExecStateEjPNS_7JSValueE
    205200__ZN3JSC6JSCell9getObjectEv
    206201__ZN3JSC6JSCellnwEmPNS_9ExecStateE
     
    214209__ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE
    215210__ZN3JSC6strtodEPKcPPc
    216 __ZN3JSC7ArgList10slowAppendENS_10JSValuePtrE
     211__ZN3JSC7ArgList10slowAppendEPNS_7JSValueE
    217212__ZN3JSC7CStringD1Ev
    218213__ZN3JSC7CStringaSERKS0_
     
    236231__ZN3JSC8DebuggerC2Ev
    237232__ZN3JSC8DebuggerD2Ev
    238 __ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateENS_10JSValuePtrES3_
     233__ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateEPNS_7JSValueES4_
    239234__ZN3JSC8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_
    240235__ZN3JSC8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_
     
    246241__ZN3JSC8JSObject17createInheritorIDEv
    247242__ZN3JSC8JSObject17putDirectFunctionEPNS_9ExecStateEPNS_16InternalFunctionEj
    248 __ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_10JSValuePtrEj
    249 __ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateEjNS_10JSValuePtrEj
     243__ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEj
     244__ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateEjPNS_7JSValueEj
    250245__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
    251 __ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRNS_10JSValuePtrE
    252 __ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPNS_10JSValuePtrE
     246__ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE
     247__ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPPNS_7JSValueE
    253248__ZN3JSC8JSObject23allocatePropertyStorageEmm
    254 __ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierENS_10JSValuePtrERNS_15PutPropertySlotE
    255 __ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_10JSValuePtrE
     249__ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE
     250__ZN3JSC8JSObject3putEPNS_9ExecStateEjPNS_7JSValueE
    256251__ZN3JSC8JSObject4markEv
    257252__ZN3JSC8Profiler13stopProfilingEPNS_9ExecStateERKNS_7UStringE
     
    261256__ZN3JSC9CodeBlockD1Ev
    262257__ZN3JSC9CodeBlockD2Ev
    263 __ZN3JSC9constructEPNS_9ExecStateENS_10JSValuePtrENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE
    264258__ZN3JSCeqERKNS_7UStringEPKc
    265259__ZN3JSCgtERKNS_7UStringES2_
     
    312306__ZNK3JSC17DebuggerCallFrame12functionNameEv
    313307__ZNK3JSC17DebuggerCallFrame4typeEv
    314 __ZNK3JSC17DebuggerCallFrame8evaluateERKNS_7UStringERNS_10JSValuePtrE
    315308__ZNK3JSC4Node8toStringEv
    316309__ZNK3JSC6JSCell12toThisObjectEPNS_9ExecStateE
     
    330323__ZNK3JSC7JSValue9toIntegerEPNS_9ExecStateE
    331324__ZNK3JSC7Machine14retrieveCallerEPNS_9ExecStateEPNS_16InternalFunctionE
    332 __ZNK3JSC7Machine18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_10JSValuePtrE
    333325__ZNK3JSC7UString10UTF8StringEb
    334326__ZNK3JSC7UString14toStrictUInt32EPb
     
    362354_jscore_fastmalloc_introspection
    363355_kJSClassDefinitionEmpty
     356__ZN3JSC11JSImmediate9prototypeEPNS_7JSValueEPNS_9ExecStateE
     357__ZN3JSC11StructureID25changePrototypeTransitionEPS0_PNS_7JSValueE
     358__ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE
     359__ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectES7_RKNS_7ArgListEE
     360__ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectEPNS_7JSValueERKNS_7ArgListE
     361__ZN3JSC9constructEPNS_9ExecStateEPNS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE
     362__ZNK3JSC17DebuggerCallFrame8evaluateERKNS_7UStringERPNS_7JSValueE
     363__ZNK3JSC7Machine18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERPNS_7JSValueE
  • trunk/JavaScriptCore/VM/CTI.cpp

    r37789 r37812  
    3636#include "ResultType.h"
    3737
    38 #if PLATFORM(MAC)
    39 #include <sys/sysctl.h>
    40 #endif
    41 
    4238using namespace std;
    4339
     
    180176inline uintptr_t CTI::asInteger(JSValuePtr value)
    181177{
    182     return reinterpret_cast<uintptr_t>(value.payload());
     178    return reinterpret_cast<uintptr_t>(value);
    183179}
    184180
  • trunk/JavaScriptCore/VM/CodeGenerator.cpp

    r37789 r37812  
    675675RegisterID* CodeGenerator::addConstant(JSValuePtr v)
    676676{
    677     pair<JSValueMap::iterator, bool> result = m_jsValueMap.add(v.payload(), m_nextConstant);
     677    pair<JSValueMap::iterator, bool> result = m_jsValueMap.add(v, m_nextConstant);
    678678    if (result.second) {
    679679        RegisterID& constant = m_calleeRegisters[m_nextConstant];
  • trunk/JavaScriptCore/VM/CodeGenerator.h

    r37730 r37812  
    332332
    333333        struct JSValueHashTraits : HashTraits<JSValue*> {
    334             static void constructDeletedValue(JSValue*& slot) { slot = JSImmediate::impossibleValue().payload(); }
    335             static bool isDeletedValue(JSValue* value) { return value == JSImmediate::impossibleValue().payload(); }
     334            static void constructDeletedValue(JSValue*& slot) { slot = JSImmediate::impossibleValue(); }
     335            static bool isDeletedValue(JSValue* value) { return value == JSImmediate::impossibleValue(); }
    336336        };
    337337
  • trunk/JavaScriptCore/VM/Machine.cpp

    r37799 r37812  
    43864386    bool rightIsNumber = fastIsNumber(v2, right);
    43874387    if (rightIsNumber && fastIsNumber(v1, left))
    4388         return jsNumber(ARG_globalData, left + right).payload();
     4388        return jsNumber(ARG_globalData, left + right);
    43894389   
    43904390    CallFrame* callFrame = ARG_callFrame;
     
    43984398        }
    43994399
    4400         return JSValuePtr(jsString(ARG_globalData, value.release())).payload();
     4400        return JSValuePtr(jsString(ARG_globalData, value.release()));
    44014401    }
    44024402
     
    44104410            VM_THROW_EXCEPTION();
    44114411        }
    4412         return JSValuePtr(jsString(ARG_globalData, value.release())).payload();
     4412        return JSValuePtr(jsString(ARG_globalData, value.release()));
    44134413    }
    44144414
     
    44164416    JSValuePtr result = jsAddSlowCase(callFrame, v1, v2);
    44174417    VM_CHECK_EXCEPTION_AT_END();
    4418     return result.payload();
     4418    return result;
    44194419}
    44204420
     
    44284428    JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) + 1);
    44294429    VM_CHECK_EXCEPTION_AT_END();
    4430     return result.payload();
     4430    return result;
    44314431}
    44324432
     
    45564556
    45574557    VM_CHECK_EXCEPTION_AT_END();
    4558     return result.payload();
     4558    return result;
    45594559}
    45604560
     
    45734573
    45744574    VM_CHECK_EXCEPTION_AT_END();
    4575     return result.payload();
     4575    return result;
    45764576}
    45774577
     
    45884588
    45894589    VM_CHECK_EXCEPTION_AT_END();
    4590     return result.payload();
     4590    return result;
    45914591}
    45924592
     
    46064606
    46074607    VM_CHECK_EXCEPTION_AT_END();
    4608     return result.payload();
     4608    return result;
    46094609}
    46104610
     
    46334633
    46344634    if (!asObject(baseVal)->structureID()->typeInfo().implementsHasInstance())
    4635         return JSValuePtr(jsBoolean(false)).payload();
     4635        return JSValuePtr(jsBoolean(false));
    46364636
    46374637    if (!proto->isObject()) {
     
    46414641       
    46424642    if (!value->isObject())
    4643         return JSValuePtr(jsBoolean(false)).payload();
     4643        return JSValuePtr(jsBoolean(false));
    46444644
    46454645    JSValuePtr result = jsBoolean(asObject(baseVal)->hasInstance(callFrame, value, proto));
    46464646    VM_CHECK_EXCEPTION_AT_END();
    46474647
    4648     return result.payload();
     4648    return result;
    46494649}
    46504650
     
    46604660    JSValuePtr result = jsBoolean(baseObj->deleteProperty(callFrame, ident));
    46614661    VM_CHECK_EXCEPTION_AT_END();
    4662     return result.payload();
     4662    return result;
    46634663}
    46644664
     
    46734673    double right;
    46744674    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    4675         return jsNumber(ARG_globalData, left * right).payload();
     4675        return jsNumber(ARG_globalData, left * right);
    46764676
    46774677    CallFrame* callFrame = ARG_callFrame;
    46784678    JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) * src2->toNumber(callFrame));
    46794679    VM_CHECK_EXCEPTION_AT_END();
    4680     return result.payload();
     4680    return result;
    46814681}
    46824682
     
    48044804        VM_CHECK_EXCEPTION();
    48054805
    4806         return returnValue.payload();
     4806        return returnValue;
    48074807    }
    48084808
     
    48974897            JSValuePtr result = slot.getValue(callFrame, ident);
    48984898            VM_CHECK_EXCEPTION_AT_END();
    4899             return result.payload();
     4899            return result;
    49004900        }
    49014901    } while (++iter != end);
     
    50085008        VM_CHECK_EXCEPTION();
    50095009
    5010         return returnValue.payload();
     5010        return returnValue;
    50115011    }
    50125012
     
    50485048
    50495049    VM_CHECK_EXCEPTION_AT_END();
    5050     return result.payload();
     5050    return result;
    50515051}
    50525052
     
    51055105    double right;
    51065106    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    5107         return jsNumber(ARG_globalData, left - right).payload();
     5107        return jsNumber(ARG_globalData, left - right);
    51085108
    51095109    CallFrame* callFrame = ARG_callFrame;
    51105110    JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) - src2->toNumber(callFrame));
    51115111    VM_CHECK_EXCEPTION_AT_END();
    5112     return result.payload();
     5112    return result;
    51135113}
    51145114
     
    51805180    JSValuePtr result = jsBoolean(jsLessEq(callFrame, ARG_src1, ARG_src2));
    51815181    VM_CHECK_EXCEPTION_AT_END();
    5182     return result.payload();
     5182    return result;
    51835183}
    51845184
     
    52045204    double v;
    52055205    if (fastIsNumber(src, v))
    5206         return jsNumber(ARG_globalData, -v).payload();
     5206        return jsNumber(ARG_globalData, -v);
    52075207
    52085208    CallFrame* callFrame = ARG_callFrame;
    52095209    JSValuePtr result = jsNumber(ARG_globalData, -src->toNumber(callFrame));
    52105210    VM_CHECK_EXCEPTION_AT_END();
    5211     return result.payload();
     5211    return result;
    52125212}
    52135213
     
    52165216    CTI_STACK_HACK();
    52175217
    5218     return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain()).payload();
     5218    return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain());
    52195219}
    52205220
     
    52425242            JSValuePtr result = slot.getValue(callFrame, ident);
    52435243            VM_CHECK_EXCEPTION_AT_END();
    5244             return result.payload();
     5244            return result;
    52455245        }
    52465246    } while (++iter != end);
     
    52725272            vPC[4] = globalObject->structureID();
    52735273            vPC[5] = slot.cachedOffset();
    5274             return result.payload();
     5274            return result;
    52755275        }
    52765276
    52775277        VM_CHECK_EXCEPTION_AT_END();
    5278         return result.payload();
     5278        return result;
    52795279    }
    52805280   
     
    52935293    double right;
    52945294    if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
    5295         return jsNumber(ARG_globalData, left / right).payload();
     5295        return jsNumber(ARG_globalData, left / right);
    52965296
    52975297    CallFrame* callFrame = ARG_callFrame;
    52985298    JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) / src2->toNumber(callFrame));
    52995299    VM_CHECK_EXCEPTION_AT_END();
    5300     return result.payload();
     5300    return result;
    53015301}
    53025302
     
    53105310    JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) - 1);
    53115311    VM_CHECK_EXCEPTION_AT_END();
    5312     return result.payload();
     5312    return result;
    53135313}
    53145314
     
    53365336    JSValuePtr result = jsBoolean(!src->toBoolean(callFrame));
    53375337    VM_CHECK_EXCEPTION_AT_END();
    5338     return result.payload();
     5338    return result;
    53395339}
    53405340
     
    53795379    JSValuePtr result = jsBoolean(equalSlowCaseInline(callFrame, src1, src2));
    53805380    VM_CHECK_EXCEPTION_AT_END();
    5381     return result.payload();
     5381    return result;
    53825382}
    53835383
     
    53925392    uint32_t right;
    53935393    if (JSImmediate::areBothImmediateNumbers(val, shift))
    5394         return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f)).payload();
     5394        return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f));
    53955395    if (fastToInt32(val, left) && fastToUInt32(shift, right))
    5396         return jsNumber(ARG_globalData, left << (right & 0x1f)).payload();
     5396        return jsNumber(ARG_globalData, left << (right & 0x1f));
    53975397
    53985398    CallFrame* callFrame = ARG_callFrame;
    53995399    JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) << (shift->toUInt32(callFrame) & 0x1f));
    54005400    VM_CHECK_EXCEPTION_AT_END();
    5401     return result.payload();
     5401    return result;
    54025402}
    54035403
     
    54125412    int32_t right;
    54135413    if (fastToInt32(src1, left) && fastToInt32(src2, right))
    5414         return jsNumber(ARG_globalData, left & right).payload();
     5414        return jsNumber(ARG_globalData, left & right);
    54155415
    54165416    CallFrame* callFrame = ARG_callFrame;
    54175417    JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) & src2->toInt32(callFrame));
    54185418    VM_CHECK_EXCEPTION_AT_END();
    5419     return result.payload();
     5419    return result;
    54205420}
    54215421
     
    54305430    uint32_t right;
    54315431    if (JSImmediate::areBothImmediateNumbers(val, shift))
    5432         return JSImmediate::rightShiftImmediateNumbers(val, shift).payload();
     5432        return JSImmediate::rightShiftImmediateNumbers(val, shift);
    54335433    if (fastToInt32(val, left) && fastToUInt32(shift, right))
    5434         return jsNumber(ARG_globalData, left >> (right & 0x1f)).payload();
     5434        return jsNumber(ARG_globalData, left >> (right & 0x1f));
    54355435
    54365436    CallFrame* callFrame = ARG_callFrame;
    54375437    JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
    54385438    VM_CHECK_EXCEPTION_AT_END();
    5439     return result.payload();
     5439    return result;
    54405440}
    54415441
     
    54485448    int value;
    54495449    if (fastToInt32(src, value))
    5450         return jsNumber(ARG_globalData, ~value).payload();
     5450        return jsNumber(ARG_globalData, ~value);
    54515451           
    54525452    CallFrame* callFrame = ARG_callFrame;
    54535453    JSValuePtr result = jsNumber(ARG_globalData, ~src->toInt32(callFrame));
    54545454    VM_CHECK_EXCEPTION_AT_END();
    5455     return result.payload();
     5455    return result;
    54565456}
    54575457
     
    55105510    JSValuePtr result = jsNumber(ARG_globalData, fmod(d, divisorValue->toNumber(callFrame)));
    55115511    VM_CHECK_EXCEPTION_AT_END();
    5512     return result.payload();
     5512    return result;
    55135513}
    55145514
     
    55205520    JSValuePtr result = jsBoolean(jsLess(callFrame, ARG_src1, ARG_src2));
    55215521    VM_CHECK_EXCEPTION_AT_END();
    5522     return result.payload();
     5522    return result;
    55235523}
    55245524
     
    55355535    JSValuePtr result = jsBoolean(!equalSlowCaseInline(callFrame, src1, src2));
    55365536    VM_CHECK_EXCEPTION_AT_END();
    5537     return result.payload();
     5537    return result;
    55385538}
    55395539
     
    55635563
    55645564    if (JSImmediate::areBothImmediateNumbers(val, shift) && !JSImmediate::isNegative(val))
    5565         return JSImmediate::rightShiftImmediateNumbers(val, shift).payload();
     5565        return JSImmediate::rightShiftImmediateNumbers(val, shift);
    55665566    else {
    55675567        JSValuePtr result = jsNumber(ARG_globalData, (val->toUInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
    55685568        VM_CHECK_EXCEPTION_AT_END();
    5569         return result.payload();
     5569        return result;
    55705570    }
    55715571}
     
    55825582    JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) ^ src2->toInt32(callFrame));
    55835583    VM_CHECK_EXCEPTION_AT_END();
    5584     return result.payload();
     5584    return result;
    55855585}
    55865586
     
    56035603    JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) | src2->toInt32(callFrame));
    56045604    VM_CHECK_EXCEPTION_AT_END();
    5605     return result.payload();
     5605    return result;
    56065606}
    56075607
     
    56305630            VM_THROW_EXCEPTION_AT_END();
    56315631        }
    5632         return result.payload();
    5633     }
    5634 
    5635     return JSImmediate::impossibleValue().payload();
     5632        return result;
     5633    }
     5634
     5635    return JSImmediate::impossibleValue();
    56365636}
    56375637
     
    56535653    if (!handlerVPC) {
    56545654        *ARG_exception = exceptionValue;
    5655         return JSImmediate::nullImmediate().payload();
     5655        return JSImmediate::nullImmediate();
    56565656    }
    56575657
     
    56605660    ASSERT(catchRoutine);
    56615661    CTI_SET_RETURN_ADDRESS(catchRoutine);
    5662     return exceptionValue.payload();
     5662    return exceptionValue;
    56635663}
    56645664
     
    56785678    if (!temp)
    56795679        it->invalidate();
    5680     return temp.payload();
     5680    return temp;
    56815681}
    56825682
     
    57015701    CTI_STACK_HACK();
    57025702
    5703     return jsTypeStringForValue(ARG_callFrame, ARG_src1).payload();
     5703    return jsTypeStringForValue(ARG_callFrame, ARG_src1);
    57045704}
    57055705
     
    57095709
    57105710    JSValuePtr v = ARG_src1;
    5711     return jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structureID()->typeInfo().masqueradesAsUndefined()).payload();
     5711    return jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structureID()->typeInfo().masqueradesAsUndefined());
    57125712}
    57135713
     
    57165716    CTI_STACK_HACK();
    57175717
    5718     return jsBoolean(ARG_src1->isBoolean()).payload();
     5718    return jsBoolean(ARG_src1->isBoolean());
    57195719}
    57205720
     
    57235723    CTI_STACK_HACK();
    57245724
    5725     return jsBoolean(ARG_src1->isNumber()).payload();
     5725    return jsBoolean(ARG_src1->isNumber());
    57265726}
    57275727
     
    57305730    CTI_STACK_HACK();
    57315731
    5732     return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1)).payload();
     5732    return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1));
    57335733}
    57345734
     
    57375737    CTI_STACK_HACK();
    57385738
    5739     return jsBoolean(jsIsObjectType(ARG_src1)).payload();
     5739    return jsBoolean(jsIsObjectType(ARG_src1));
    57405740}
    57415741
     
    57445744    CTI_STACK_HACK();
    57455745
    5746     return jsBoolean(jsIsFunctionType(ARG_src1)).payload();
     5746    return jsBoolean(jsIsFunctionType(ARG_src1));
    57475747}
    57485748
     
    57585758    ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())));
    57595759
    5760     return jsBoolean(strictEqualSlowCaseInline(src1, src2)).payload();
     5760    return jsBoolean(strictEqualSlowCaseInline(src1, src2));
    57615761}
    57625762
     
    57725772    ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())));
    57735773   
    5774     return jsBoolean(!strictEqualSlowCaseInline(src1, src2)).payload();
     5774    return jsBoolean(!strictEqualSlowCaseInline(src1, src2));
    57755775}
    57765776
     
    57845784    JSValuePtr result = src->toJSNumber(callFrame);
    57855785    VM_CHECK_EXCEPTION_AT_END();
    5786     return result.payload();
     5786    return result;
    57875787}
    57885788
     
    58085808    uint32_t i;
    58095809    if (propName->getUInt32(i))
    5810         return jsBoolean(baseObj->hasProperty(callFrame, i)).payload();
     5810        return jsBoolean(baseObj->hasProperty(callFrame, i));
    58115811
    58125812    Identifier property(callFrame, propName->toString(callFrame));
    58135813    VM_CHECK_EXCEPTION();
    5814     return jsBoolean(baseObj->hasProperty(callFrame, property)).payload();
     5814    return jsBoolean(baseObj->hasProperty(callFrame, property));
    58155815}
    58165816
     
    59275927
    59285928    VM_CHECK_EXCEPTION_AT_END();
    5929     return result.payload();
     5929    return result;
    59305930}
    59315931
     
    60006000    if (!handlerVPC) {
    60016001        *ARG_exception = exceptionValue;
    6002         return JSImmediate::nullImmediate().payload();
     6002        return JSImmediate::nullImmediate();
    60036003    }
    60046004
     
    60076007    ASSERT(catchRoutine);
    60086008    CTI_SET_RETURN_ADDRESS(catchRoutine);
    6009     return exceptionValue.payload();
     6009    return exceptionValue;
    60106010}
    60116011
  • trunk/JavaScriptCore/VM/Register.h

    r37712 r37812  
    5151        Register();
    5252        Register(JSValuePtr);
    53         Register(JSCell*);
    5453
    5554        JSValuePtr jsValue(CallFrame*) const;
     
    144143    {
    145144        SET_TYPE(ValueType);
    146         u.value = v.payload();
    147     }
    148 
    149     ALWAYS_INLINE Register::Register(JSCell* v)
    150     {
    151         SET_TYPE(ValueType);
    152         u.value = JSValuePtr(v).payload();
     145        u.value = v;
    153146    }
    154147
  • trunk/JavaScriptCore/kjs/JSCell.h

    r37799 r37812  
    3030namespace JSC {
    3131
    32     class JSCell : Noncopyable {
     32    class JSCell : public JSValue {
    3333        friend class CTI;
    3434        friend class GetterSetter;
     
    113113    {
    114114        ASSERT(!JSImmediate::isImmediate(value));
    115         return reinterpret_cast<JSCell*>(value.payload());
     115        return static_cast<JSCell*>(value);
    116116    }
    117117
     
    168168        return globalData->heap.allocate(size);
    169169#endif
    170     }
    171 
    172     // --- JSValuePtr inlines ----------------------------
    173 
    174     inline JSValuePtr::JSValuePtr(const JSCell* cell)
    175         : m_payload(reinterpret_cast<JSValue*>(const_cast<JSCell*>(cell)))
    176     {
    177170    }
    178171
  • trunk/JavaScriptCore/kjs/JSImmediate.h

    r37712 r37812  
    4040    class UString;
    4141
    42     class JSValuePtr {
    43     public:
    44         JSValuePtr() { } // uninitialized (not zero)
    45         JSValuePtr(const JSValue* payload) : m_payload(const_cast<JSValue*>(payload)) { }
    46         JSValuePtr(const JSCell*);
    47 
    48         JSValue* payload() const { return m_payload; }
    49         JSValue** payloadPtr() { return &m_payload; }
    50 
    51         bool operator!() const { return !payload(); }
    52    
    53         // This conversion operator allows implicit conversion to bool but not to other integer types.
    54         typedef JSValue* JSValuePtr::*UnspecifiedBoolType;
    55         operator UnspecifiedBoolType() const { return payload() ? &JSValuePtr::m_payload : 0; }
    56 
    57         JSValue* operator->() const { return payload(); }
    58 
    59     private:
    60         JSValue* m_payload;
    61     };
     42    typedef JSValue* JSValuePtr;
    6243
    6344    inline JSValuePtr noValue() { return static_cast<JSValue*>(0); }
    64     inline void* asPointer(JSValuePtr value) { return value.payload(); }
     45    inline void* asPointer(JSValuePtr value) { return value; }
    6546
    6647    /*
     
    322303        static ALWAYS_INLINE uintptr_t rawValue(JSValuePtr v)
    323304        {
    324             return reinterpret_cast<uintptr_t>(v.payload());
     305            return reinterpret_cast<uintptr_t>(v);
    325306        }
    326307
  • trunk/JavaScriptCore/kjs/JSValue.h

    r37714 r37812  
    4747
    4848    class JSValue : Noncopyable {
    49     private:
    50         JSValue();
    51         ~JSValue();
     49    protected:
     50        JSValue() { }
     51        virtual ~JSValue() { }
    5252
    5353    public:
     
    137137    };
    138138
    139     bool operator==(JSValuePtr, JSValuePtr);
    140     bool operator!=(JSValuePtr, JSValuePtr);
    141 
    142139    // These are identical logic to the JSValue functions above, and faster than jsNumber(number)->toInt32().
    143140    int32_t toInt32(double);
     
    242239    }
    243240
    244     inline bool operator==(JSValuePtr a, JSValuePtr b)
    245     {
    246         return a.payload() == b.payload();
    247     }
    248 
    249     inline bool operator!=(JSValuePtr a, JSValuePtr b)
    250     {
    251         return a.payload() != b.payload();
    252     }
    253 
    254241} // namespace JSC
    255242
  • trunk/JavaScriptCore/kjs/PropertySlot.h

    r37712 r37812  
    4545        }
    4646
    47         explicit PropertySlot(JSValuePtr base)
    48             : m_slotBase(base)
     47        explicit PropertySlot(const JSValue* base)
     48            : m_slotBase(const_cast<JSValue*>(base))
    4949            , m_offset(WTF::notFound)
    5050        {
  • trunk/JavaScriptCore/kjs/protect.h

    r37712 r37812  
    9090       
    9191        T* get() const { return m_ptr; }
    92         operator JSValuePtr() const { return m_ptr; }
    9392        operator T*() const { return m_ptr; }
    9493        T* operator->() const { return m_ptr; }
     
    101100    private:
    102101        T* m_ptr;
    103     };
    104 
    105     template <> class ProtectedPtr<JSValuePtr> {
    106     public:
    107         ProtectedPtr() : m_ptr(0) { }
    108         ProtectedPtr(JSValuePtr);
    109         ProtectedPtr(const ProtectedPtr&);
    110         ~ProtectedPtr();
    111 
    112         template <class U> ProtectedPtr(const ProtectedPtr<U>&);
    113        
    114         JSValue* get() const { return m_ptr; }
    115         operator JSValuePtr() const { return m_ptr; }
    116         operator JSValue*() const { return m_ptr; }
    117         JSValue* operator->() const { return m_ptr; }
    118        
    119         bool operator!() const { return !m_ptr; }
    120 
    121         ProtectedPtr& operator=(JSValuePtr);
    122         ProtectedPtr& operator=(const ProtectedPtr&);
    123        
    124     private:
    125         JSValue* m_ptr;
    126102    };
    127103
     
    166142    }
    167143
    168     inline ProtectedPtr<JSValuePtr>::ProtectedPtr(JSValuePtr ptr)
    169         : m_ptr(ptr.payload())
    170     {
    171         gcProtectNullTolerant(m_ptr);
    172     }
    173 
    174     inline ProtectedPtr<JSValuePtr>::ProtectedPtr(const ProtectedPtr& o)
    175         : m_ptr(o.m_ptr)
    176     {
    177         gcProtectNullTolerant(m_ptr);
    178     }
    179 
    180     inline ProtectedPtr<JSValuePtr>::~ProtectedPtr()
    181     {
    182         gcUnprotectNullTolerant(m_ptr);
    183     }
    184 
    185     inline ProtectedPtr<JSValuePtr>& ProtectedPtr<JSValuePtr>::operator=(const ProtectedPtr& o)
    186     {
    187         JSValuePtr optr = o.m_ptr;
    188         gcProtectNullTolerant(optr);
    189         gcUnprotectNullTolerant(m_ptr);
    190         m_ptr = optr.payload();
    191         return *this;
    192     }
    193 
    194     inline ProtectedPtr<JSValuePtr>& ProtectedPtr<JSValuePtr>::operator=(JSValuePtr ptr)
    195     {
    196         gcProtectNullTolerant(ptr);
    197         gcUnprotectNullTolerant(m_ptr);
    198         m_ptr = ptr.payload();
    199         return *this;
    200     }
    201 
    202144    template <class T> inline bool operator==(const ProtectedPtr<T>& a, const ProtectedPtr<T>& b) { return a.get() == b.get(); }
    203145    template <class T> inline bool operator==(const ProtectedPtr<T>& a, const T* b) { return a.get() == b; }
Note: See TracChangeset for help on using the changeset viewer.