Show
Ignore:
Timestamp:
07/14/06 13:29:28 (2 years ago)
Author:
brmorris
Message:

2006-07-11 brmorris <bradley.morrison@nokia.com>

Reviewed by dacarson.


Fix for:
http://bugzilla.opendarwin.org/show_bug.cgi?id=9755


  • ChangeLog: Re-arranged all ChangeLog entry locations.
  • JavaScriptCore/ChangeLog: Stripped to S60WebKit only.
  • MemoryManager/ChangeLog: Added.
  • S60Internals/ChangeLog: Added.
  • S60Tools/ChangeLog: Added.
  • S60WebUi/ChangeLog: Added.
  • WebCore/ChangeLog: Added.
  • WebKit/ChangeLog: Re-arranged.
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • S60/trunk/JavaScriptCore/ChangeLog

    r9047 r15432  
    1 2005-04-22  Darin Adler  <darin@apple.com> 
     12006-06-06  Bradley  <bradley.morrison@nokia.com> 
    22 
    3         Reviewed by Maciej. 
     3        Reviewed by dacarson. 
     4         
     5        * JavaScriptCore\group\Bwinscw\JAVASCRIPTCOREU.DEF: 
     6        Regenerated. 
    47 
    5         * kjs/ustring.cpp: (KJS::UString::UTF8String): Fix off-by-one error in surrogate pair logic. 
     82006-06-04  Zalan  <zalan.bujtas@nokia.com> 
    69 
    7 2005-04-22  Darin Adler  <darin@apple.com> 
    8  
    9         Reviewed by John. 
    10  
    11         - fixed <rdar://problem/4090046> JavaScript throw statement causes parse error when no semicolon is present 
    12  
    13         * kjs/grammar.y: Added an additional rule for throw like the ones we have for all the other semicolon rules. 
    14         Not sure why we missed this one earlier. 
    15  
    16         * kjs/grammar.cpp: Regenerated. 
    17  
    18 === JavaScriptCore-412.1 === 
    19  
    20 2005-04-20  Darin Adler  <darin@apple.com> 
    21  
    22         Reviewed by Maciej. 
    23  
    24         - speedups, total 12% on JavaScript iBench 
    25  
    26         I ran the benchmark under Shark and followed its advice a lot, mainly. 
    27  
    28         * kjs/collector.cpp: 
    29         (KJS::Collector::allocate): Take out special case for 0; costing speed but unexercised. 
    30         Use numLiveObjectsAtLastCollect instead of numAllocationsSinceLastCollect so we don't 
    31         have to bump it each time we call allocate. Put numLiveObjects into a local variable to 
    32         cut down on global variable accesses. Make "next" cell pointer be a byte offset rather 
    33         than a pointer so we don't need a special case for NULL. Allow freeList to point to some 
    34         bogus item when the entire block is full rather than going out of our way to make it 
    35         point to NULL. 
    36         (KJS::Collector::markProtectedObjects): Get table size and pointer into locals outside 
    37         the loop to avoid re-loading them over and over again. 
    38         (KJS::Collector::collect): Put numLiveObjects into a local variable to cut down on global 
    39         variable accesses. Make "next" cell pointer be a byte offset as above. Put numLiveObjects 
    40         into a local variable to cut down on global variable accesses. Set numLiveObjectsAtLastCollect 
    41         rather than numAllocationsSinceLastCollect. 
    42         (KJS::Collector::numReferencedObjects): Get table size and pointer into locals outside 
    43         the loop to avoid re-loading them over and over again. 
    44         (KJS::Collector::rootObjectClasses): Ditto. 
    45  
    46         * kjs/internal.h: Make Value be a friend of NumberImp so it can construct number objects 
    47         directly, avoiding the conversion from Number to Value. 
    48  
    49         * kjs/internal.cpp: (StringImp::toObject): Don't use Object::dynamicCast, because we know 
    50         the thing is an object and we don't want to do all the extra work; just cast directly. 
    51  
    52         * kjs/list.cpp: (KJS::List::List): Construct valueRefCount in a way that avoids the need for 
    53         a branch -- in the hot case this just meant avoiding checking a variable we just set to false. 
    54  
    55         * kjs/lookup.cpp: (keysMatch): Marked this inline. 
    56  
    57         * kjs/nodes.cpp: Disabled KJS_BREAKPOINT, to avoid calling hitStatement all the time. 
    58         (BooleanNode::evaluate): Make a Value directly, rather than making a Boolean which is converted 
    59         into a Value. 
    60         (NumberNode::evaluate): Ditto. 
    61         (StringNode::evaluate): Ditto. 
    62         (ArrayNode::evaluate): Ditto. 
    63         (FunctionCallNode::evaluate): Use new inline baseIfMutable to avoid unnecessary getBase function. 
    64         Also just use a pointer for func, rather than an Object. 
    65         (PostfixNode::evaluate): Change code so that it doesn't make an excess Number, and so that it 
    66         passes a "known to be integer" boolean in, often avoiding a conversion from floating point to 
    67         integer and back. 
    68         (DeleteNode::evaluate): Make a Value directly. 
    69         (TypeOfNode::evaluate): Use new inline baseIfMutable and make Value directly. 
    70         (PrefixNode::evaluate): Change code so that it doesn't make an excess Number, and so that it 
    71         passes a "known to be integer" boolean in, often avoiding a conversion from floating point to 
    72         integer and back. 
    73         (UnaryPlusNode::evaluate): Make a Value directly. 
    74         (NegateNode::evaluate): Change code so that it doesn't make an excess Number, and so that it 
    75         passes a "known to be integer" boolean in, often avoiding a conversion from floating point to 
    76         integer and back. 
    77         (BitwiseNotNode::evaluate): Make a Value directly. 
    78         (LogicalNotNode::evaluate): Ditto. 
    79         (ShiftNode::evaluate): Don't convert to a double before making a Value. 
    80         (RelationalNode::evaluate): Make a Value directly. 
    81         (EqualNode::evaluate): Ditto. 
    82         (BitOperNode::evaluate): Ditto. 
    83         (AssignNode::evaluate): Make a Value directly. Change code so that it passes a "known to be integer" 
    84         boolean in, often avoiding a conversion from floating point to integer and back. 
    85         (VarDeclNode::evaluate): Make a Value directly. 
    86         (ForNode::execute): Remove unused local variable. 
    87  
    88         * kjs/operations.h: 
    89         (KJS::isNaN): Inlined. 
    90         (KJS::isInf): Ditto. 
    91         (KJS::isPosInf): Ditto. 
    92         (KJS::isNegInf): Ditto. 
    93  
    94         * kjs/operations.cpp: Change isNaN, isInf, isPosInf, and isNegInf to be inlines. 
    95         (KJS::equal): Rewrite to avoid creating values and recursing back into the function. 
    96         (KJS::relation): Rearranged code so that we don't need explicit isNaN checks. 
    97         (KJS::add): Changed code to make Value directly, and so that it passes a "known to be integer" 
    98         boolean in, often avoiding a conversion from floating point to integer and back. 
    99         (KJS::mult): Ditto. 
    100  
    101         * kjs/property_map.cpp: 
    102         (KJS::PropertyMap::~PropertyMap): Get size and entries pointer outside loop to avoid 
    103         re-getting them inside the loop. 
    104         (KJS::PropertyMap::clear): Ditto. Clear value pointer in addition to key, so we can just 
    105         look at the value pointer in the mark function. 
    106         (KJS::PropertyMap::get): Get sizeMask and entries pointer outside loop to avoid 
    107         re-getting them inside the loop. 
    108         (KJS::PropertyMap::put): Ditto. 
    109         (KJS::PropertyMap::insert): Ditto. 
    110         (KJS::PropertyMap::remove): Ditto. 
    111         (KJS::PropertyMap::mark): Get size and entries pointer outside loop to avoid 
    112         re-getting them inside the loop. Don't bother checking key for 0, since we already have 
    113         to check value for 0. (Also had to change clear() to set value to 0.) 
    114         (KJS::PropertyMap::addEnumerablesToReferenceList): Get size and entries pointer outside 
    115         loop to avoid re-getting them inside the loop. 
    116         (KJS::PropertyMap::addSparseArrayPropertiesToReferenceList): Ditto. 
    117         (KJS::PropertyMap::save): Ditto. 
    118  
    119         - other changes 
    120  
    121         * kjs/protected_values.h: Remove unneeded class name qualifiers. 
    122  
    123         * kjs/reference.h: 
    124         (KJS::Reference::baseIfMutable): New inline function: replaces isMutable(). 
    125         (KJS::Reference::Reference): Inlined. 
    126         * kjs/reference.cpp: 
    127         (KJS::Reference::getValue): Rewrite to not use getBase. 
    128         (KJS::Reference::putValue): Ditto. 
    129         (KJS::Reference::deleteValue): Dittol 
    130  
    131         * kjs/simple_number.h: 
    132         (KJS::SimpleNumber::integerFits): Added. For use when the parameter is known to be integral. 
    133  
    134         * kjs/string_object.cpp: (StringProtoFuncImp::call): Create the number without first converting 
    135         to double in various cases that involve integers. 
    136  
    137         * kjs/ustring.h: 
    138         (KJS::UString::attach): Inlined. 
    139         (KJS::UString::release): Inlined. 
    140         * kjs/ustring.cpp: 
    141         (KJS::UString::find): Get first character outside the loop instead of re-fetching it each time. 
    142  
    143         * kjs/value.cpp: 
    144         (Value::Value): Added overloads for all the various specific types of values, so you don't have 
    145         to convert from, say, Number to Value, just to create one. 
    146         (Number::Number): Added an overload that takes a boolean to indicate the number is already 
    147         known to be an integer. 
    148  
    149         * kjs/value.h: Added more Value constructors, added a version of toNumber that returns 
    150         a boolean to indicate if the number is known to be an integer (because it was a "simple number"). 
    151         (KJS::ValueImp::marked): Inlined. 
    152         (KJS::ValueImp::dispatchType): Inlined. 
    153         (KJS::ValueImp::dispatchToPrimitive): Inlined. 
    154         (KJS::ValueImp::dispatchToBoolean): Inlined. 
    155         (KJS::ValueImp::dispatchToNumber): Inlined. 
    156         (KJS::ValueImp::dispatchToString): Inlined. 
    157         (KJS::ValueImp::dispatchToUInt32): Inlined. 
    158  
    159 2005-04-14  Maciej Stachowiak  <mjs@apple.com> 
    160  
    161         - make fast_malloc.h a private header, not project 
    162  
    163         * JavaScriptCore.pbproj/project.pbxproj: 
    164  
    165 2005-04-12  Maciej Stachowiak  <mjs@apple.com> 
    166  
    167         Reviewed by Richard. 
    168  
    169         <rdar://problem/4089734> JavaScript iBench can be sped up ~10% with custom allocator 
    170  
    171         - use custom single-threaded malloc for all non-GC JavaScriptCore 
    172         allocations, for a 9.1% speedup on JavaScript iBench 
    173          
    174         * JavaScriptCore.pbproj/project.pbxproj: 
    175         * kjs/collector.cpp: 
    176         (KJS::Collector::allocate): Use dlmalloc to allocate the collector blocks. 
    177         (KJS::Collector::collect): And dlfree to free it. 
    178         * kjs/fast_malloc.cpp: Added, just the standard dlmalloc here. 
    179         * kjs/fast_malloc.h: Added. Declarations for the functions. Also added a handy 
    180         macro to give a class custom operator new/delete 
    181         * kjs/identifier.cpp: 
    182         (KJS::Identifier::add): Use dlmalloc/dlfree. 
    183         * kjs/nodes.h: make nodes KJS_FAST_ALLOCATED. 
    184         * kjs/property_map.cpp: 
    185         (KJS::PropertyMap::~PropertyMap): Use dlmalloc/dlfree. 
    186         (KJS::PropertyMap::rehash): ditto 
    187         * kjs/scope_chain.h: 
    188         * kjs/ustring.cpp: 
    189         (KJS::UString::Rep::createCopying): New named constructor that copies a passed-in 
    190         buffer, to hide allocation details from webcore. 
    191         (KJS::UString::UString): use createCopying when appropriate. 
    192         (KJS::UString::Rep::destroy): Use dlmalloc/dlfree. 
    193         (KJS::UString::expandedSize): likewise 
    194         (KJS::UString::expandCapacity): likewise 
    195         (KJS::UString::expandPreCapacity): likewise 
    196         (KJS::UString::spliceSubstringsWithSeparators): likewise 
    197         (KJS::UString::append): likewise 
    198         (KJS::UString::operator=): likewise 
    199         (KJS::UString::detach): likewise 
    200         * kjs/ustring.h: make UString and UString::Rep KJS_FAST_ALLOCATED. 
    201  
    202 2005-04-11  Maciej Stachowiak  <mjs@apple.com> 
    203  
    204         Reviewed by John. 
    205  
    206         <rdar://problem/4086819> Avoid using protect count hash table so much for 5.6% JS iBench speedup 
    207  
    208         - Avoid using protected values hash for the two most common cases 
    209         - Bump up ListImp high water mark, new testing shows 508 ListImps are 
    210         created during JS iBench. 
    211  
    212         Net result is a 5.6% speedup on JavaScript iBench 
    213          
    214         * kjs/collector.cpp: 
    215         (KJS::Collector::collect): mark protected lists as appropriate. 
    216         * kjs/context.h: 
    217         * kjs/list.cpp: 
    218         (KJS::ListImp::markValues): Moved implementation from List::markValues 
    219         (KJS::List::markProtectedLists): Implemented - scan pool and overflow 
    220         list. 
    221         (KJS::allocateListImp): link lists outside the pool into a separate 
    222         doubly linked list to be able to mark protected lists 
    223         (KJS::deallocateListImp): do the corresponding delinking 
    224         (KJS::List::derefValues): do nothing in conservative GC mode 
    225         (KJS::List::refValues): do nothing in conservative GC mode 
    226         (KJS::List::markValues): call ListImp version 
    227         (KJS::List::append): 
    228         * kjs/list.h: 
    229  
    230 === Safari-412 === 
    231  
    232 === Safari-411 === 
    233  
    234 === Safari-410 === 
    235  
    236 === Safari-409 === 
    237  
    238 === Safari-408 === 
    239  
    240 === Safari-407 === 
    241  
    242 2005-03-16  Jens Alfke  <jens@apple.com> 
    243  
    244         Reviewed by Kevin. 
    245  
    246         Fix for <rdar://problem/4025212> "REGRESSION (163-164): search not performed correctly; united.com" 
    247         JavaScript unescape("") was returning a messed-up String object that appeared identical to an empty string, but would in some cases act as 'null' when passed to native functions, in this case the Option() constructor. 
    248         In the implementation of unescape, the UString holding the result was not initialized to "", so it started out as a null string. If nothing was appended to it, it remained null, resulting in a JavaScript String object with some bad behaviors (namely, converting it to a DOMStringImpl results in a NULL pointer.) 
    249         Darin says this regression occurred when we replaced our own implementation of unescape() with code from KJS. 
    250  
    251         * kjs/function.cpp: 
    252         (KJS::GlobalFuncImp::call): 
    253  
    254 2005-03-15  Richard Williamson   <rjw@apple.com> 
    255  
    256         Fixed <rdar://problem/4053276> WebScripting protocol in WebKit cannot convert Boolean in Javascript to BOOL in Objective-C 
    257  
    258         Added JavaScript boolean to type that can be converted to 
    259         ObjC scalar parameters. 
    260  
    261         Reviewed by Ken Kocienda. 
    262  
    263         * bindings/objc/objc_utility.mm: 
    264         (KJS::Bindings::convertValueToObjcValue): 
    265  
    266 === Safari-406 === 
    267  
    268 === Safari-405 === 
    269  
    270 === Safari-403 === 
    271  
    272 === Safari-402 === 
    273  
    274 === Safari-401 === 
    275  
    276 === Safari-400 === 
    277  
    278 === Safari-188 === 
    279  
    280 2005-02-21  Darin Adler  <darin@apple.com> 
    281  
    282         * kjs/date_object.cpp: (timetUsingCF): Fixed indenting. 
    283  
    284 2005-02-17  Richard Williamson   <rjw@apple.com> 
    285  
    286         Fixed <rdar://problem/4003251> Safari crashed at www.icelandair.com in LiveConnect code converting a Java object to a string 
    287  
    288         Added nil check. 
    289  
    290         Reviewed by John Sullivan. 
    291  
    292         * bindings/jni/jni_runtime.cpp: 
    293         (JavaField::valueFromInstance): 
    294  
    295 === Safari-187 === 
    296  
    297 2005-02-11  Richard Williamson   <rjw@apple.com> 
    298  
    299         Fixed <rdar://problem/3985118> DOM objects not being marshaled on JS->native calls 
    300  
    301         Re-factored how 'native' wrappers for JS objects are created.  The interpreter now 
    302         creates these wrappers.  The WebCore subclass of the interpreter now overrides 
    303         createLanguageInstanceForValue() and creates a DOM ObjC wrapper for DOM objects. 
    304  
    305         Reviewed by Ken. 
    306  
    307         * bindings/c/c_utility.cpp: 
    308         (convertValueToNPVariant): 
    309         * bindings/jni/jni_instance.cpp: 
    310         (JavaInstance::invokeMethod): 
    311         * bindings/jni/jni_objc.mm: 
    312         (KJS::Bindings::dispatchJNICall): 
    313         * bindings/jni/jni_runtime.cpp: 
    314         (JavaField::valueFromInstance): 
    315         (JavaArray::valueAt): 
    316         * bindings/objc/WebScriptObject.mm: 
    317         (-[WebScriptObject _setExecutionContext:KJS::Bindings::]): 
    318         (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 
    319         * bindings/objc/WebScriptObjectPrivate.h: 
    320         * bindings/objc/objc_utility.h: 
    321         * bindings/objc/objc_utility.mm: 
    322         (KJS::Bindings::convertObjcValueToValue): 
    323         (KJS::Bindings::createObjcInstanceForValue): 
    324         * bindings/runtime.cpp: 
    325         (Instance::createBindingForLanguageInstance): 
    326         (Instance::createRuntimeObject): 
    327         (Instance::createLanguageInstanceForValue): 
    328         * bindings/runtime.h: 
    329         * kjs/interpreter.cpp: 
    330         (Interpreter::createLanguageInstanceForValue): 
    331         * kjs/interpreter.h: 
    332  
    333 === Safari-186 === 
    334  
    335 2005-02-10  Darin Adler  <darin@apple.com> 
    336  
    337         "Reviewed" by Richard (he told me the file was obsolete). 
    338  
    339         - got rid of an obsolete file 
    340  
    341         * bindings/npsap.h: Removed. 
    342  
    343 === Safari-185 === 
    344  
    345 === Safari-183 === 
    346  
    347 2005-02-03  Richard Williamson   <rjw@apple.com> 
    348  
    349         Fixed <rdar://problem/3972905> CrashTracer: ...36 crashes at com.apple.WebCore: khtml::CSSStyleSelector::applyDeclarations + 120 
    350  
    351         Revert to old (and correct) behavior of returning runtime object 
    352         when passed as a parameter, rather than it's corresponding DOM 
    353         object. 
    354  
    355         Reviewed by Chris. 
    356  
    357         * bindings/objc/WebScriptObject.mm: 
    358         (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 
    359  
    360 === Safari-182 === 
    361  
    362 2005-01-28  Richard Williamson   <rjw@apple.com> 
    363  
    364         Fixed <rdar://problem/3980389> JavaScript bindings access incorrect runtime object 
    365  
    366         Only use special 'back door' property to get the runtime object if thisObj isn't 
    367         already a runtime object. 
    368  
    369         <gratuitous> Cleaned up a couple of strcmp on ClassInfo name.  Used == on 
    370         ClassInfo pointer instead. 
    371  
    372         Reviewed by Chris. 
    373  
    374         * bindings/c/c_utility.cpp: 
    375         (convertValueToNPVariant): 
    376         * bindings/objc/WebScriptObject.mm: 
    377         (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 
    378         * bindings/runtime_method.cpp: 
    379         (RuntimeMethodImp::call): 
    380  
    381 === Safari-181 === 
    382  
    383 2005-01-26  Richard Williamson   <rjw@apple.com> 
    384  
    385         Fixed <rdar://problem/3972522> (179-180) 40% slowdown on iBench JavaScript test 
    386  
    387         I added a member variable to ObjectImp.  This changed it's size and consequently 
    388         hampered the optimizations built into the garbage collector.  Objects no longer 
    389         fit within the allocators cell size, and thus allocation fell back to a slower 
    390         allocator. 
    391  
    392         As a result of this fix I also dramatically cleaned up how runtime objects are 
    393         accessed.  The path mostly *removes* code. 
    394          
    395         Reviewed by Chris. 
    396  
    397         * bindings/runtime_method.cpp: 
    398         (RuntimeMethodImp::call): 
    399         * bindings/runtime_object.cpp: 
    400         (RuntimeObjectImp::get): 
    401         (RuntimeObjectImp::put): 
    402         (RuntimeObjectImp::canPut): 
    403         (RuntimeObjectImp::hasProperty): 
    404         (RuntimeObjectImp::defaultValue): 
    405         * bindings/runtime_object.h: 
    406         * kjs/object.cpp: 
    407         (KJS::ObjectImp::ObjectImp): 
    408         * kjs/object.h: 
    409  
    410 2005-01-20  Darin Adler  <darin@apple.com> 
    411  
    412         Reviewed by me, changes by Han Ming Ong. 
    413  
    414         - <rdar://problem/3964302> SWB: A few files need to be updated to be compilable under GCC 4.0 
    415  
    416         * bindings/objc/WebScriptObjectPrivate.h: Make members public. 
    417         * kjs/lookup.h: Change "value.h" to "object.h" because we need KJS::Object to compile a template. 
    418  
    419 2005-01-20  Richard Williamson   <rjw@apple.com> 
    420  
    421         Fixed <rdar://problem/3964634> undefined property value from binding seems to evaluate to true in an if statement 
    422  
    423         The comprehensive fix for this problem requires new API, as described in 3965326.  However, 
    424         given that we can't add new API at this point, the 'ObjcFallbackObjectImp' will behave 
    425         like and Undefined object if  invokeUndefinedMethodFromWebScript:withArguments: isn't 
    426         implemented on the bound object. 
    427  
    428         Reviewed by Chris. 
    429  
    430         * bindings/objc/objc_runtime.h: 
    431         * bindings/objc/objc_runtime.mm: 
    432         (ObjcFallbackObjectImp::type): 
    433         (ObjcFallbackObjectImp::implementsCall): 
    434         (ObjcFallbackObjectImp::toBoolean): 
    435         * bindings/testbindings.mm: 
    436         (+[MyFirstInterface isSelectorExcludedFromWebScript:]): 
    437         (+[MyFirstInterface isKeyExcludedFromWebScript:]): 
    438  
    439 === Safari-180 === 
    440  
    441 2005-01-19  Richard Williamson   <rjw@apple.com> 
    442  
    443         Fixed <rdar://problem/3853676> Browser Crash when accessing CCWeb Progress Page - KJS::Bindings::convertValueToJValue 
    444  
    445         Fixed the following problems with LiveConnect that are demonstrated by the application 
    446         described in 3853676. 
    447  
    448         1.  If a nil object is passed in an array from Java to JavaScript we will crash. 
    449         2.  We sometimes will incorrectly attempt to access a generic JavaScript as a Java runtime object wrapper. 
    450         3.  We will sometimes fail to find the correct static method ID. 
    451  
    452         Reviewed by Maciej. 
    453  
    454         * bindings/jni/jni_jsobject.cpp: 
    455         (JSObject::convertJObjectToValue): 
    456         (JSObject::listFromJArray): 
    457         * bindings/jni/jni_runtime.cpp: 
    458         (JavaField::valueFromInstance): 
    459         (JavaField::setValueToInstance): 
    460         * bindings/jni/jni_utility.cpp: 
    461         (KJS::Bindings::getMethodID): 
    462         (KJS::Bindings::convertValueToJValue): 
    463         * bindings/runtime_array.h: 
    464  
    465 2005-01-18  Richard Williamson   <rjw@apple.com> 
    466  
    467         Fixed several issues all arising from analysis of plugin detection code at ifilm.com: 
    468  
    469         Fixed <rdar://problem/3958592> can't script plug-ins if plug-in is invoked with <object> element instead of <embed> 
    470         Fixed <rdar://problem/3958597> <object> elements with IDs do not show up as named properties of the document 
    471         Fixed <rdar://problem/3960973> DOM objects for plugin elements are not accessible 
    472         Fixed <rdar://problem/3958601> need an additional class ID in WebCore for the Real plug-in 
    473  
    474         We now support accessing scriptable plugin objects that are specified with <applet>, <embed>, or <object> 
    475         tags.  Also, if any of these elements are named they can be accessed from the document or window objects. 
    476         Finally, DOM methods are properties will be forwarded appropriately for the plugin's root scriptable object. 
    477  
    478         Reviewed by Chris. 
    479  
    480         * bindings/objc/objc_instance.h: 
    481         * bindings/objc/objc_instance.mm: 
    482         (ObjcInstance::supportsSetValueOfUndefinedField): 
    483         * bindings/runtime.h: 
    484         (KJS::Bindings::Instance::supportsSetValueOfUndefinedField): 
    485         * bindings/runtime_object.cpp: 
    486         (RuntimeObjectImp::RuntimeObjectImp): 
    487         (RuntimeObjectImp::get): 
    488         (RuntimeObjectImp::put): 
    489         (RuntimeObjectImp::canPut): 
    490         (RuntimeObjectImp::hasProperty): 
    491         (RuntimeObjectImp::defaultValue): 
    492         * bindings/runtime_object.h: 
    493         (KJS::RuntimeObjectImp::fallbackObject): 
    494         * kjs/object.cpp: 
    495         (KJS::ObjectImp::ObjectImp): 
    496         * kjs/object.h: 
    497         (KJS::ObjectImp::forwardingScriptMessage): 
    498         (KJS::ObjectImp::setForwardingScriptMessage): 
    499  
    500 2005-01-18  Richard Williamson   <rjw@apple.com> 
    501  
    502         Back out a change that was incorrectly committed yesterday. 
    503  
    504         Reviewed by Chris. 
    505  
    506         * bindings/objc/objc_utility.mm: 
    507         (KJS::Bindings::convertValueToObjcValue): 
    508  
    509 2005-01-17  Richard Williamson   <rjw@apple.com> 
    510  
    511         Fixed <rdar://problem/3753030> Need to ensure same origin for plugin binding invocations (origin security rules) 
    512  
    513         Keep track of originating execution context and target execution 
    514         context for native JS object wrappers, and perform appropriate 
    515         security checks. 
    516  
    517         Reviewed by David Harrison. 
    518  
    519         * bindings/NP_jsobject.cpp: 
    520         (_isSafeScript): 
    521         (_NPN_CreateScriptObject): 
    522         (_NPN_Invoke): 
    523         (_NPN_Evaluate): 
    524         (_NPN_GetProperty): 
    525         (_NPN_SetProperty): 
    526         (_NPN_RemoveProperty): 
    527         (_NPN_HasProperty): 
    528         (_NPN_HasMethod): 
    529         (_NPN_SetException): 
    530         * bindings/NP_jsobject.h: 
    531         * bindings/c/c_instance.cpp: 
    532         (CInstance::CInstance): 
    533         (CInstance::stringValue): 
    534         * bindings/c/c_instance.h: 
    535         * bindings/c/c_utility.cpp: 
    536         (convertValueToNPVariant): 
    537         * bindings/jni/jni_instance.cpp: 
    538         (JavaInstance::JavaInstance): 
    539         (JavaInstance::valueOf): 
    540         * bindings/jni/jni_instance.h: 
    541         * bindings/objc/WebScriptObject.mm: 
    542         (-[WebScriptObject _initializeWithObjectImp:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 
    543         (-[WebScriptObject _initWithObjectImp:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 
    544         (-[WebScriptObject KJS::Bindings::]): 
    545         (-[WebScriptObject _setOriginExecutionContext:KJS::Bindings::]): 
    546         (-[WebScriptObject _isSafeScript]): 
    547         (-[WebScriptObject callWebScriptMethod:withArguments:]): 
    548         (-[WebScriptObject evaluateWebScript:]): 
    549         (-[WebScriptObject setValue:forKey:]): 
    550         (-[WebScriptObject valueForKey:]): 
    551         (-[WebScriptObject removeWebScriptKey:]): 
    552         (-[WebScriptObject stringRepresentation]): 
    553         (-[WebScriptObject webScriptValueAtIndex:]): 
    554         (-[WebScriptObject setWebScriptValueAtIndex:value:]): 
    555         (+[WebScriptObject _convertValueToObjcValue:KJS::originExecutionContext:Bindings::executionContext:Bindings::]): 
    556         * bindings/objc/WebScriptObjectPrivate.h: 
    557         * bindings/objc/objc_instance.h: 
    558         * bindings/objc/objc_runtime.mm: 
    559         (convertValueToObjcObject): 
    560         * bindings/objc/objc_utility.mm: 
    561         (KJS::Bindings::convertValueToObjcValue): 
    562         * bindings/runtime.cpp: 
    563         (Instance::Instance): 
    564         (Instance::operator=): 
    565         * bindings/runtime.h: 
    566         (KJS::Bindings::Instance::Instance): 
    567         (KJS::Bindings::Instance::setExecutionContext): 
    568         (KJS::Bindings::Instance::executionContext): 
    569         * bindings/runtime_root.cpp: 
    570         (RootObject::setInterpreter): 
    571         * bindings/runtime_root.h: 
    572         * kjs/interpreter.h: 
    573         (KJS::Interpreter::isGlobalObject): 
    574         (KJS::Interpreter::interpreterForGlobalObject): 
    575         (KJS::Interpreter::isSafeScript): 
    576  
    577 === Safari-179 === 
    578  
    579 2005-01-13  Vicki Murley <vicki@apple.com> 
    580  
    581         Reviewed by Adele. 
    582  
    583         - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005 
    584   
    585         * JavaScriptCore.pbproj/project.pbxproj: bump "2004" to "2005" 
    586  
    587 2005-01-12  Richard Williamson   <rjw@apple.com> 
    588  
    589         Avoid additional work on dealloc by adding early out to 
    590         removeNativeReference().  (This will save time on dealloc 
    591         for all ObjC DOM objects.) 
    592  
    593         Reviewed by Darin. 
    594  
    595         * bindings/runtime_root.cpp: 
    596         (KJS::Bindings::removeNativeReference): 
    597  
    598 2005-01-12  Richard Williamson   <rjw@apple.com> 
    599  
    600         Fixed <rdar://problem/3923356> REGRESSION: Java/JavaScript security checks working incorrectly 
    601  
    602         We were always returning the first "root" object for all runtime 
    603         objects.  Changed 0 in loop to i, the index. 
    604  
    605         Reviewed by David Harrison. 
    606  
    607         * bindings/runtime_root.cpp: 
    608         (KJS::Bindings::rootForImp): 
    609  
    610 2005-01-11  Richard Williamson   <rjw@apple.com> 
    611  
    612         Fixed <rdar://problem/3887930> Must use new Java plug-in API to get/set fields so exception handling works (fixes many LiveConnect crashes) 
    613  
    614         Use the new dispatching API to invoke JNI, rather than calling JNI 
    615         directly. 
    616  
    617         Reviewed by David Harrison. 
    618  
    619         * bindings/jni/jni_instance.cpp: 
    620         (JavaInstance::invokeMethod): 
    621         * bindings/jni/jni_runtime.cpp: 
    622         (JavaField::dispatchValueFromInstance): 
    623         (JavaField::valueFromInstance): 
    624         (JavaField::dispatchSetValueToInstance): 
    625         (JavaField::setValueToInstance): 
    626         * bindings/jni/jni_runtime.h: 
    627         * bindings/jni/jni_utility.cpp: 
    628         (KJS::Bindings::convertValueToJValue): 
    629  
    630 === Safari-178 === 
    631  
    632 === Safari-177 === 
    633  
    634 === Safari-176 === 
    635  
    636 2004-12-17  Maciej Stachowiak  <mjs@apple.com> 
    637  
    638         Reviewed by Kevin. 
    639  
    640         <rdar://problem/3926869> Opening caches window after running PLT causes crash 
    641          
    642         * kjs/protected_values.cpp: 
    643         (KJS::ProtectedValues::getProtectCount): Don't include simple numbers in 
    644         the protected value table. 
    645         (KJS::ProtectedValues::increaseProtectCount): Ditto. 
    646         (KJS::ProtectedValues::decreaseProtectCount): Ditto. 
    647  
    648 2004-12-16  Darin Adler  <darin@apple.com> 
    649  
    650         Reviewed by Maciej. 
    651  
    652         - fixed <rdar://problem/3920764> Unimplemented String methods toLocaleLowerCase and toLocaleUpperCase 
    653  
    654         * kjs/string_object.h: Added toLocaleLowerCase and toLocaleUpperCase. 
    655         * kjs/string_object.cpp: (StringProtoFuncImp::call): Made locale versions be synonmyms for the 
    656         non-locale-specific versions. 
    657         * kjs/string_object.lut.h: Regenerated. 
    658  
    659 2004-12-14  Richard Williamson   <rjw@apple.com> 
    660  
    661         Pass URL of plugin view when call into JNI. 
    662  
    663         Reviewed by Chris. 
    664  
    665         * bindings/jni/jni_objc.mm: 
    666         (KJS::Bindings::dispatchJNICall): 
    667  
    668 2004-12-13  Richard Williamson   <rjw@apple.com> 
    669  
    670         Fixed <rdar://problem/3827799> repro. crash with IBM Rational ClearCase Web under Safari (Java/LiveConnect-related) 
    671  
    672         Add support for calling static Java methods from JavaScript. 
    673  
    674         Reviewed by Maciej. 
    675  
    676         * bindings/jni/jni_instance.cpp: 
    677         (JavaInstance::invokeMethod): 
    678         * bindings/jni/jni_runtime.cpp: 
    679         (JavaMethod::JavaMethod): 
    680         * bindings/jni/jni_runtime.h: 
    681         (KJS::Bindings::JavaMethod::isStatic): 
    682         * bindings/jni/jni_utility.cpp: 
    683         (callJNIStaticMethod): 
    684         (KJS::Bindings::callJNIBooleanMethod): 
    685         (KJS::Bindings::callJNIStaticBooleanMethod): 
    686         * bindings/jni/jni_utility.h: 
    687  
    688 2004-12-13  Richard Williamson   <rjw@apple.com> 
    689  
    690         Fixed <rdar://problem/3887767> LiveConnect doesn't propagate Java exceptions back to JavaScript (prevents security suite from running) 
    691  
    692         Reviewed by John. 
    693  
    694         * bindings/jni/jni_instance.cpp: 
    695         (JavaInstance::invokeMethod): 
    696         * bindings/jni/jni_objc.mm: 
    697         (KJS::Bindings::dispatchJNICall): 
    698         * bindings/jni/jni_runtime.h: 
    699         * bindings/jni/jni_utility.h: 
    700  
    701 === Safari-175 === 
    702  
    703 2004-12-07  Maciej Stachowiak  <mjs@apple.com> 
    704  
    705         Reviewed by Darin. 
    706  
    707         <rdar://problem/3908017> REGRESSION (172-173): assertion in ObjectImp::construct trying to create JS error (24hourfitness.com) 
    708  
    709         The fix was to implement copy constructor and assignment operator, 
    710         the ones that worked on the base class did not replace the 
    711         defaults apparently! 
    712          
    713