| 1 | 2008-08-10 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 2 | |
| 3 | Reviewed (and updated) by Alp Toker. |
| 4 | |
| 5 | https://bugs.webkit.org/show_bug.cgi?id=16620 |
| 6 | [GTK] Autotools make dist and make check support |
| 7 | |
| 8 | Get make dist working. |
| 9 | |
| 10 | Note that not all possible configurations have been tested yet. |
| 11 | |
| 12 | * GNUmakefile.am: |
| 13 | |
| 14 | 2008-08-09 Alexey Proskuryakov <ap@webkit.org> |
| 15 | |
| 16 | Reviewed by Sam Weinig. |
| 17 | |
| 18 | Added same heap debug checks to more code paths. |
| 19 | |
| 20 | * kjs/JSActivation.cpp: |
| 21 | (KJS::JSActivation::put): |
| 22 | (KJS::JSActivation::putWithAttributes): |
| 23 | * kjs/JSGlobalObject.cpp: |
| 24 | (KJS::JSGlobalObject::putWithAttributes): |
| 25 | * kjs/JSObject.h: |
| 26 | (KJS::JSObject::putDirect): |
| 27 | * kjs/JSVariableObject.h: |
| 28 | (KJS::JSVariableObject::symbolTablePut): |
| 29 | (KJS::JSVariableObject::symbolTablePutWithAttributes): |
| 30 | |
| 31 | 2008-08-09 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 32 | |
| 33 | Reviewed by Maciej. |
| 34 | |
| 35 | Fix some style issues in the sampling tool. |
| 36 | |
| 37 | * VM/SamplingTool.cpp: |
| 38 | (KJS::sleepForMicroseconds): |
| 39 | (KJS::SamplingTool::dump): |
| 40 | |
| 41 | 2008-08-09 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 42 | |
| 43 | Reviewed by Oliver. |
| 44 | |
| 45 | Revision 35651, despite being a rather trivial change, introduced a |
| 46 | large regression on the regexp-dna SunSpider test. This regression |
| 47 | stemmed from an increase in the size of CodeBlock::dump(). There is |
| 48 | no reason for this method (and several related methods) to be compiled |
| 49 | in non-debug builds with the sampling tool disabled. This patch |
| 50 | conditionally compiles them, reversing the regression on SunSpider. |
| 51 | |
| 52 | * JavaScriptCore.exp: |
| 53 | * VM/CodeBlock.cpp: |
| 54 | * VM/CodeBlock.h: |
| 55 | * VM/Machine.cpp: |
| 56 | |
| 57 | 2008-08-08 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 58 | |
| 59 | Reviewed by Oliver. |
| 60 | |
| 61 | Bug 20330: JSCore crash loading any filehurricane media page |
| 62 | <https://bugs.webkit.org/show_bug.cgi?id=20330> |
| 63 | |
| 64 | Fix a typo in the constant loading patch. Also, add a case for |
| 65 | op_unexpected_load to CodeBlock::dump(). |
| 66 | |
| 67 | * VM/CodeBlock.cpp: |
| 68 | (KJS::CodeBlock::dump): |
| 69 | * VM/CodeGenerator.cpp: |
| 70 | (KJS::CodeGenerator::addUnexpectedConstant): |
| 71 | |
| 72 | 2008-08-08 Matt Lilek <webkit@mattlilek.com> |
| 73 | |
| 74 | Not reviewed, build fix. |
| 75 | |
| 76 | * JavaScriptCore.exp: |
| 77 | |
| 78 | 2008-08-08 Oliver Hunt <oliver@apple.com> |
| 79 | |
| 80 | Reviewed by Cameron Zwarich. |
| 81 | |
| 82 | Improve performance of arithmetic operators |
| 83 | |
| 84 | Added a fast (non-virtual) mechanism to determine if a non-immediate JSValue* |
| 85 | is a JSNumberCell. We then use this to allow improved specialisation in many |
| 86 | arithmetic operators. SunSpider reports a 2.5% progression overall, with greater |
| 87 | than 10% progressions on a number of arithmetic heavy tests. |
| 88 | |
| 89 | * VM/Machine.cpp: |
| 90 | (KJS::fastIsNumber): |
| 91 | (KJS::fastToInt32): |
| 92 | (KJS::fastToUInt32): |
| 93 | (KJS::jsLess): |
| 94 | (KJS::jsLessEq): |
| 95 | (KJS::jsAdd): |
| 96 | (KJS::Machine::privateExecute): |
| 97 | * kjs/JSNumberCell.h: |
| 98 | (KJS::JSNumberCell::fastToInt32): |
| 99 | (KJS::JSNumberCell::fastToUInt32): |
| 100 | * kjs/collector.cpp: |
| 101 | (KJS::allocateBlock): |
| 102 | (KJS::Heap::heapAllocate): |
| 103 | * kjs/collector.h: |
| 104 | (KJS::Heap::fastIsNumber): |
| 105 | |
| 106 | 2008-08-06 Adam Roben <aroben@apple.com> |
| 107 | |
| 108 | Try to fix the Windows build bots |
| 109 | |
| 110 | * API/JSBase.cpp: Touch this to force JSC to rebuild and re-copy the |
| 111 | WTF headers. |
| 112 | |
| 113 | 2008-08-06 Tor Arne Vestbø <tavestbo@trolltech.com> |
| 114 | |
| 115 | Revert change 35595. |
| 116 | |
| 117 | * wtf/RetainPtr.h: |
| 118 | |
| 119 | 2008-08-06 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 120 | |
| 121 | Fix non-Mac build. |
| 122 | |
| 123 | * wtf/RetainPtr.h: CoreFoundation only for PLATFORM(MAC) |
| 124 | |
| 125 | 2008-08-06 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 126 | |
| 127 | Fix non-Mac build. |
| 128 | |
| 129 | * wtf/RetainPtr.h: CoreFoundation only for PLATFORM(MAC) |
| 130 | |
| 131 | 2008-08-06 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| 132 | |
| 133 | Reviewed by Darin. Landed by Cameron. |
| 134 | |
| 135 | Bug 20272: typo in JavaScriptCore |
| 136 | <https://bugs.webkit.org/show_bug.cgi?id=20272> |
| 137 | |
| 138 | Correct the documentation for op_not. (typo) |
| 139 | Fix #undef. (typo) |
| 140 | |
| 141 | * VM/Machine.cpp: |
| 142 | (KJS::Machine::privateExecute): |
| 143 | |
| 144 | 2008-08-06 Cameron Zwarich <cwzwarich@webkit.org> |
| 145 | |
| 146 | Reviewed by Maciej. |
| 147 | |
| 148 | Bug 20286: Load constants all at once instead of using op_load |
| 149 | <https://bugs.webkit.org/show_bug.cgi?id=20286> |
| 150 | |
| 151 | Load constants all at once into temporary registers instead of using |
| 152 | individual instances of op_load. |
| 153 | |
| 154 | This is a 2.6% speedup on SunSpider. |
| 155 | |
| 156 | * JavaScriptCore.exp: |
| 157 | * VM/CodeBlock.cpp: |
| 158 | (KJS::CodeBlock::dump): |
| 159 | (KJS::CodeBlock::mark): |
| 160 | * VM/CodeBlock.h: |
| 161 | * VM/CodeGenerator.cpp: |
| 162 | (KJS::CodeGenerator::CodeGenerator): |
| 163 | (KJS::CodeGenerator::newTemporary): |
| 164 | (KJS::CodeGenerator::addConstant): |
| 165 | (KJS::CodeGenerator::addUnexpectedConstant): |
| 166 | (KJS::CodeGenerator::emitLoad): |
| 167 | (KJS::CodeGenerator::emitUnexpectedLoad): |
| 168 | (KJS::CodeGenerator::emitNewError): |
| 169 | * VM/CodeGenerator.h: |
| 170 | * VM/Machine.cpp: |
| 171 | (KJS::slideRegisterWindowForCall): |
| 172 | (KJS::Machine::unwindCallFrame): |
| 173 | (KJS::Machine::throwException): |
| 174 | (KJS::Machine::execute): |
| 175 | (KJS::Machine::privateExecute): |
| 176 | * VM/Machine.h: |
| 177 | * VM/Opcode.h: |
| 178 | * VM/RegisterID.h: |
| 179 | (KJS::RegisterID::RegisterID): |
| 180 | (KJS::RegisterID::makeConstant): |
| 181 | (KJS::RegisterID::isTemporary): |
| 182 | * kjs/NodeInfo.h: |
| 183 | * kjs/Parser.cpp: |
| 184 | (KJS::Parser::didFinishParsing): |
| 185 | * kjs/Parser.h: |
| 186 | (KJS::Parser::parse): |
| 187 | * kjs/grammar.y: |
| 188 | * kjs/nodes.cpp: |
| 189 | (KJS::NullNode::emitCode): |
| 190 | (KJS::BooleanNode::emitCode): |
| 191 | (KJS::NumberNode::emitCode): |
| 192 | (KJS::StringNode::emitCode): |
| 193 | (KJS::ArrayNode::emitCode): |
| 194 | (KJS::DeleteResolveNode::emitCode): |
| 195 | (KJS::DeleteValueNode::emitCode): |
| 196 | (KJS::VoidNode::emitCode): |
| 197 | (KJS::ConstDeclNode::emitCodeSingle): |
| 198 | (KJS::ReturnNode::emitCode): |
| 199 | (KJS::ScopeNode::ScopeNode): |
| 200 | (KJS::ProgramNode::ProgramNode): |
| 201 | (KJS::ProgramNode::create): |
| 202 | (KJS::EvalNode::EvalNode): |
| 203 | (KJS::EvalNode::create): |
| 204 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 205 | (KJS::FunctionBodyNode::create): |
| 206 | (KJS::FunctionBodyNode::emitCode): |
| 207 | * kjs/nodes.h: |
| 208 | (KJS::ScopeNode::neededConstants): |
| 209 | |
| 210 | 2008-08-05 Maciej Stachowiak <mjs@apple.com> |
| 211 | |
| 212 | Reviewed by Cameron. |
| 213 | |
| 214 | - add fast path for immediates to % operator, as we have for many other math ops |
| 215 | |
| 216 | This fixes handling for a 0 divisor relative to the last patch. Only an 0.2% speedup on SunSpider but |
| 217 | still a 1.4x win on Oliver's prime test. |
| 218 | |
| 219 | * VM/Machine.cpp: |
| 220 | (KJS::Machine::privateExecute): |
| 221 | |
| 222 | 2008-08-05 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 223 | |
| 224 | Reviewed by Darin. |
| 225 | |
| 226 | Bug 20293: Crash in JavaScript codegen for eval("const a;") |
| 227 | <https://bugs.webkit.org/show_bug.cgi?id=20293> |
| 228 | |
| 229 | Correctly handle constant declarations in eval code with no initializer. |
| 230 | |
| 231 | * kjs/nodes.cpp: |
| 232 | (KJS::ConstDeclNode::emitCodeSingle): |
| 233 | |
| 234 | 2008-08-05 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 235 | |
| 236 | Reviewed by Oliver. |
| 237 | |
| 238 | Roll out r35555 because of correctness issues. |
| 239 | |
| 240 | * VM/Machine.cpp: |
| 241 | (KJS::Machine::privateExecute): |
| 242 | |
| 243 | 2008-08-05 Maciej Stachowiak <mjs@apple.com> |
| 244 | |
| 245 | Reviewed by Geoff. |
| 246 | |
| 247 | - add fast path for immediates to % operator, as we have for many other math ops |
| 248 | |
| 249 | 0.6% speedup on SunSpider. 1.4x speedup on a prime testing torture test that Oliver whipped up. |
| 250 | |
| 251 | * VM/Machine.cpp: |
| 252 | (KJS::Machine::privateExecute): |
| 253 | |
| 254 | 2008-07-31 Oliver Hunt <oliver@apple.com> |
| 255 | |
| 256 | Reviewed by Cameron Zwarich. |
| 257 | |
| 258 | Bug 19359: JavaScriptCore behaves differently from FF2/3 and IE when handling context in catch statement |
| 259 | <https://bugs.webkit.org/show_bug.cgi?id=19359> |
| 260 | |
| 261 | Make our catch behave like Firefox and IE, we do this by using a StaticScopeObject |
| 262 | instead of a generic JSObject for the scope node. We still don't make use of the |
| 263 | fact that we have a static scope inside the catch block, so the internal performance |
| 264 | of the catch block is not improved, even though technically it would be possible to |
| 265 | do so. |
| 266 | |
| 267 | * VM/CodeBlock.cpp: |
| 268 | (KJS::CodeBlock::dump): |
| 269 | * VM/CodeGenerator.cpp: |
| 270 | (KJS::CodeGenerator::emitPushNewScope): |
| 271 | * VM/CodeGenerator.h: |
| 272 | * VM/Machine.cpp: |
| 273 | (KJS::createExceptionScope): |
| 274 | (KJS::Machine::privateExecute): |
| 275 | * VM/Machine.h: |
| 276 | * VM/Opcode.h: |
| 277 | * kjs/JSStaticScopeObject.cpp: |
| 278 | (KJS::JSStaticScopeObject::toThisObject): |
| 279 | (KJS::JSStaticScopeObject::put): |
| 280 | * kjs/JSStaticScopeObject.h: |
| 281 | * kjs/nodes.cpp: |
| 282 | (KJS::TryNode::emitCode): |
| 283 | |
| 284 | 2008-08-02 Rob Gowin <robg@gowin.net> |
| 285 | |
| 286 | Reviewed by Eric Seidel. |
| 287 | |
| 288 | Added JavaScriptCore/API/WebKitAvailability to list of files in |
| 289 | javascriptcore_h_api. |
| 290 | |
| 291 | * GNUmakefile.am: |
| 292 | |
| 293 | 2008-08-01 Alexey Proskuryakov <ap@webkit.org> |
| 294 | |
| 295 | Rubber-stamped by Maciej. |
| 296 | |
| 297 | Remove JSGlobalData::DataInstance. It was only needed when we had per-thread JSGlobalData |
| 298 | instances. |
| 299 | |
| 300 | * kjs/JSGlobalData.h: |
| 301 | |
| 302 | 2008-07-31 Kevin Ollivier <kevino@theolliviers.com> |
| 303 | |
| 304 | Second attempt at Windows/wx build fix. Instead of avoiding inclusion of windows.h, |
| 305 | use defines, etc. to avoid conflicts in each affected file. Also, change PLATFORM(WIN) |
| 306 | to PLATFORM(WIN_OS) so that other ports using Windows headers get the right impls. |
| 307 | |
| 308 | * VM/SamplingTool.cpp: |
| 309 | * wtf/Threading.h: |
| 310 | |
| 311 | 2008-07-31 Anders Carlsson <andersca@apple.com> |
| 312 | |
| 313 | Reviewed by Adam. |
| 314 | |
| 315 | Fix Windows build. |
| 316 | |
| 317 | * kjs/collector.h: |
| 318 | * wtf/FastMalloc.cpp: |
| 319 | |
| 320 | 2008-07-31 Csaba Osztrogonac <oszi@inf.u-szeged.hu> |
| 321 | |
| 322 | Reviewed by Simon. |
| 323 | |
| 324 | Bug 20170: [Qt] missing namespace defines in JavaScriptCore.pro |
| 325 | <https://bugs.webkit.org/show_bug.cgi?id=20170> |
| 326 | |
| 327 | * JavaScriptCore.pro: Added missing define. |
| 328 | |
| 329 | 2008-07-31 Alexey Proskuryakov <ap@webkit.org> |
| 330 | |
| 331 | Rubber-stamped by Maciej. |
| 332 | |
| 333 | Eliminate JSLock (it was already disabled, removing the stub implementaion and all |
| 334 | call sites now). |
| 335 | |
| 336 | * API/JSBase.cpp: |
| 337 | (JSEvaluateScript): |
| 338 | (JSCheckScriptSyntax): |
| 339 | (JSGarbageCollect): |
| 340 | * API/JSCallbackConstructor.cpp: |
| 341 | (KJS::constructJSCallback): |
| 342 | * API/JSCallbackFunction.cpp: |
| 343 | (KJS::JSCallbackFunction::call): |
| 344 | * API/JSCallbackObjectFunctions.h: |
| 345 | (KJS::::init): |
| 346 | (KJS::::getOwnPropertySlot): |
| 347 | (KJS::::put): |
| 348 | (KJS::::deleteProperty): |
| 349 | (KJS::::construct): |
| 350 | (KJS::::hasInstance): |
| 351 | (KJS::::call): |
| 352 | (KJS::::getPropertyNames): |
| 353 | (KJS::::toNumber): |
| 354 | (KJS::::toString): |
| 355 | (KJS::::staticValueGetter): |
| 356 | (KJS::::callbackGetter): |
| 357 | * API/JSContextRef.cpp: |
| 358 | (JSGlobalContextCreateInGroup): |
| 359 | (JSGlobalContextRetain): |
| 360 | (JSGlobalContextRelease): |
| 361 | * API/JSObjectRef.cpp: |
| 362 | (JSObjectMake): |
| 363 | (JSObjectMakeFunctionWithCallback): |
| 364 | (JSObjectMakeConstructor): |
| 365 | (JSObjectMakeFunction): |
| 366 | (JSObjectHasProperty): |
| 367 | (JSObjectGetProperty): |
| 368 | (JSObjectSetProperty): |
| 369 | (JSObjectGetPropertyAtIndex): |
| 370 | (JSObjectSetPropertyAtIndex): |
| 371 | (JSObjectDeleteProperty): |
| 372 | (JSObjectCallAsFunction): |
| 373 | (JSObjectCallAsConstructor): |
| 374 | (JSObjectCopyPropertyNames): |
| 375 | (JSPropertyNameArrayRelease): |
| 376 | (JSPropertyNameAccumulatorAddName): |
| 377 | * API/JSStringRef.cpp: |
| 378 | (JSStringRelease): |
| 379 | * API/JSValueRef.cpp: |
| 380 | (JSValueIsEqual): |
| 381 | (JSValueIsInstanceOfConstructor): |
| 382 | (JSValueMakeNumber): |
| 383 | (JSValueMakeString): |
| 384 | (JSValueToNumber): |
| 385 | (JSValueToStringCopy): |
| 386 | (JSValueToObject): |
| 387 | (JSValueProtect): |
| 388 | (JSValueUnprotect): |
| 389 | * ForwardingHeaders/JavaScriptCore/JSLock.h: Removed. |
| 390 | * GNUmakefile.am: |
| 391 | * JavaScriptCore.exp: |
| 392 | * JavaScriptCore.order: |
| 393 | * JavaScriptCore.pri: |
| 394 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 395 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 396 | * JavaScriptCoreSources.bkl: |
| 397 | * kjs/AllInOneFile.cpp: |
| 398 | * kjs/JSGlobalData.cpp: |
| 399 | (KJS::JSGlobalData::JSGlobalData): |
| 400 | * kjs/JSGlobalData.h: |
| 401 | * kjs/JSGlobalObject.cpp: |
| 402 | (KJS::JSGlobalObject::~JSGlobalObject): |
| 403 | (KJS::JSGlobalObject::init): |
| 404 | * kjs/JSLock.cpp: Removed. |
| 405 | * kjs/JSLock.h: Removed. |
| 406 | * kjs/Shell.cpp: |
| 407 | (functionGC): |
| 408 | (jscmain): |
| 409 | * kjs/collector.cpp: |
| 410 | (KJS::Heap::~Heap): |
| 411 | (KJS::Heap::heapAllocate): |
| 412 | (KJS::Heap::setGCProtectNeedsLocking): |
| 413 | (KJS::Heap::protect): |
| 414 | (KJS::Heap::unprotect): |
| 415 | (KJS::Heap::collect): |
| 416 | * kjs/identifier.cpp: |
| 417 | * kjs/interpreter.cpp: |
| 418 | (KJS::Interpreter::checkSyntax): |
| 419 | (KJS::Interpreter::evaluate): |
| 420 | |
| 421 | 2008-07-31 Alexey Proskuryakov <ap@webkit.org> |
| 422 | |
| 423 | Rubber-stamped by Oliver Hunt. |
| 424 | |
| 425 | Fix the Mac project to not display "test/" as part of file name for tests. |
| 426 | |
| 427 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 428 | |
| 429 | 2008-07-31 Eric Seidel <eric@webkit.org> |
| 430 | |
| 431 | Reviewed by Alexey Proskuryakov. |
| 432 | |
| 433 | Rename USE(MULTIPLE_THREADS) to ENABLE(JSC_MULTIPLE_THREADS) |
| 434 | to better match the use/enable pattern (and better describe |
| 435 | the usage of the feature in question.) |
| 436 | |
| 437 | I also fixed a couple other ENABLE_ macros to be pre-processor |
| 438 | definition override-able to match the rest of the ENABLE_ macros |
| 439 | since it seems to be our convention that build systems can set |
| 440 | ENABLE_ macros in Makefiles. |
| 441 | |
| 442 | * kjs/InitializeThreading.cpp: |
| 443 | (KJS::initializeThreadingOnce): |
| 444 | * kjs/JSGlobalData.cpp: |
| 445 | (KJS::JSGlobalData::JSGlobalData): |
| 446 | (KJS::JSGlobalData::~JSGlobalData): |
| 447 | * kjs/MathObject.cpp: |
| 448 | * kjs/collector.cpp: |
| 449 | (KJS::Heap::Heap): |
| 450 | (KJS::Heap::~Heap): |
| 451 | (KJS::allocateBlock): |
| 452 | (KJS::Heap::markStackObjectsConservatively): |
| 453 | * kjs/collector.h: |
| 454 | * kjs/dtoa.cpp: |
| 455 | (KJS::pow5mult): |
| 456 | (KJS::rv_alloc): |
| 457 | (KJS::freedtoa): |
| 458 | (KJS::dtoa): |
| 459 | * wtf/FastMalloc.cpp: |
| 460 | * wtf/Platform.h: |
| 461 | * wtf/RefCountedLeakCounter.cpp: |
| 462 | |
| 463 | 2008-07-30 Eric Seidel <eric@webkit.org> |
| 464 | |
| 465 | Reviewed by Mark Rowe. |
| 466 | |
| 467 | Try to clean up our usage of USE(MULTIPLE_THREADS) vs. USE(PTHREADS) a little. |
| 468 | It looks like JSC assumes that if MULTIPLE_THREADS is defined, then pthreads will always be available |
| 469 | I'm not sure that's always the case for gtk, certainly not for Windows. We should eventually go back |
| 470 | and fix wtf/Threading.h to cover all these cases some day. |
| 471 | |
| 472 | * kjs/JSLock.cpp: |
| 473 | * kjs/collector.h: |
| 474 | * wtf/Platform.h: |
| 475 | |
| 476 | 2008-07-30 Eric Seidel <eric@webkit.org> |
| 477 | |
| 478 | Reviewed by Oliver. |
| 479 | |
| 480 | MSVC warns when structs are called classes or vice versa. |
| 481 | Make all the source refer to JSGlobalData as a class. |
| 482 | |
| 483 | * kjs/CommonIdentifiers.h: |
| 484 | * kjs/JSGlobalData.h: |
| 485 | * kjs/Parser.h: |
| 486 | * kjs/lexer.h: |
| 487 | |
| 488 | 2008-07-30 Alexey Proskuryakov <ap@webkit.org> |
| 489 | |
| 490 | Reviewed by Geoff Garen. |
| 491 | |
| 492 | Add consistency checks to UString to document and enforce its design. |
| 493 | |
| 494 | * kjs/ustring.cpp: |
| 495 | (KJS::UString::Rep::create): |
| 496 | (KJS::UString::Rep::destroy): |
| 497 | (KJS::UString::Rep::checkConsistency): |
| 498 | (KJS::UString::expandCapacity): |
| 499 | (KJS::UString::expandPreCapacity): |
| 500 | (KJS::UString::UString): |
| 501 | (KJS::UString::spliceSubstringsWithSeparators): |
| 502 | (KJS::UString::append): |
| 503 | * kjs/ustring.h: |
| 504 | (KJS::UString::Rep::checkConsistency): |
| 505 | |
| 506 | 2008-07-30 Gavin Barraclough <barraclough@apple.com> |
| 507 | |
| 508 | Reviewed by Geoff Garen. |
| 509 | |
| 510 | Fixes for Windows and non-AllInOne file build with SamplingTool, plus review fixes. |
| 511 | |
| 512 | * GNUmakefile.am: Adding SamplingTool.cpp to build. |
| 513 | * JavaScriptCore.exp: Export hooks to init & control SamplingTool. |
| 514 | * JavaScriptCore.pri: Adding SamplingTool.cpp to build. |
| 515 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Adding SamplingTool.cpp to build. |
| 516 | * JavaScriptCore.xcodeproj/project.pbxproj: Adding SamplingTool.cpp to build. |
| 517 | * JavaScriptCoreSources.bkl: Adding SamplingTool.cpp to build. |
| 518 | * VM/Machine.cpp: MACHINE_SAMPLING_callingNativeFunction renamed MACHINE_SAMPLING_callingHostFunction |
| 519 | * VM/Machine.h: |
| 520 | * VM/Opcode.cpp: SamplingTool moved to SamplingTool.cpp/.h, opcodeNames generated from FOR_EACH_OPCODE_ID. |
| 521 | * VM/Opcode.h: |
| 522 | * VM/SamplingTool.cpp: Added .cpp/.h for SamplingTool. |
| 523 | * VM/SamplingTool.h: |
| 524 | * kjs/Shell.cpp: Switched SAMPLING_TOOL_ENABLED to ENABLE_SAMPLING_TOOL. |
| 525 | * wtf/Platform.h: Added ENABLE_SAMPLING_TOOL config option. |
| 526 | * kjs/nodes.cpp: Header include to fix non-AllInOne builds. |
| 527 | |
| 528 | 2008-07-30 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 529 | |
| 530 | Reviewed by Alexey Proskuryakov. |
| 531 | |
| 532 | Fix compilation without multi-threading support. |
| 533 | |
| 534 | * kjs/collector.cpp: |
| 535 | (KJS::Heap::Heap): |
| 536 | |
| 537 | 2008-07-30 Anders Carlsson <andersca@apple.com> |
| 538 | |
| 539 | Add WebKitAvailability.h forwarding header. |
| 540 | |
| 541 | * ForwardingHeaders/JavaScriptCore/WebKitAvailability.h: Added. |
| 542 | |
| 543 | 2008-07-30 Anders Carlsson <andersca@apple.com> |
| 544 | |
| 545 | Fix the else. |
| 546 | |
| 547 | * API/WebKitAvailability.h: |
| 548 | |
| 549 | 2008-07-30 Anders Carlsson <andersca@apple.com> |
| 550 | |
| 551 | * API/WebKitAvailability.h: |
| 552 | Fix Windows (and other non-Mac builds). |
| 553 | |
| 554 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 555 | Add WebKitAvailability.h to the project. |
| 556 | |
| 557 | 2008-07-30 Anders Carlsson <andersca@apple.com> |
| 558 | |
| 559 | One step closer towards fixing the Windows build. |
| 560 | |
| 561 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| 562 | Make sure to copy WebKitAvailability.h |
| 563 | |
| 564 | 2008-07-29 Gavin Barraclough <barraclough@apple.com> |
| 565 | |
| 566 | Reviewed by Geoff Garen. |
| 567 | |
| 568 | Bug 20209: Atomize constant strings |
| 569 | <https://bugs.webkit.org/show_bug.cgi?id=20209> |
| 570 | |
| 571 | Prevents significant performance degradation seen when a script contains multiple |
| 572 | identical strings that are used as keys to identify properties on objects. |
| 573 | |
| 574 | No performance change on SunSpider. |
| 575 | |
| 576 | * kjs/nodes.cpp: Atomize constant strings. |
| 577 | |
| 578 | 2008-07-30 Oliver Hunt <oliver@apple.com> |
| 579 | |
| 580 | Reviewed by Alexey Proskuryakov. |
| 581 | |
| 582 | <rdar://problem/6111648> JavaScript exceptions fail if the scope chain includes the global object |
| 583 | |
| 584 | In an attempt to remove the branch I just added to KJS::depth I |
| 585 | used the existence of a Variable Object at a point in the scope |
| 586 | chain as an indicator of function or global scope activation. |
| 587 | However this assumption results in incorrect behaviour if the |
| 588 | global object is injected into the scope chain with 'with'. |
| 589 | |
| 590 | * VM/Machine.cpp: |
| 591 | (KJS::depth): |
| 592 | |
| 593 | 2008-07-30 Alexey Proskuryakov <ap@webkit.org> |
| 594 | |
| 595 | Reviewed by Geoff Garen. |
| 596 | |
| 597 | Don't call JSGarbageCollect() on a released context. |
| 598 | |
| 599 | * API/testapi.c: (main): |
| 600 | |
| 601 | 2008-07-29 Alexey Proskuryakov <ap@webkit.org> |
| 602 | |
| 603 | Reviewed by Geoff Garen. |
| 604 | |
| 605 | Implement JSContextGroup APIs to make concurrent execution possible for |
| 606 | JavaScriptCore clients. |
| 607 | |
| 608 | This changes the behavior of JSGlobalContextCreate(), so that it now uses a private context |
| 609 | group for each context, making JSlock implicit locking unnecessary. |
| 610 | |
| 611 | * API/JSContextRef.h: |
| 612 | * API/JSContextRef.cpp: |
| 613 | (JSContextGroupCreate): |
| 614 | (JSContextGroupRetain): |
| 615 | (JSContextGroupRelease): |
| 616 | (JSGlobalContextCreate): |
| 617 | (JSGlobalContextCreateInGroup): |
| 618 | (JSGlobalContextRelease): |
| 619 | (JSContextGetGroup): |
| 620 | Added new methods. JSGlobalContextCreate() calls JSGlobalContextCreateInGroup() now. |
| 621 | |
| 622 | * API/APICast.h: (toJS): (toRef): Added converters for JSContextGroupRef. |
| 623 | * API/JSBase.cpp: (JSGarbageCollect): JSGarbageCollect(0) is now a no-op, and the passed in |
| 624 | context is actually used. |
| 625 | |
| 626 | * API/JSBase.h: Aded a typedef for JSContextGroupRef. Updated documentation for |
| 627 | JSGarbageCollect(). |
| 628 | |
| 629 | * JavaScriptCore.exp: Removed JSGlobalData::sharedInstance(). |
| 630 | |
| 631 | * kjs/JSGlobalData.cpp: |
| 632 | * kjs/JSGlobalData.h: |
| 633 | Removed support for JSGlobalData shared instance. JSGlobalData::isSharedInstance member |
| 634 | variable still remains, to be deleted in a followup patch. |
| 635 | |
| 636 | * kjs/JSLock.cpp: (KJS::JSLock::JSLock): Disabled JSLock, to be deleted in a follow-up patch. |
| 637 | |
| 638 | * kjs/collector.cpp: |
| 639 | (KJS::Heap::markOtherThreadConservatively): Removed an assertion that referenced |
| 640 | JSGlobalData::sharedInstance. |
| 641 | |
| 642 | * kjs/collector.h: Made Heap destructor public, so that JSContextRelease can use it. |
| 643 | |
| 644 | 2008-07-29 Alexey Proskuryakov <ap@webkit.org> |
| 645 | |
| 646 | Reviewed by Geoff Garen. |
| 647 | |
| 648 | Fix a leak of ThreadRegistrar objects. |
| 649 | |
| 650 | As the heap is usually deleted when registered threads still exist, ThreadSpecific doesn't |
| 651 | have a chance to clean up per-thread object. Switched to native pthread calls, storing a |
| 652 | plain pointer that doesn't require cleanup. |
| 653 | |
| 654 | * kjs/collector.cpp: |
| 655 | (KJS::PlatformThread::PlatformThread): |
| 656 | (KJS::Heap::Thread::Thread): |
| 657 | (KJS::Heap::Heap): |
| 658 | (KJS::Heap::~Heap): |
| 659 | (KJS::Heap::registerThread): |
| 660 | (KJS::Heap::unregisterThread): |
| 661 | * kjs/collector.h: |
| 662 | |
| 663 | 2008-07-29 Alexey Proskuryakov <ap@webkit.org> |
| 664 | |
| 665 | Reviewed by Sam Weinig. |
| 666 | |
| 667 | https://bugs.webkit.org/show_bug.cgi?id=20169 |
| 668 | Memory allocated with fastMalloc is freed with delete |
| 669 | |
| 670 | * VM/JSPropertyNameIterator.cpp: |
| 671 | (KJS::JSPropertyNameIterator::invalidate): Free the array properly. |
| 672 | (KJS::JSPropertyNameIterator::~JSPropertyNameIterator): Delete the array by calling |
| 673 | invalidate(). |
| 674 | |
| 675 | 2008-07-29 Mark Rowe <mrowe@apple.com> |
| 676 | |
| 677 | Attempt to fix the Qt build. |
| 678 | |
| 679 | * wtf/ThreadingQt.cpp: Add the extra argument to createThread. |
| 680 | |
| 681 | 2008-07-29 Adam Roben <aroben@apple.com> |
| 682 | |
| 683 | Change Vector::find to return an index instead of an iterator |
| 684 | |
| 685 | Indices are more natural than iterators when working with Vector. |
| 686 | |
| 687 | Reviewed by John Sullivan. |
| 688 | |
| 689 | * wtf/Vector.h: |
| 690 | (WTF::Vector::find): Changed to iterate the Vector manually and return |
| 691 | the index of the found item, rather than an iterator. When the item |
| 692 | could not be found, we return WTF::notFound. |
| 693 | |
| 694 | 2008-07-29 Adam Roben <aroben@apple.com> |
| 695 | |
| 696 | Windows build fix |
| 697 | |
| 698 | * wtf/ThreadingWin.cpp: |
| 699 | (WTF::setThreadName): Move a misplaced assertion to here... |
| 700 | (WTF::createThread): ...from here. |
| 701 | |
| 702 | 2008-07-29 Adam Roben <aroben@apple.com> |
| 703 | |
| 704 | Add support for setting thread names on Windows |
| 705 | |
| 706 | These thread names make it much easier to identify particular threads |
| 707 | in Visual Studio's Threads panel. |
| 708 | |
| 709 | WTF::createThread now takes a const char* representing the thread's |
| 710 | name. On Windows, we throw a special exception to set this string as |
| 711 | the thread's name. Other platforms do nothing with this name for now. |
| 712 | |
| 713 | Reviewed by Anders Carlsson. |
| 714 | |
| 715 | * JavaScriptCore.exp: Export the new version of createThread that |
| 716 | takes 3 arguments (the old one continues to be exported for backward |
| 717 | compatibility). |
| 718 | * wtf/Threading.h: Add a threadName argument to createThread. |
| 719 | |
| 720 | * wtf/ThreadingGtk.cpp: |
| 721 | (WTF::createThread): |
| 722 | * wtf/ThreadingNone.cpp: |
| 723 | (WTF::createThread): |
| 724 | Updated for function signature change. |
| 725 | |
| 726 | * wtf/ThreadingPthreads.cpp: |
| 727 | (WTF::createThread): Updated for function signature change. We keep |
| 728 | around the old 2-argument version of createThread for backward |
| 729 | compatibility. |
| 730 | |
| 731 | * wtf/ThreadingWin.cpp: |
| 732 | (WTF::setThreadName): Added. This function's implementation came from |
| 733 | MSDN. |
| 734 | (WTF::initializeThreading): Set the name of the main thread. |
| 735 | (WTF::createThread): Call setThreadName. We keep around the old |
| 736 | 2-argument version of createThread for backward compatibility. |
| 737 | |
| 738 | 2008-07-29 Alexey Proskuryakov <ap@webkit.org> |
| 739 | |
| 740 | Reviewed by Oliver Hunt. |
| 741 | |
| 742 | Store UString::Rep::isStatic bit in identifierTable pointer instead of reportedCost for |
| 743 | slightly nicer code and a 0.5% SunSpider improvement. |
| 744 | |
| 745 | * API/JSClassRef.cpp: |
| 746 | (OpaqueJSClass::~OpaqueJSClass): |
| 747 | (OpaqueJSClassContextData::OpaqueJSClassContextData): |
| 748 | * API/JSStringRef.cpp: |
| 749 | (JSStringRelease): |
| 750 | * kjs/PropertyNameArray.cpp: |
| 751 | (KJS::PropertyNameArray::add): |
| 752 | * kjs/identifier.cpp: |
| 753 | (KJS::IdentifierTable::~IdentifierTable): |
| 754 | (KJS::IdentifierTable::add): |
| 755 | (KJS::Identifier::addSlowCase): |
| 756 | (KJS::Identifier::remove): |
| 757 | * kjs/identifier.h: |
| 758 | (KJS::Identifier::add): |
| 759 | * kjs/ustring.cpp: |
| 760 | (KJS::): |
| 761 | (KJS::UString::Rep::create): |
| 762 | (KJS::UString::Rep::destroy): |
| 763 | * kjs/ustring.h: |
| 764 | (KJS::UString::Rep::identifierTable): |
| 765 | (KJS::UString::Rep::setIdentifierTable): |
| 766 | (KJS::UString::Rep::isStatic): |
| 767 | (KJS::UString::Rep::setStatic): |
| 768 | (KJS::UString::cost): |
| 769 | |
| 770 | 2008-07-28 Geoffrey Garen <ggaren@apple.com> |
| 771 | |
| 772 | Reviewed by Sam Weinig. |
| 773 | |
| 774 | Renamed "ConstructTypeNative" => "ConstructTypeHost". |
| 775 | |
| 776 | 2008-07-26 Mark Rowe <mrowe@apple.com> |
| 777 | |
| 778 | Speculative fix for the wx build. |
| 779 | |
| 780 | * JavaScriptCoreSources.bkl: Add JSStaticScopeObject.cpp to the list of source files. |
| 781 | |
| 782 | 2008-07-25 Oliver Hunt <oliver@apple.com> |
| 783 | |
| 784 | RS=Cameron Zwarich. |
| 785 | |
| 786 | Whoops, forgot to save style correction. |
| 787 | |
| 788 | * kjs/JSStaticScopeObject.h: |
| 789 | |
| 790 | 2008-07-25 Oliver Hunt <oliver@apple.com> |
| 791 | |
| 792 | Reviewed by Cameron Zwarich. |
| 793 | |
| 794 | Bug 19718: Named anonymous functions are slow accessing global variables |
| 795 | <https://bugs.webkit.org/show_bug.cgi?id=19718> |
| 796 | |
| 797 | To fix this we switch over to an activation-like scope object for |
| 798 | on which we attach the function name property, and add logic to |
| 799 | prevent cross scope assignment to read only properties. |
| 800 | |
| 801 | * GNUmakefile.am: |
| 802 | * JavaScriptCore.pri: |
| 803 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 804 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 805 | * VM/CodeGenerator.cpp: |
| 806 | (KJS::CodeGenerator::findScopedProperty): |
| 807 | (KJS::CodeGenerator::emitResolve): |
| 808 | * VM/CodeGenerator.h: |
| 809 | * kjs/AllInOneFile.cpp: |
| 810 | * kjs/JSStaticScopeObject.cpp: Added. |
| 811 | (KJS::JSStaticScopeObject::putWithAttributes): |
| 812 | (KJS::JSStaticScopeObject::isDynamicScope): |
| 813 | (KJS::JSStaticScopeObject::~JSStaticScopeObject): |
| 814 | (KJS::JSStaticScopeObject::getOwnPropertySlot): |
| 815 | * kjs/JSStaticScopeObject.h: Added. |
| 816 | (KJS::JSStaticScopeObject::JSStaticScopeObjectData::JSStaticScopeObjectData): |
| 817 | (KJS::JSStaticScopeObject::JSStaticScopeObject): |
| 818 | * kjs/nodes.cpp: |
| 819 | (KJS::FunctionCallResolveNode::emitCode): |
| 820 | (KJS::PostfixResolveNode::emitCode): |
| 821 | (KJS::PrefixResolveNode::emitCode): |
| 822 | (KJS::ReadModifyResolveNode::emitCode): |
| 823 | (KJS::AssignResolveNode::emitCode): |
| 824 | (KJS::FuncExprNode::makeFunction): |
| 825 | |
| 826 | 2008-07-25 kevino <kevino@theolliviers.com> |
| 827 | |
| 828 | wx build fix for Win. |
| 829 | |
| 830 | On wx/Win, including windows.h in Threading.h causes multiply-defined symbol errors |
| 831 | for libjpeg and wx, and also wx needs to include windows.h itself first for wx |
| 832 | includes to work right. So until we can find a better solution to this problem, |
| 833 | on wx, we work around the need to include windows.h here. |
| 834 | |
| 835 | * wtf/Threading.h: |
| 836 | |
| 837 | 2008-07-25 Adam Roben <aroben@apple.com> |
| 838 | |
| 839 | Windows build fix |
| 840 | |
| 841 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add API/ to the |
| 842 | include path. |
| 843 | |
| 844 | 2008-07-25 Simon Hausmann <hausmann@webkit.org> |
| 845 | |
| 846 | Fix the build of jsc on Qt/Windows, make sure os-win32 is in the |
| 847 | include search path (added by WebKit.pri). |
| 848 | |
| 849 | * kjs/jsc.pro: |
| 850 | |
| 851 | 2008-07-25 Alexey Proskuryakov <ap@webkit.org> |
| 852 | |
| 853 | Reviewed by Simon Hausmann. |
| 854 | |
| 855 | Move JavaScriptCore API tests into a subdirectory of their own to avoid header name |
| 856 | conflicts and developer confusion. |
| 857 | |
| 858 | * API/JSNode.c: Removed. |
| 859 | * API/JSNode.h: Removed. |
| 860 | * API/JSNodeList.c: Removed. |
| 861 | * API/JSNodeList.h: Removed. |
| 862 | * API/Node.c: Removed. |
| 863 | * API/Node.h: Removed. |
| 864 | * API/NodeList.c: Removed. |
| 865 | * API/NodeList.h: Removed. |
| 866 | * API/minidom.c: Removed. |
| 867 | * API/minidom.html: Removed. |
| 868 | * API/minidom.js: Removed. |
| 869 | * API/testapi.c: Removed. |
| 870 | * API/testapi.js: Removed. |
| 871 | * API/tests: Added. |
| 872 | * API/tests/JSNode.c: Copied from JavaScriptCore/API/JSNode.c. |
| 873 | * API/tests/JSNode.h: Copied from JavaScriptCore/API/JSNode.h. |
| 874 | * API/tests/JSNodeList.c: Copied from JavaScriptCore/API/JSNodeList.c. |
| 875 | * API/tests/JSNodeList.h: Copied from JavaScriptCore/API/JSNodeList.h. |
| 876 | * API/tests/Node.c: Copied from JavaScriptCore/API/Node.c. |
| 877 | * API/tests/Node.h: Copied from JavaScriptCore/API/Node.h. |
| 878 | * API/tests/NodeList.c: Copied from JavaScriptCore/API/NodeList.c. |
| 879 | * API/tests/NodeList.h: Copied from JavaScriptCore/API/NodeList.h. |
| 880 | * API/tests/minidom.c: Copied from JavaScriptCore/API/minidom.c. |
| 881 | * API/tests/minidom.html: Copied from JavaScriptCore/API/minidom.html. |
| 882 | * API/tests/minidom.js: Copied from JavaScriptCore/API/minidom.js. |
| 883 | * API/tests/testapi.c: Copied from JavaScriptCore/API/testapi.c. |
| 884 | * API/tests/testapi.js: Copied from JavaScriptCore/API/testapi.js. |
| 885 | * GNUmakefile.am: |
| 886 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| 887 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 888 | |
| 889 | 2008-07-25 Simon Hausmann <hausmann@webkit.org> |
| 890 | |
| 891 | Prospective WX build fix, add JavaScriptCore/API to the include search |
| 892 | path. |
| 893 | |
| 894 | * jscore.bkl: |
| 895 | |
| 896 | 2008-07-25 Simon Hausmann <hausmann@webkit.org> |
| 897 | |
| 898 | Rubber-stamped by Lars. |
| 899 | |
| 900 | Fix the build on Windows. operator new for ArgList is implemented using fastMalloc() |
| 901 | but operator delete was not implemented. Unfortunately MSVC decides to call/reference |
| 902 | the function, so a simple implementation using fastFree() fixes the build. |
| 903 | |
| 904 | * kjs/ArgList.h: |
| 905 | (KJS::ArgList::operator delete): |
| 906 | |
| 907 | 2008-07-25 Simon Hausmann <hausmann@webkit.org> |
| 908 | |
| 909 | Discussed with and rubber-stamped by Lars. |
| 910 | |
| 911 | Fix the build system for the Qt port. |
| 912 | |
| 913 | Recent JavaScriptCore changes require the addition of JavaScriptCore/API to the |
| 914 | include search path. With a build process that combines JavaScriptCore and |
| 915 | WebCore in one build process/Makefile the existance of |
| 916 | JavaScriptCore/API/Node.h and WebCore/dom/Node.h causes include conflicts. |
| 917 | |
| 918 | This commit solves this by introducing a separate build of JavaScriptCore into |
| 919 | a static library. |
| 920 | |
| 921 | As a result of the split-up a race-condition due to broken dependencies of |
| 922 | regular source files to header files of generated sources showed up very |
| 923 | frequently when doing parallel builds (which the buildbot does). This commit at |
| 924 | the same time tries to address the dependency problem by making the |
| 925 | addExtraCompiler() function also generate a pseudo extra compiler that |
| 926 | represents the header file output, so that qmake is aware of the creation of |
| 927 | the header file for dependency calculation. |
| 928 | |
| 929 | At the same time I removed a lot of cruft from the pro files to ease maintenance. |
| 930 | |
| 931 | * JavaScriptCore.pri: |
| 932 | * JavaScriptCore.pro: Added. |
| 933 | * kjs/jsc.pro: |
| 934 | |
| 935 | 2008-07-24 Geoffrey Garen <ggaren@apple.com> |
| 936 | |
| 937 | Reviewed by Maciej Stachowiak. |
| 938 | |
| 939 | Fixed a strict aliasing violation, which caused hash tables with floating |
| 940 | point keys not to find items that were indeed in the tables |
| 941 | (intermittently, and only in release builds, of course). |
| 942 | |
| 943 | SunSpider reports no change. |
| 944 | |
| 945 | This bug doesn't seem to affect any existing code, but it causes obvious |
| 946 | crashes in some new code I'm working on. |
| 947 | |
| 948 | * wtf/HashFunctions.h: |
| 949 | (WTF::FloatHash::hash): Use a union when punning between a float / double |
| 950 | and an unsigned (bucket of bits). With strict aliasing enabled, unions |
| 951 | are the only safe way to do this kind of type punning. |
| 952 | |
| 953 | * wtf/HashTable.h: When rehashing, ASSERT that the item we just added to |
| 954 | the table is indeed in the table. In the buggy case described above, this |
| 955 | ASSERT fires. |
| 956 | |
| 957 | 2008-07-24 Oliver Hunt <oliver@apple.com> |
| 958 | |
| 959 | Reviewed by Alexey Proskuryakov. |
| 960 | |
| 961 | Bug 20142: REGRESSION(r35245): /=/ weirdness |
| 962 | <https://bugs.webkit.org/show_bug.cgi?id=20142> |
| 963 | |
| 964 | When adding all the meta data needed for exception error messages |
| 965 | I accidentally clobbered the handling of regex beginning with /=. |
| 966 | |
| 967 | * kjs/grammar.y: |
| 968 | |
| 969 | 2008-07-23 Alp Toker <alp@nuanti.com> |
| 970 | |
| 971 | Build fix after r35293: Add API/ to the include path. |
| 972 | |
| 973 | * GNUmakefile.am: |
| 974 | |
| 975 | 2008-07-23 Adam Roben <aroben@apple.com> |
| 976 | |
| 977 | Windows build fixes |
| 978 | |
| 979 | Build fix after r35293: |
| 980 | |
| 981 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add API/ |
| 982 | to the include path. |
| 983 | |
| 984 | Build fix after r35305: |
| 985 | |
| 986 | * VM/Machine.cpp: |
| 987 | * VM/Machine.h: |
| 988 | * VM/Opcode.cpp: |
| 989 | * VM/Opcode.h: |
| 990 | Completely compile out all sampler-related code when |
| 991 | SAMPLING_TOOL_ENABLED is 0. The sampler code can't be compiled 1) on |
| 992 | non-AllInOne configurations due to circular header dependencies, and |
| 993 | 2) on platforms that don't have a usleep() function, such as Windows. |
| 994 | |
| 995 | 2008-07-23 Oliver Hunt <oliver@apple.com> |
| 996 | |
| 997 | Reviewed by Geoff Garen and Sam Weinig. |
| 998 | |
| 999 | Improve switch performance. |
| 1000 | |
| 1001 | Improve switch performance by converting to a hashmap based jump |
| 1002 | table to avoid the sequence of dispatches that would otherwise be |
| 1003 | needed. This results in a 9-19x performance win for string switches |
| 1004 | based on ad hoc testing, and a 6x improvement for integer switch |
| 1005 | statements. SunSpider reports a 1.2% progression. |
| 1006 | |
| 1007 | * VM/CodeBlock.cpp: |
| 1008 | (KJS::CodeBlock::dump): |
| 1009 | (KJS::SimpleJumpTable::offsetForValue): |
| 1010 | * VM/CodeBlock.h: |
| 1011 | * VM/CodeGenerator.cpp: |
| 1012 | (KJS::CodeGenerator::beginSwitch): |
| 1013 | (KJS::prepareJumpTableForImmediateSwitch): |
| 1014 | (KJS::prepareJumpTableForCharacterSwitch): |
| 1015 | (KJS::prepareJumpTableForStringSwitch): |
| 1016 | (KJS::CodeGenerator::endSwitch): |
| 1017 | * VM/CodeGenerator.h: |
| 1018 | * VM/Machine.cpp: |
| 1019 | (KJS::offsetForStringSwitch): |
| 1020 | (KJS::Machine::privateExecute): |
| 1021 | * VM/Opcode.cpp: |
| 1022 | (KJS::): |
| 1023 | * VM/Opcode.h: |
| 1024 | * kjs/JSImmediate.h: |
| 1025 | * kjs/nodes.cpp: |
| 1026 | (KJS::): |
| 1027 | (KJS::processClauseList): |
| 1028 | (KJS::CaseBlockNode::tryOptimisedSwitch): |
| 1029 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 1030 | * kjs/nodes.h: |
| 1031 | (KJS::SwitchInfo::): |
| 1032 | |
| 1033 | 2008-07-23 Gavin Barraclough <barraclough@apple.com> |
| 1034 | |
| 1035 | Reviewed by Geoff Garen. |
| 1036 | |
| 1037 | Sampling tool to analyze cost of instruction execution and identify hot regions of JS code. |
| 1038 | Enable Switches by setting SAMPLING_TOOL_ENABLED in Opcode.h. |
| 1039 | |
| 1040 | * JavaScriptCore.exp: Export symbols for Shell.cpp. |
| 1041 | * VM/Machine.cpp: Added sampling hooks. |
| 1042 | * VM/Machine.h: Machine contains a pointer to a sampler, when sampling. |
| 1043 | * VM/Opcode.cpp: Tool implementation. |
| 1044 | * VM/Opcode.h: Tool declaration. |
| 1045 | * kjs/Shell.cpp: Initialize the sampler, if enabled. |
| 1046 | * kjs/nodes.cpp: Added sampling hooks. |
| 1047 | |
| 1048 | 2008-07-23 Gabor Loki <loki@inf.u-szeged.hu> |
| 1049 | |
| 1050 | Bug 20097: [Qt] 20% Sunspider slow-down |
| 1051 | |
| 1052 | <https://bugs.webkit.org/show_bug.cgi?id=20097> |
| 1053 | |
| 1054 | Reviewed by Simon Hausmann. |
| 1055 | |
| 1056 | * kjs/jsc.pro: Added missing NDEBUG define for release builds. |
| 1057 | |
| 1058 | 2008-07-23 Alexey Proskuryakov <ap@webkit.org> |
| 1059 | |
| 1060 | Reviewed by Geoff Garen. |
| 1061 | |
| 1062 | JSClassRef is created context-free, but gets infatuated with the first context it sees. |
| 1063 | |
| 1064 | The implicit API contract is that JSClassRef can be used with any context on any thread. |
| 1065 | This no longer worked, because UStrings in the class were turned into per-context |
| 1066 | identifiers, and the cached JSObject prototype was tied to JSGlobalData, too. |
| 1067 | |
| 1068 | * API/JSClassRef.h: Made a separate struct for context-dependent parts of OpaqueJSClass. |
| 1069 | * API/JSClassRef.cpp: |
| 1070 | (OpaqueJSClass::OpaqueJSClass): Updated for renames and changed member variable order. |
| 1071 | (OpaqueJSClass::~OpaqueJSClass): Assert that string members are not identifiers. |
| 1072 | (clearReferenceToPrototype): Update for the new reference location. |
| 1073 | (OpaqueJSClassContextData::OpaqueJSClassContextData): Make a deep copy of all strings. |
| 1074 | (OpaqueJSClass::contextData): Added a function that finds the per-context part of |
| 1075 | OpaqueJSClass in JSGlobalData, or creates it if not found. |
| 1076 | (OpaqueJSClass::className): Always make a deep copy. Callers of this function do not have |
| 1077 | a way to access JSGlobalData, so a per-context copy could not be made. |
| 1078 | (OpaqueJSClass::staticValues): Updated for new data location. |
| 1079 | (OpaqueJSClass::staticFunctions): Ditto. |
| 1080 | (OpaqueJSClass::prototype): Changed to take an internal type for consistency. |
| 1081 | |
| 1082 | * kjs/JSGlobalData.cpp: |
| 1083 | (KJS::JSGlobalData::JSGlobalData): |
| 1084 | (KJS::JSGlobalData::~JSGlobalData): |
| 1085 | * kjs/JSGlobalData.h: |
| 1086 | Keep a HashMap to access per-context JSClass data given a pointr to the shared part. |
| 1087 | |
| 1088 | * API/JSCallbackObjectFunctions.h: |
| 1089 | (KJS::::className): |
| 1090 | (KJS::::getOwnPropertySlot): |
| 1091 | (KJS::::put): |
| 1092 | (KJS::::deleteProperty): |
| 1093 | (KJS::::getPropertyNames): |
| 1094 | (KJS::::staticValueGetter): |
| 1095 | (KJS::::staticFunctionGetter):j |
| 1096 | Use function accessors instead of accessing OpaqueJSClass members directly. |
| 1097 | |
| 1098 | * API/JSContextRef.cpp: (JSGlobalContextCreate): Updated for the change in |
| 1099 | OpaqueJSClass::prototype() argument type. |
| 1100 | |
| 1101 | * API/JSObjectRef.cpp: |
| 1102 | (JSObjectMake): Updated for the change in OpaqueJSClass::prototype() argument type. |
| 1103 | (JSObjectMakeConstructor): Ditto. |
| 1104 | |
| 1105 | 2008-07-23 Alexey Proskuryakov <ap@webkit.org> |
| 1106 | |
| 1107 | Build fix. |
| 1108 | |
| 1109 | * kjs/ArgList.h: (KJS::ArgList::operator new): removed an extraneous "ArgList::" inside the |
| 1110 | class definition. |
| 1111 | |
| 1112 | 2008-07-22 Geoffrey Garen <ggaren@apple.com> |
| 1113 | |
| 1114 | Reviewed by Oliver Hunt and Sam Weinig. |
| 1115 | |
| 1116 | Next step toward putting doubles in registers: Prepare the Register class |
| 1117 | and its clients for registers that don't contain JSValue*s. |
| 1118 | |
| 1119 | This means a few things: |
| 1120 | |
| 1121 | 1. Register::jsValue() clients, including ArgList clients, must now supply |
| 1122 | an ExecState* when accessing an entry in an ArgList, in case the entry |
| 1123 | will need to create a JSValue* on the fly. |
| 1124 | |
| 1125 | 2. Register clients that definitely don't want to create a JSValue* on |
| 1126 | the fly now use different APIs: getJSValue() for clients that know |
| 1127 | the register contains a JSValue*, and v() for clients who just want a |
| 1128 | void*. |
| 1129 | |
| 1130 | 3. I had to change some headers around in order to resolve dependency |
| 1131 | problems created by using a Register in the ArgList header. |
| 1132 | |
| 1133 | SunSpider reports no change. |
| 1134 | |
| 1135 | 2008-07-22 Gavin Barraclough <barraclough@apple.com> |
| 1136 | |
| 1137 | Reviewed by Alexey Proskuryakov. |
| 1138 | |
| 1139 | Prevent integer overflow when reallocating storage vector for arrays. |
| 1140 | |
| 1141 | Sunspider reports 1.005x as fast (no change expected). |
| 1142 | |
| 1143 | * kjs/JSArray.cpp: |
| 1144 | |
| 1145 | 2008-07-21 Mark Rowe <mrowe@apple.com> |
| 1146 | |
| 1147 | Reviewed by Sam Weinig. |
| 1148 | |
| 1149 | <rdar://problem/6091287> Revamp the handling of CFBundleShortVersionString to be fixed at the major component of the version number. |
| 1150 | |
| 1151 | * Configurations/Version.xcconfig: |
| 1152 | * Info.plist: |
| 1153 | |
| 1154 | 2008-07-21 Adam Roben <aroben@apple.com> |
| 1155 | |
| 1156 | Add Vector::find |
| 1157 | |
| 1158 | This is a convenience wrapper around std::find. |
| 1159 | |
| 1160 | Reviewed by Anders Carlsson. |
| 1161 | |
| 1162 | * wtf/Vector.h: |
| 1163 | |
| 1164 | 2008-07-19 Oliver Hunt <oliver@apple.com> |
| 1165 | |
| 1166 | Reviewed by Cameron Zwarich. |
| 1167 | |
| 1168 | Bug 20104: Exception in tables/mozilla_expected_failures/bugs/bug92868_1.html includes the equals operator in the quoted expression |
| 1169 | <https://bugs.webkit.org/show_bug.cgi?id=20104> |
| 1170 | |
| 1171 | To make this correct we make the dot and bracket assign nodes emit the information to indicate |
| 1172 | the failure range is the dot/bracket accessor. |
| 1173 | |
| 1174 | * kjs/grammar.y: |
| 1175 | |
| 1176 | 2008-07-18 Steve Falkenburg <sfalken@apple.com> |
| 1177 | |
| 1178 | Windows build fix. |
| 1179 | |
| 1180 | * kjs/JSGlobalObjectFunctions.cpp: |
| 1181 | (KJS::isStrWhiteSpace): |
| 1182 | |
| 1183 | 2008-07-18 Steve Falkenburg <sfalken@apple.com> |
| 1184 | |
| 1185 | Windows build fix. |
| 1186 | |
| 1187 | * kjs/nodes.h: |
| 1188 | (KJS::ThrowableExpressionData::ThrowableExpressionData): |
| 1189 | |
| 1190 | 2008-07-18 Oliver Hunt <oliver@apple.com> |
| 1191 | |
| 1192 | Reviewed by Cameron Zwarich. |
| 1193 | |
| 1194 | Bug 18774: SQUIRRELFISH: print meaningful error messages <https://bugs.webkit.org/show_bug.cgi?id=18774> |
| 1195 | <rdar://problem/5769353> SQUIRRELFISH: JavaScript error messages are missing informative text |
| 1196 | |
| 1197 | Add support for decent error messages in JavaScript. This patch achieves this by providing |
| 1198 | ensuring the common errors and exceptions have messages that provide the text of expression |
| 1199 | that trigger the exception. In addition it attaches a number of properties to the exception |
| 1200 | object detailing where in the source the expression came from. |
| 1201 | |
| 1202 | * JavaScriptCore.exp: |
| 1203 | * VM/CodeBlock.cpp: |
| 1204 | (KJS::CodeBlock::lineNumberForVPC): |
| 1205 | (KJS::CodeBlock::expressionRangeForVPC): |
| 1206 | Function to recover the expression range for an instruction |
| 1207 | that triggered an exception. |
| 1208 | * VM/CodeBlock.h: |
| 1209 | (KJS::ExpressionRangeInfo::): |
| 1210 | (KJS::CodeBlock::CodeBlock): |
| 1211 | * VM/CodeGenerator.cpp: |
| 1212 | (KJS::CodeGenerator::emitCall): |
| 1213 | (KJS::CodeGenerator::emitCallEval): |
| 1214 | Emit call needed to be modified so to place the expression range info internally, |
| 1215 | as the CodeGenerator emits the arguments nodes itself, rather than the various call |
| 1216 | nodes. |
| 1217 | * VM/CodeGenerator.h: |
| 1218 | (KJS::CodeGenerator::emitExpressionInfo): |
| 1219 | Record the expression range info. |
| 1220 | * VM/ExceptionHelpers.cpp: |
| 1221 | (KJS::createErrorMessage): |
| 1222 | (KJS::createInvalidParamError): |
| 1223 | (KJS::createUndefinedVariableError): |
| 1224 | (KJS::createNotAConstructorError): |
| 1225 | (KJS::createNotAFunctionError): |
| 1226 | (KJS::createNotAnObjectErrorStub): |
| 1227 | (KJS::createNotAnObjectError): |
| 1228 | Rewrite all the code for the error messages so that they make use of the newly available |
| 1229 | information. |
| 1230 | * VM/ExceptionHelpers.h: |
| 1231 | * VM/Machine.cpp: |
| 1232 | (KJS::isNotObject): Now needs vPC and codeBlock |
| 1233 | (KJS::Machine::throwException): |
| 1234 | New logic to handle the NotAnObjectErrorStub and to handle the absurd "no default value" edge case |
| 1235 | (KJS::Machine::privateExecute): |
| 1236 | * VM/Machine.h: |
| 1237 | * kjs/DebuggerCallFrame.cpp: |
| 1238 | (KJS::DebuggerCallFrame::evaluate): |
| 1239 | * kjs/Error.cpp: |
| 1240 | (KJS::Error::create): |
| 1241 | * kjs/Error.h: |
| 1242 | * kjs/JSGlobalObjectFunctions.cpp: |
| 1243 | * kjs/JSImmediate.cpp: |
| 1244 | (KJS::JSImmediate::toObject): |
| 1245 | (KJS::JSImmediate::prototype): |
| 1246 | My changes to the JSNotAnObject constructor needed to be handled here. |
| 1247 | * kjs/JSNotAnObject.h: |
| 1248 | (KJS::JSNotAnObjectErrorStub::JSNotAnObjectErrorStub): |
| 1249 | (KJS::JSNotAnObjectErrorStub::isNull): |
| 1250 | (KJS::JSNotAnObjectErrorStub::isNotAnObjectErrorStub): |
| 1251 | Added a JSNotAnObjectErrorStub class to ease the handling of toObject failure exceptions, |
| 1252 | and potentially allow even more detailed error messages in future. |
| 1253 | * kjs/JSObject.h: |
| 1254 | * kjs/Parser.h: |
| 1255 | (KJS::Parser::parse): |
| 1256 | * kjs/SourceRange.h: |
| 1257 | * kjs/grammar.y: |
| 1258 | Large amounts of position propagation. |
| 1259 | * kjs/lexer.cpp: |
| 1260 | (KJS::Lexer::Lexer): |
| 1261 | (KJS::Lexer::shift): |
| 1262 | (KJS::Lexer::lex): |
| 1263 | The lexer needed a few changes to be able to correctly track token character positions. |
| 1264 | * kjs/lexer.h: |
| 1265 | * kjs/nodes.cpp: |
| 1266 | (KJS::ThrowableExpressionData::emitThrowError): |
| 1267 | (KJS::StatementNode::StatementNode): |
| 1268 | (KJS::ResolveNode::emitCode): |
| 1269 | (KJS::BracketAccessorNode::emitCode): |
| 1270 | (KJS::DotAccessorNode::emitCode): |
| 1271 | (KJS::NewExprNode::emitCode): |
| 1272 | (KJS::EvalFunctionCallNode::emitCode): |
| 1273 | (KJS::FunctionCallValueNode::emitCode): |
| 1274 | (KJS::FunctionCallResolveNode::emitCode): |
| 1275 | (KJS::FunctionCallBracketNode::emitCode): |
| 1276 | (KJS::FunctionCallDotNode::emitCode): |
| 1277 | (KJS::PostfixResolveNode::emitCode): |
| 1278 | (KJS::PostfixBracketNode::emitCode): |
| 1279 | (KJS::PostfixDotNode::emitCode): |
| 1280 | (KJS::DeleteResolveNode::emitCode): |
| 1281 | (KJS::DeleteBracketNode::emitCode): |
| 1282 | (KJS::DeleteDotNode::emitCode): |
| 1283 | (KJS::PrefixResolveNode::emitCode): |
| 1284 | (KJS::PrefixBracketNode::emitCode): |
| 1285 | (KJS::PrefixDotNode::emitCode): |
| 1286 | (KJS::ThrowableBinaryOpNode::emitCode): |
| 1287 | (KJS::ReadModifyResolveNode::emitCode): |
| 1288 | (KJS::AssignResolveNode::emitCode): |
| 1289 | (KJS::AssignDotNode::emitCode): |
| 1290 | (KJS::ReadModifyDotNode::emitCode): |
| 1291 | (KJS::AssignBracketNode::emitCode): |
| 1292 | (KJS::ReadModifyBracketNode::emitCode): |
| 1293 | (KJS::ForInNode::ForInNode): |
| 1294 | (KJS::ForInNode::emitCode): |
| 1295 | (KJS::WithNode::emitCode): |
| 1296 | (KJS::LabelNode::emitCode): |
| 1297 | (KJS::ThrowNode::emitCode): |
| 1298 | (KJS::ProgramNode::ProgramNode): |
| 1299 | (KJS::ProgramNode::create): |
| 1300 | (KJS::EvalNode::generateCode): |
| 1301 | (KJS::FunctionBodyNode::create): |
| 1302 | (KJS::FunctionBodyNode::generateCode): |
| 1303 | (KJS::ProgramNode::generateCode): |
| 1304 | All of these methods were handling the position information. |
| 1305 | Constructors and create methods were modified to store the information. |
| 1306 | All the emitCall implementations listed needed to be updated to actually |
| 1307 | record the position information we have so carefully collected. |
| 1308 | * kjs/nodes.h: |
| 1309 | (KJS::ThrowableExpressionData::ThrowableExpressionData): |
| 1310 | (KJS::ThrowableExpressionData::setExceptionSourceRange): |
| 1311 | (KJS::ThrowableExpressionData::divot): |
| 1312 | (KJS::ThrowableExpressionData::startOffset): |
| 1313 | (KJS::ThrowableExpressionData::endOffset): |
| 1314 | (KJS::ThrowableSubExpressionData::ThrowableSubExpressionData): |
| 1315 | (KJS::ThrowableSubExpressionData::setSubexpressionInfo): |
| 1316 | (KJS::ThrowablePrefixedSubExpressionData::ThrowablePrefixedSubExpressionData): |
| 1317 | (KJS::ThrowablePrefixedSubExpressionData::setSubexpressionInfo): |
| 1318 | ThrowableExpressionData is just a uniform mechanism for storing the position |
| 1319 | information. |
| 1320 | (KJS::ResolveNode::): |
| 1321 | (KJS::PrePostResolveNode::): |
| 1322 | (KJS::ThrowableBinaryOpNode::): |
| 1323 | (KJS::WithNode::): |
| 1324 | |
| 1325 | 2008-07-18 Geoffrey Garen <ggaren@apple.com> |
| 1326 | |
| 1327 | Reviewed by Cameron Zwarich. |
| 1328 | |
| 1329 | Three renames: |
| 1330 | |
| 1331 | "CallTypeNative" => "CallTypeHost" |
| 1332 | "code" => "byteCode" |
| 1333 | "generatedCode" => "generatedByteCode" |
| 1334 | |
| 1335 | 2008-07-18 Geoffrey Garen <ggaren@apple.com> |
| 1336 | |
| 1337 | Reviewed by Oliver Hunt. |
| 1338 | |
| 1339 | Optimized <= for immediate number cases. |
| 1340 | |
| 1341 | SunSpider reports no overall change, but a 10% speedup on access-nsieve. |
| 1342 | |
| 1343 | 2008-07-18 Mark Rowe <mrowe@apple.com> |
| 1344 | |
| 1345 | Rubber-stamped by Sam Weinig. |
| 1346 | |
| 1347 | Fix some casts added in a previous build fix to match the style used |
| 1348 | throughout WebKit. |
| 1349 | |
| 1350 | * VM/Machine.cpp: |
| 1351 | (KJS::Machine::initializeCallFrame): |
| 1352 | * VM/Register.h: |
| 1353 | (KJS::Register::Register): |
| 1354 | |
| 1355 | 2008-07-18 Landry Breuil <landry@openbsd.org> |
| 1356 | |
| 1357 | Bug 19975: [OpenBSD] Patches to enable build of WebKit |
| 1358 | |
| 1359 | <https://bugs.webkit.org/show_bug.cgi?id=19975> |
| 1360 | |
| 1361 | Reviewed by David Kilzer. |
| 1362 | |
| 1363 | Support for OpenBSD, mostly threading and libm tweaks. |
| 1364 | |
| 1365 | * kjs/collector.cpp: #include <pthread.h> |
| 1366 | (KJS::currentThreadStackBase): use pthread_stackseg_np() to get stack base |
| 1367 | * kjs/config.h: OpenBSD also provides <pthread_np.h> |
| 1368 | * wtf/MathExtras.h: #include <sys/types.h> and <machine/ieee.h> |
| 1369 | (isfinite), (signbit): as long as we don't have those functions provide fallback implementations |
| 1370 | * wtf/Platform.h: Add support for PLATFORM(OPENBSD) and PLATFORM(SPARC64) macro |
| 1371 | |
| 1372 | 2008-07-17 Geoffrey Garen <ggaren@apple.com> |
| 1373 | |
| 1374 | Reviewed by Oliver Hunt. |
| 1375 | |
| 1376 | Next step toward putting doubles in registers: Store constant pool |
| 1377 | entries as registers, not JSValue*s. |
| 1378 | |
| 1379 | SunSpider reports no change. |
| 1380 | |
| 1381 | 2008-07-17 Geoffrey Garen <ggaren@apple.com> |
| 1382 | |
| 1383 | Reviewed by John Sullivan and Oliver Hunt. |
| 1384 | |
| 1385 | A tiny bit of tidying in function call register allocation. |
| 1386 | |
| 1387 | This patch saves one register when invoking a function expression and/or |
| 1388 | a new expression that is stored in a temporary. |
| 1389 | |
| 1390 | Since it's just one register, I can't make a testcase for it. |
| 1391 | |
| 1392 | * VM/CodeGenerator.cpp: |
| 1393 | (KJS::CodeGenerator::emitCall): No need to ref the function we're calling |
| 1394 | or its base. We'd like the call frame to overlap with them, if possible. |
| 1395 | op_call will read the function and its base before writing the call frame, |
| 1396 | so this is safe. |
| 1397 | |
| 1398 | * kjs/nodes.cpp: |
| 1399 | (KJS::NewExprNode::emitCode): No need to ref the function we're new-ing, |
| 1400 | for the same reasons stated above. |
| 1401 | |
| 1402 | (KJS::FunctionCallValueNode::emitCode): ditto |
| 1403 | |
| 1404 | 2008-07-17 Steve Falkenburg <sfalken@apple.com> |
| 1405 | |
| 1406 | Build fix. |
| 1407 | |
| 1408 | * kjs/InternalFunction.cpp: |
| 1409 | |
| 1410 | 2008-07-17 Sam Weinig <sam@webkit.org> |
| 1411 | |
| 1412 | Roll out r35199 as it is causing failures on the PPC build. |
| 1413 | |
| 1414 | 2008-07-17 Geoffrey Garen <ggaren@apple.com> |
| 1415 | |
| 1416 | Reviewed by David Kilzer. |
| 1417 | |
| 1418 | Fixed https://bugs.webkit.org/show_bug.cgi?id=20067 |
| 1419 | Support function.name (Firefox extension) |
| 1420 | |
| 1421 | Pretty straight-forward. |
| 1422 | |
| 1423 | 2008-07-17 Geoffrey Garen <ggaren@apple.com> |
| 1424 | |
| 1425 | Reviewed by Oliver Hunt. |
| 1426 | |
| 1427 | Fixed <rdar://problem/6081636> Functions calls use more temporary |
| 1428 | registers than necessary |
| 1429 | |
| 1430 | Holding a reference to the last statement result register caused each |
| 1431 | successive statement to output its result to an even higher register. |
| 1432 | |
| 1433 | Happily, statements don't actually need to return a result register |
| 1434 | at all. I hope to make this clearer in a future cleanup patch, |
| 1435 | but this change will fix the major bug for now. |
| 1436 | |
| 1437 | * kjs/nodes.cpp: |
| 1438 | (KJS::statementListEmitCode): |
| 1439 | |
| 1440 | 2008-07-17 Gavin Barraclough <barraclough@apple.com> |
| 1441 | |
| 1442 | Reviewed by Sam Weinig. |
| 1443 | |
| 1444 | Merge pre&post dot nodes to simplify the parse tree. |
| 1445 | Sunspider results show 0.6% progression (no performance change expected). |
| 1446 | |
| 1447 | * kjs/grammar.y: |
| 1448 | * kjs/nodes.cpp: |
| 1449 | * kjs/nodes.h: |
| 1450 | * kjs/nodes2string.cpp: |
| 1451 | |
| 1452 | 2008-07-17 Gavin Barraclough <barraclough@apple.com> |
| 1453 | |
| 1454 | Reviewed by Cameron Zwarich. |
| 1455 | |
| 1456 | Merge pre&post resolve nodes to simplify the parse tree. |
| 1457 | Sunspider results show no performance change. |
| 1458 | |
| 1459 | * kjs/grammar.y: |
| 1460 | * kjs/nodes.cpp: |
| 1461 | * kjs/nodes.h: |
| 1462 | * kjs/nodes2string.cpp: |
| 1463 | |
| 1464 | 2008-07-17 Gavin Barraclough <barraclough@apple.com> |
| 1465 | |
| 1466 | Reviewed by Cameron Zwarich. |
| 1467 | |
| 1468 | Merge logical nodes to simplify the parse tree. |
| 1469 | Sunspider results show 0.6% progression (no performance change expected). |
| 1470 | |
| 1471 | * kjs/grammar.y: |
| 1472 | * kjs/nodes.cpp: |
| 1473 | * kjs/nodes.h: |
| 1474 | * kjs/nodes2string.cpp: |
| 1475 | |
| 1476 | 2008-07-17 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 1477 | |
| 1478 | Reviewed by Simon. |
| 1479 | |
| 1480 | Fix MinGW build (broken in r35198) and simplify getLocalTime(). |
| 1481 | |
| 1482 | * kjs/DateMath.cpp: |
| 1483 | (KJS::getLocalTime): |
| 1484 | |
| 1485 | 2008-07-17 Gavin Barraclough <barraclough@apple.com> |
| 1486 | |
| 1487 | Reviewed by Sam Weinig. |
| 1488 | |
| 1489 | Merge pre&post bracket nodes to simplify the parse tree. |
| 1490 | Sunspider results show no performance change. |
| 1491 | |
| 1492 | * kjs/grammar.y: |
| 1493 | * kjs/nodes.cpp: |
| 1494 | * kjs/nodes.h: |
| 1495 | * kjs/nodes2string.cpp: |
| 1496 | |
| 1497 | 2008-07-17 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 1498 | |
| 1499 | Reviewed by Simon. |
| 1500 | |
| 1501 | Fix the 32-bit gcc builds, conversion from "long int" to Register is |
| 1502 | ambiguous. Explicitly choose the intptr_t constructor. |
| 1503 | |
| 1504 | * VM/Machine.cpp: |
| 1505 | (KJS::Machine::initializeCallFrame): |
| 1506 | * VM/Register.h: |
| 1507 | (KJS::Register::Register): |
| 1508 | |
| 1509 | 2008-07-16 Mark Rowe <mrowe@apple.com> |
| 1510 | |
| 1511 | Rubber-stamped by Geoff Garen. |
| 1512 | |
| 1513 | Fix JavaScript in 64-bit by using a pointer-sized integer |
| 1514 | type in the Register union. Also includes a rename of |
| 1515 | the intType constant to IntType. |
| 1516 | |
| 1517 | * VM/Machine.cpp: |
| 1518 | (KJS::Machine::initializeCallFrame): |
| 1519 | * VM/Register.h: |
| 1520 | (KJS::Register::): |
| 1521 | (KJS::Register::Register): |
| 1522 | |
| 1523 | 2008-07-17 Geoffrey Garen <ggaren@apple.com> |
| 1524 | |
| 1525 | Reviewed by Oliver Hunt. |
| 1526 | |
| 1527 | First step toward putting doubles in registers: Turned Register into a |
| 1528 | proper abstraction layer. It is no longer possible to cast a Register |
| 1529 | to a JSValue*, or a Register& to a JSValue*&, or to access the union |
| 1530 | inside a Register directly. |
| 1531 | |
| 1532 | SunSpider reports no change. |
| 1533 | |
| 1534 | In support of this change, I had to make the following mechanical changes |
| 1535 | in a lot of places: |
| 1536 | |
| 1537 | 1. Clients now use explicit accessors to read data out of Registers, and |
| 1538 | implicit copy constructors to write data into registers. |
| 1539 | |
| 1540 | So, assignment that used to look like |
| 1541 | |
| 1542 | x.u.jsValue = y; |
| 1543 | |
| 1544 | now looks like |
| 1545 | |
| 1546 | x = y; |
| 1547 | |
| 1548 | And access that used to look like |
| 1549 | |
| 1550 | x = y.u.jsValue; |
| 1551 | |
| 1552 | now looks like |
| 1553 | |
| 1554 | x = y.jsValue(); |
| 1555 | |
| 1556 | 2. I made generic flow control specific in opcodes that made their flow |
| 1557 | control generic by treating a Register& as a JSValue*&. This had the |
| 1558 | added benefit of removing some exception checking branches from immediate |
| 1559 | number code. |
| 1560 | |
| 1561 | 3. I beefed up PropertySlot to support storing a Register* in a property |
| 1562 | slot. For now, only JSVariableObject's symbolTableGet and symbolTablePut |
| 1563 | use this functionality, but I expect more clients to use it in the future. |
| 1564 | |
| 1565 | 4. I changed ArgList to be a buffer of Registers, not JSValue*'s, and I |
| 1566 | changed ArgList iterator clients to iterate Registers, not JSValue*'s. |
| 1567 | |
| 1568 | 2008-07-16 Ada Chan <adachan@apple.com> |
| 1569 | |
| 1570 | Fixed build. |
| 1571 | |
| 1572 | * kjs/JSGlobalObject.cpp: |
| 1573 | |
| 1574 | 2008-07-16 Kevin McCullough <kmccullough@apple.com> |
| 1575 | |
| 1576 | Reviewed by Sam and Geoff. |
| 1577 | |
| 1578 | <rdar://problem/5958840> Navigating to another page while profiler is |
| 1579 | attached results in slow JavaScript for all time. |
| 1580 | |
| 1581 | - The UNLIKELY keeps this from being a sunspider performance regression. |
| 1582 | |
| 1583 | * kjs/JSGlobalObject.cpp: |
| 1584 | (KJS::JSGlobalObject::~JSGlobalObject): Stop the profiler associated |
| 1585 | with this exec state. |
| 1586 | |
| 1587 | 2008-07-16 Sam Weinig <sam@webkit.org> |
| 1588 | |
| 1589 | Reviewed by Steve Falkenburg. |
| 1590 | |
| 1591 | Replace adopting UString constructor in favor of explicit |
| 1592 | static adopt method. |
| 1593 | |
| 1594 | * API/JSStringRefCF.cpp: |
| 1595 | (JSStringCreateWithCFString): |
| 1596 | * kjs/StringConstructor.cpp: |
| 1597 | (KJS::stringFromCharCode): |
| 1598 | * kjs/StringPrototype.cpp: |
| 1599 | (KJS::stringProtoFuncToLowerCase): |
| 1600 | (KJS::stringProtoFuncToUpperCase): |
| 1601 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 1602 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 1603 | * kjs/ustring.cpp: |
| 1604 | (KJS::UString::adopt): |
| 1605 | * kjs/ustring.h: |
| 1606 | (KJS::UString::UString): |
| 1607 | (KJS::UString::~UString): |
| 1608 | |
| 1609 | 2008-07-16 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 1610 | |
| 1611 | Reviewed by Simon. |
| 1612 | |
| 1613 | http://trolltech.com/developer/task-tracker/index_html?method=entry&id=216179 |
| 1614 | Fix potential crash (on Qt for Windows port) when performing JavaScript date |
| 1615 | conversion. |
| 1616 | |
| 1617 | * kjs/DateMath.cpp: |
| 1618 | (KJS::getLocalTime): For the Qt port, prefer to use Windows code, i.e. |
| 1619 | localtime_s() instead of localtime() since the latter might crash (on Windows) |
| 1620 | given a non-sensible, e.g. NaN, argument. |
| 1621 | |
| 1622 | 2008-07-16 Alexey Proskuryakov <ap@webkit.org> |
| 1623 | |
| 1624 | Reviewed by Anders and Geoff. |
| 1625 | |
| 1626 | https://bugs.webkit.org/show_bug.cgi?id=20023 |
| 1627 | Failed assertion in PropertyNameArray.cpp |
| 1628 | |
| 1629 | This is already tested by testapi. |
| 1630 | |
| 1631 | * API/JSObjectRef.cpp: (JSPropertyNameAccumulatorAddName): Add the string to identifier |
| 1632 | table to appease PropertyNameArray. |
| 1633 | |
| 1634 | 2008-07-16 Alexey Proskuryakov <ap@webkit.org> |
| 1635 | |
| 1636 | Reviewed by Geoff. |
| 1637 | |
| 1638 | Dereference identifiers when deleting a hash table (fixes leaks with private JSGlobalData |
| 1639 | objects). |
| 1640 | |
| 1641 | * kjs/JSGlobalData.cpp: (KJS::JSGlobalData::~JSGlobalData): |
| 1642 | * kjs/lookup.cpp: (KJS::HashTable::deleteTable): |
| 1643 | * kjs/lookup.h: |
| 1644 | * kjs/lexer.cpp: (KJS::Lexer::~Lexer) |
| 1645 | HashTable cannot have a destructor, because check-for-global-initializers complains about |
| 1646 | having a global constructor then. |
| 1647 | |
| 1648 | 2008-07-16 Alexey Proskuryakov <ap@webkit.org> |
| 1649 | |
| 1650 | Reviewed by Geoff. |
| 1651 | |
| 1652 | Check pthread_key_create return value. |
| 1653 | |
| 1654 | This check was helpful when debugging a crash in run-webkit-tests --threaded that happened |
| 1655 | because JSGlobalData objects were not deleted, and we were running out of pthread keys soon. |
| 1656 | It also looks useful for production builds. |
| 1657 | |
| 1658 | * wtf/ThreadSpecific.h: (WTF::::ThreadSpecific): |
| 1659 | |
| 1660 | 2008-07-15 Kevin McCullough <kmccullough@apple.com> |
| 1661 | |
| 1662 | Reviewed by Geoff. |
| 1663 | |
| 1664 | Rename pageGroupIdentifier to profileGroup to keep mention of a |
| 1665 | pageGroup out of JavaScriptCore. |
| 1666 | |
| 1667 | * kjs/JSGlobalObject.cpp: |
| 1668 | (KJS::JSGlobalObject::init): |
| 1669 | * kjs/JSGlobalObject.h: |
| 1670 | (KJS::JSGlobalObject::setProfileGroup): |
| 1671 | (KJS::JSGlobalObject::profileGroup): |
| 1672 | * profiler/ProfileGenerator.cpp: |
| 1673 | (KJS::ProfileGenerator::create): |
| 1674 | (KJS::ProfileGenerator::ProfileGenerator): |
| 1675 | * profiler/ProfileGenerator.h: |
| 1676 | (KJS::ProfileGenerator::profileGroup): |
| 1677 | * profiler/Profiler.cpp: |
| 1678 | (KJS::Profiler::startProfiling): |
| 1679 | (KJS::dispatchFunctionToProfiles): |
| 1680 | (KJS::Profiler::willExecute): |
| 1681 | (KJS::Profiler::didExecute): |
| 1682 | |
| 1683 | 2008-07-14 Mark Rowe <mrowe@apple.com> |
| 1684 | |
| 1685 | Reviewed by Sam Weinig. |
| 1686 | |
| 1687 | Fix https://bugs.webkit.org/show_bug.cgi?id=20037 |
| 1688 | Bug 20037: GCC 4.2 build broken due to strict aliasing violation. |
| 1689 | |
| 1690 | * kjs/ustring.cpp: |
| 1691 | (KJS::UString::Rep::computeHash): Add a version of computeHash that takes a char* and explicit length. |
| 1692 | * kjs/ustring.h: |
| 1693 | * profiler/CallIdentifier.h: |
| 1694 | (WTF::): Use new version of computeHash that takes a char* and explicit length to avoid unsafe aliasing. |
| 1695 | |
| 1696 | 2008-07-14 David Hyatt <hyatt@apple.com> |
| 1697 | |
| 1698 | Fix a crashing bug in ListHashSet's -- operator. Make sure that end() can be -- by special-casing the null |
| 1699 | position. |
| 1700 | |
| 1701 | Reviewed by Maciej |
| 1702 | |
| 1703 | * wtf/ListHashSet.h: |
| 1704 | (WTF::ListHashSetConstIterator::operator--): |
| 1705 | |
| 1706 | 2008-07-14 David Hyatt <hyatt@apple.com> |
| 1707 | |
| 1708 | Buidl fix. Make sure the second insertBefore method returns a value. |
| 1709 | |
| 1710 | * wtf/ListHashSet.h: |
| 1711 | (WTF::::insertBefore): |
| 1712 | |
| 1713 | 2008-07-14 Adam Roben <aroben@apple.com> |
| 1714 | |
| 1715 | Windows build fix |
| 1716 | |
| 1717 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: Added include/pthreads to the |
| 1718 | include path. |
| 1719 | |
| 1720 | 2008-07-14 Alexey Proskuryakov <ap@webkit.org> |
| 1721 | |
| 1722 | Reviewed by Kevin McCullough. |
| 1723 | |
| 1724 | Make JSGlobalData refcounted in preparation to adding a way to create contexts that share |
| 1725 | global data. |
| 1726 | |
| 1727 | * JavaScriptCore.exp: |
| 1728 | * kjs/JSGlobalData.cpp: |
| 1729 | (KJS::JSGlobalData::create): |
| 1730 | * kjs/JSGlobalData.h: |
| 1731 | Made contructor private, and added a static create() method. Made the class inherit from |
| 1732 | RefCounted. |
| 1733 | |
| 1734 | * kjs/JSGlobalObject.h: |
| 1735 | (KJS::JSGlobalObject::globalData): |
| 1736 | JSGlobalData is now owned by JSGlobalObject (except for the shared one, and the common |
| 1737 | WebCore one, which are never deleted). |
| 1738 | |
| 1739 | * kjs/Shell.cpp: (main): Create JSGlobalData with create() method. |
| 1740 | |
| 1741 | 2008-07-14 Simon Hausmann <hausmann@webkit.org> |
| 1742 | |
| 1743 | Fix the single-threaded build. |
| 1744 | |
| 1745 | * kjs/JSLock.cpp: Removed undeclared registerThread() function. |
| 1746 | * kjs/collector.cpp: |
| 1747 | (KJS::Heap::registerThread): Added dummy implementation. |
| 1748 | |
| 1749 | 2008-07-14 Alexey Proskuryakov <ap@webkit.org> |
| 1750 | |
| 1751 | Reviewed by Geoff Garen. |
| 1752 | |
| 1753 | Eliminate per-thread JavaScript global data instance support and make arbitrary |
| 1754 | global data/global object combinations possible. |
| 1755 | |
| 1756 | * kjs/collector.cpp: |
| 1757 | (KJS::Heap::Heap): Store a JSGlobalData pointer instead of multiple pointers to its members. |
| 1758 | This allows for going from any JS object to its associated global data, currently used in |
| 1759 | JSGlobalObject constructor to initialize its JSGlobalData pointer. |
| 1760 | (KJS::Heap::registerThread): Changed thread registration data to be per-heap. Previously, |
| 1761 | only the shared heap could be used from multiple threads, so it was the only one that needed |
| 1762 | thread registration, but now this can happen to any heap. |
| 1763 | (KJS::Heap::unregisterThread): Ditto. |
| 1764 | (KJS::Heap::markStackObjectsConservatively): Adapt for the above changes. |
| 1765 | (KJS::Heap::setGCProtectNeedsLocking): Ditto. |
| 1766 | (KJS::Heap::protect): Ditto. |
| 1767 | (KJS::Heap::unprotect): Ditto. |
| 1768 | (KJS::Heap::collect): Ditto. |
| 1769 | (KJS::Heap::globalObjectCount): Use global object list associated with the current heap, |
| 1770 | not the late per-thread one. |
| 1771 | (KJS::Heap::protectedGlobalObjectCount): Ditto. |
| 1772 | |
| 1773 | * kjs/collector.h: |
| 1774 | (KJS::Heap::ThreadRegistrar): Added a helper object that unregisters a thread when it is |
| 1775 | destroyed. |
| 1776 | |
| 1777 | * kjs/JSLock.cpp: |
| 1778 | (KJS::JSLock::JSLock): |
| 1779 | * kjs/JSLock.h: |
| 1780 | (KJS::JSLock::JSLock): |
| 1781 | Don't use JSLock to implicitly register threads. I've added registerThread() calls to most |
| 1782 | places that use JSLock - we cannot guarantee absolute safety unless we always mark all |
| 1783 | threads in the process, but these implicit registration calls should cover reasonable usage |
| 1784 | scenarios, I hope. |
| 1785 | |
| 1786 | * API/JSBase.cpp: |
| 1787 | (JSEvaluateScript): Explicitly register the current thread. |
| 1788 | (JSCheckScriptSyntax): Explicitly register the current thread. |
| 1789 | (JSGarbageCollect): Changed to use the passed in context. Unfortunately, this creates a race |
| 1790 | condition for clients that pass an already released context to JSGarbageCollect - but it is |
| 1791 | unlikely to create real life problems. |
| 1792 | To maintain compatibility, the shared heap is collected if NULL is passed. |
| 1793 | |
| 1794 | * API/JSContextRef.cpp: |
| 1795 | (JSGlobalContextCreate): Use a new syntax for JSGlobalObject allocation. |
| 1796 | (JSGlobalContextRetain): Register the thread. |
| 1797 | (JSContextGetGlobalObject): Register the thread. |
| 1798 | |
| 1799 | * API/JSObjectRef.cpp: |
| 1800 | (JSObjectMake): |
| 1801 | (JSObjectMakeFunctionWithCallback): |
| 1802 | (JSObjectMakeConstructor): |
| 1803 | (JSObjectMakeFunction): |
| 1804 | (JSObjectHasProperty): |
| 1805 | (JSObjectGetProperty): |
| 1806 | (JSObjectSetProperty): |
| 1807 | (JSObjectGetPropertyAtIndex): |
| 1808 | (JSObjectSetPropertyAtIndex): |
| 1809 | (JSObjectDeleteProperty): |
| 1810 | (JSObjectCallAsFunction): |
| 1811 | (JSObjectCallAsConstructor): |
| 1812 | (JSObjectCopyPropertyNames): |
| 1813 | (JSPropertyNameAccumulatorAddName): |
| 1814 | * API/JSValueRef.cpp: |
| 1815 | (JSValueIsEqual): |
| 1816 | (JSValueIsInstanceOfConstructor): |
| 1817 | (JSValueMakeNumber): |
| 1818 | (JSValueMakeString): |
| 1819 | (JSValueToNumber): |
| 1820 | (JSValueToStringCopy): |
| 1821 | (JSValueToObject): |
| 1822 | (JSValueProtect): |
| 1823 | (JSValueUnprotect): |
| 1824 | Register the thread. |
| 1825 | |
| 1826 | * API/JSStringRef.cpp: (JSStringRelease): Changed a comment to not mention per-thread contexts. |
| 1827 | |
| 1828 | * API/JSStringRefCF.cpp: Removed an unnecessary include of JSLock.h. |
| 1829 | |
| 1830 | * JavaScriptCore.exp: Export JSGlobalData constructor/destructor, now that anyone can have |
| 1831 | their own instances. Adapt to other changes, too. |
| 1832 | |
| 1833 | * JavaScriptCore.xcodeproj/project.pbxproj: Made ThreadSpecific.h private, as it is now |
| 1834 | included by collector.h and is thus needed in other projects. |
| 1835 | |
| 1836 | * kjs/InitializeThreading.cpp: (KJS::initializeThreadingOnce): Don't initialize per-thread |
| 1837 | global data, as it no longer exists. |
| 1838 | |
| 1839 | * kjs/JSGlobalData.cpp: |
| 1840 | (KJS::JSGlobalData::JSGlobalData): |
| 1841 | (KJS::JSGlobalData::~JSGlobalData): |
| 1842 | * kjs/JSGlobalData.h: |
| 1843 | Removed support for per-thread instance. Made constructor and destructor public. |
| 1844 | |
| 1845 | * kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::init): Get to now arbitrary JSGlobalData |
| 1846 | via the heap. |
| 1847 | (KJS::JSGlobalObject::operator new): Changed ot take JSGlobalDatra pointer. |
| 1848 | * kjs/JSGlobalObject.h: |
| 1849 | |
| 1850 | * kjs/Shell.cpp: |
| 1851 | (main): |
| 1852 | (jscmain): |
| 1853 | Changed to maintain a custom JSGlobalData pointer instead of a per-thread one. |
| 1854 | |
| 1855 | 2008-07-13 Ada Chan <adachan@apple.com> |
| 1856 | |
| 1857 | Windows build fix: Add wtf/RefCountedLeakCounter to the project. |
| 1858 | |
| 1859 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 1860 | |
| 1861 | 2008-07-12 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 1862 | |
| 1863 | Gtk, Qt and Wx build fix: Add wtf/RefCountedLeakCounter in the |
| 1864 | build scripts |
| 1865 | |
| 1866 | * GNUmakefile.am: |
| 1867 | * JavaScriptCore.pri: |
| 1868 | * JavaScriptCoreSources.bkl: |
| 1869 | |
| 1870 | 2008-07-11 Stephanie Lewis <slewis@apple.com> |
| 1871 | |
| 1872 | Reviewed by Darin Adler and Oliver Hunt. |
| 1873 | |
| 1874 | Refactor RefCounting Leak counting code into a common class. |
| 1875 | |
| 1876 | In order to export the symbols I needed to put the debug defines inside the function names |
| 1877 | |
| 1878 | Before we had a separate channel for each Logging each Leak type. Since the leak channels were only used in one location, and only at quit for simplicity I combined them all into one leak channel. |
| 1879 | |
| 1880 | * JavaScriptCore.exp: |
| 1881 | * JavaScriptCore.xcodeproj/project.pbxproj: add new class |
| 1882 | * kjs/nodes.cpp: remove old leak counting code |
| 1883 | * wtf/RefCountedLeakCounter.cpp: Added. create a common leak counting class |
| 1884 | * wtf/RefCountedLeakCounter.h: Added. |
| 1885 | |
| 1886 | 2008-07-11 David Hyatt <hyatt@apple.com> |
| 1887 | |
| 1888 | Add an insertBefore method to ListHashSet to allow for insertions in the middle of the list (rather than just |
| 1889 | at the end). |
| 1890 | |
| 1891 | Reviewed by Anders |
| 1892 | |
| 1893 | * wtf/ListHashSet.h: |
| 1894 | (WTF::::insertBefore): |
| 1895 | (WTF::::insertNodeBefore): |
| 1896 | |
| 1897 | 2008-07-11 Sam Weinig <sam@webkit.org> |
| 1898 | |
| 1899 | Rubber-stamped by Darin Adler. |
| 1900 | |
| 1901 | Move call function to CallData.cpp and construct to ConstructData.cpp. |
| 1902 | |
| 1903 | * GNUmakefile.am: |
| 1904 | * JavaScriptCore.pri: |
| 1905 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 1906 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 1907 | * JavaScriptCoreSources.bkl: |
| 1908 | * kjs/AllInOneFile.cpp: |
| 1909 | * kjs/CallData.cpp: Copied from kjs/JSValue.cpp. |
| 1910 | * kjs/ConstructData.cpp: Copied from kjs/JSValue.cpp. |
| 1911 | * kjs/JSValue.cpp: |
| 1912 | |
| 1913 | 2008-07-10 Mark Rowe <mrowe@apple.com> |
| 1914 | |
| 1915 | Reviewed by Sam Weinig. |
| 1916 | |
| 1917 | Define WEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST when building WebKit to ensure that no symbols end up with the weak_import attribute. |
| 1918 | |
| 1919 | * Configurations/Base.xcconfig: |
| 1920 | |
| 1921 | 2008-07-10 Mark Rowe <mrowe@apple.com> |
| 1922 | |
| 1923 | Reviewed by Sam Weinig. |
| 1924 | |
| 1925 | Fix the Tiger build by omitting annotations from methods declared in categories when using old versions of GCC. |
| 1926 | |
| 1927 | * API/WebKitAvailability.h: |
| 1928 | |
| 1929 | 2008-07-10 Kevin McCullough <kmccullough@apple.com> |
| 1930 | |
| 1931 | Reviewed by Darin. |
| 1932 | |
| 1933 | -Minor cleanup. Renamed callTree() to head() and no longer use m_head |
| 1934 | directly but instead keep it private and access via a method(). |
| 1935 | |
| 1936 | * profiler/HeavyProfile.cpp: |
| 1937 | (KJS::HeavyProfile::HeavyProfile): |
| 1938 | (KJS::HeavyProfile::generateHeavyStructure): |
| 1939 | (KJS::HeavyProfile::addNode): |
| 1940 | * profiler/Profile.h: |
| 1941 | (KJS::Profile::head): |
| 1942 | * profiler/ProfileGenerator.cpp: |
| 1943 | (KJS::ProfileGenerator::ProfileGenerator): |
| 1944 | |
| 1945 | 2008-07-10 Alexey Proskuryakov <ap@webkit.org> |
| 1946 | |
| 1947 | Reviewed by Mark Rowe. |
| 1948 | |
| 1949 | Eliminate CollectorHeapIntrospector. |
| 1950 | |
| 1951 | CollectorHeapIntrospector was added primarily in the hopes to improve leaks tool output, |
| 1952 | a result that it didn't deliver. Also, it helped by labeling JSC heap regions as reported by |
| 1953 | vmmap tool, but at the same time, it made them mislabeled as malloc'd ones - the correct |
| 1954 | way to label mapped regions is to use a VM tag. |
| 1955 | |
| 1956 | So, it makes more sense to remove it completely than to make it work with multiple heaps. |
| 1957 | |
| 1958 | * JavaScriptCore.exp: |
| 1959 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 1960 | * kjs/AllInOneFile.cpp: |
| 1961 | * kjs/InitializeThreading.cpp: |
| 1962 | (KJS::initializeThreading): |
| 1963 | * kjs/collector.cpp: |
| 1964 | * kjs/collector.h: |
| 1965 | * kjs/CollectorHeapIntrospector.cpp: Removed. |
| 1966 | * kjs/CollectorHeapIntrospector.h: Removed. |
| 1967 | |
| 1968 | 2008-07-09 Kevin McCullough <kmccullough@apple.com> |
| 1969 | |
| 1970 | Reviewed by Darin. |
| 1971 | |
| 1972 | <rdar://problem/5951532> JSProfiler: Implement heavy (or bottom-up) |
| 1973 | view (19228) |
| 1974 | - Implemented the time and call count portionof heavy. Now all that we |
| 1975 | need is some UI. |
| 1976 | |
| 1977 | * profiler/CallIdentifier.h: Removed an unused constructor. |
| 1978 | * profiler/HeavyProfile.cpp: |
| 1979 | (KJS::HeavyProfile::HeavyProfile): Set the initial time of the head |
| 1980 | node so that percentages work correctly. |
| 1981 | (KJS::HeavyProfile::mergeProfiles): Sum the times and call count of |
| 1982 | nodes being merged. |
| 1983 | * profiler/ProfileNode.cpp: Set the intital values of time and call |
| 1984 | count when copying ProfileNodes. |
| 1985 | (KJS::ProfileNode::ProfileNode): |
| 1986 | |
| 1987 | 2008-07-10 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 1988 | |
| 1989 | Gtk build fix. |
| 1990 | |
| 1991 | * GNUmakefile.am: Add HeavyProfile.cpp |
| 1992 | |
| 1993 | 2008-07-09 Mark Rowe <mrowe@apple.com> |
| 1994 | |
| 1995 | Reviewed by Geoff Garen. |
| 1996 | |
| 1997 | Don't warn about deprecated functions in production builds. |
| 1998 | |
| 1999 | * Configurations/Base.xcconfig: |
| 2000 | * Configurations/DebugRelease.xcconfig: |
| 2001 | |
| 2002 | 2008-07-09 Darin Adler <darin@apple.com> |
| 2003 | |
| 2004 | * JavaScriptCore.pri: Fix Qt build by adding HeavyProfile.cpp. |
| 2005 | |
| 2006 | 2008-07-09 Kevin Ollivier <kevino@theolliviers.com> |
| 2007 | |
| 2008 | wx biuld fix. Add HeavyProfile.cpp to build files. |
| 2009 | |
| 2010 | * JavaScriptCoreSources.bkl: |
| 2011 | |
| 2012 | 2008-07-09 Kevin McCullough <kmccullough@apple.com> |
| 2013 | |
| 2014 | - Windows build fix. |
| 2015 | |
| 2016 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2017 | |
| 2018 | 2008-07-09 Kevin McCullough <kmccullough@apple.com> |
| 2019 | |
| 2020 | - Build fix. |
| 2021 | |
| 2022 | * profiler/HeavyProfile.cpp: |
| 2023 | (KJS::HeavyProfile::mergeProfiles): |
| 2024 | |
| 2025 | 2008-07-09 Kevin McCullough <kmccullough@apple.com> |
| 2026 | |
| 2027 | Reviewed by Geoff and Adam. |
| 2028 | |
| 2029 | <rdar://problem/5951532> JSProfiler: Implement Bottom-Up view (19228) |
| 2030 | - This is the plumbing for bottom-up, but does not include calculating |
| 2031 | time, mostly because I'm still undclear about what the end result should |
| 2032 | look like. |
| 2033 | - This, obviously, does not include the UI to expose this in the |
| 2034 | inspector yet. |
| 2035 | |
| 2036 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2037 | * profiler/CallIdentifier.h: |
| 2038 | (KJS::CallIdentifier::CallIdentifier): |
| 2039 | (WTF::): Added HashTraits for CallIdentifiers to be used by a HashMap. |
| 2040 | * profiler/HeavyProfile.cpp: Added. |
| 2041 | (KJS::HeavyProfile::HeavyProfile): |
| 2042 | (KJS::HeavyProfile::generateHeavyStructure): |
| 2043 | (KJS::HeavyProfile::addNode): |
| 2044 | (KJS::HeavyProfile::mergeProfiles): |
| 2045 | (KJS::HeavyProfile::addAncestorsAsChildren): |
| 2046 | * profiler/HeavyProfile.h: Added. |
| 2047 | (KJS::HeavyProfile::create): |
| 2048 | (KJS::HeavyProfile::heavyProfile): |
| 2049 | (KJS::HeavyProfile::treeProfile): |
| 2050 | * profiler/Profile.cpp: Removed old commented out includes. |
| 2051 | * profiler/Profile.h: The m_head is needed by the HeavyProfile so it |
| 2052 | is now protected as opposed to private. |
| 2053 | * profiler/ProfileNode.cpp: |
| 2054 | (KJS::ProfileNode::ProfileNode): Created a constructor to copy |
| 2055 | ProfileNodes. |
| 2056 | (KJS::ProfileNode::findChild): Added a null check to make HeavyProfile |
| 2057 | children finding easier and avoid a potential crasher. |
| 2058 | * profiler/ProfileNode.h: Mostly moved things around but also added some |
| 2059 | functionality needed by HeavyProfile. |
| 2060 | (KJS::ProfileNode::create): |
| 2061 | (KJS::ProfileNode::functionName): |
| 2062 | (KJS::ProfileNode::url): |
| 2063 | (KJS::ProfileNode::lineNumber): |
| 2064 | (KJS::ProfileNode::head): |
| 2065 | (KJS::ProfileNode::setHead): |
| 2066 | (KJS::ProfileNode::setNextSibling): |
| 2067 | (KJS::ProfileNode::actualTotalTime): |
| 2068 | (KJS::ProfileNode::actualSelfTime): |
| 2069 | * profiler/TreeProfile.cpp: Implemented the ability to get a |
| 2070 | HeavyProfile. |
| 2071 | (KJS::TreeProfile::heavyProfile): |
| 2072 | * profiler/TreeProfile.h: |
| 2073 | |
| 2074 | 2008-07-08 Geoffrey Garen <ggaren@apple.com> |
| 2075 | |
| 2076 | Reviewed by Oliver Hunt. |
| 2077 | |
| 2078 | Added support for checking if an object has custom properties in its |
| 2079 | property map. WebCore uses this to optimize marking DOM wrappers. |
| 2080 | |
| 2081 | 2008-07-08 Simon Hausmann <hausmann@webkit.org> |
| 2082 | |
| 2083 | Prospective Gtk/Wx build fixes, add ProfileGenerator.cpp to the build. |
| 2084 | |
| 2085 | * GNUmakefile.am: |
| 2086 | * JavaScriptCoreSources.bkl: |
| 2087 | |
| 2088 | 2008-07-08 Simon Hausmann <hausmann@webkit.org> |
| 2089 | |
| 2090 | Fix the Qt build, add ProfileGenerator.cpp to the build. |
| 2091 | |
| 2092 | * JavaScriptCore.pri: |
| 2093 | |
| 2094 | 2008-07-07 David Kilzer <ddkilzer@apple.com> |
| 2095 | |
| 2096 | releaseFastMallocFreeMemory() should always be defined |
| 2097 | |
| 2098 | Reviewed by Darin. |
| 2099 | |
| 2100 | * JavaScriptCore.exp: Changed to export C++ binding for |
| 2101 | WTF::releaseFastMallocFreeMemory() instead of C binding for |
| 2102 | releaseFastMallocFreeMemory(). |
| 2103 | * wtf/FastMalloc.cpp: Moved definitions of |
| 2104 | releaseFastMallocFreeMemory() to be in the WTF namespace |
| 2105 | regardless whether FORCE_SYSTEM_MALLOC is defined. |
| 2106 | * wtf/FastMalloc.h: Moved releaseFastMallocFreeMemory() from |
| 2107 | extern "C" binding to WTF::releaseFastMallocFreeMemory(). |
| 2108 | |
| 2109 | 2008-07-07 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 2110 | |
| 2111 | Reviewed by Geoff. |
| 2112 | |
| 2113 | Bug 19926: URL causes crash within a minute |
| 2114 | <https://bugs.webkit.org/show_bug.cgi?id=19926> |
| 2115 | |
| 2116 | Add a check that lastGlobalObject is non-null in Machine::execute() |
| 2117 | before copying its globals to the current register file. |
| 2118 | |
| 2119 | In theory, it is possible to make a test case for this, but it will |
| 2120 | take a while to get it right. |
| 2121 | |
| 2122 | * VM/Machine.cpp: |
| 2123 | (KJS::Machine::execute): |
| 2124 | |
| 2125 | 2008-07-07 Darin Adler <darin@apple.com> |
| 2126 | |
| 2127 | Rubber stamped by Adele. |
| 2128 | |
| 2129 | * VM/Machine.cpp: |
| 2130 | (KJS::Machine::privateExecute): Fix a typo in a comment. |
| 2131 | |
| 2132 | 2008-07-07 Steve Falkenburg <sfalken@apple.com> |
| 2133 | |
| 2134 | Build fixes. |
| 2135 | |
| 2136 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2137 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: |
| 2138 | |
| 2139 | 2008-07-07 Kevin McCullough <kmccullough@apple.com> |
| 2140 | |
| 2141 | Reviewed by Darin. |
| 2142 | |
| 2143 | When the profiler is running it gathers information and creates a |
| 2144 | Profile. After it finishes the Profile can be sorted and have other |
| 2145 | data refinements run over it. Both of these were done in the same class |
| 2146 | before. Now I split the gathering operations into a new class called |
| 2147 | ProfileGenerator. |
| 2148 | |
| 2149 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2150 | * profiler/Profile.cpp: Removed code related to the gather stage of a |
| 2151 | Profile's creation. |
| 2152 | (KJS::Profile::create): |
| 2153 | (KJS::Profile::Profile): |
| 2154 | * profiler/Profile.h: Ditto. |
| 2155 | (KJS::Profile::title): |
| 2156 | (KJS::Profile::callTree): |
| 2157 | (KJS::Profile::setHead): |
| 2158 | * profiler/ProfileGenerator.cpp: Added. This is the class that will |
| 2159 | handle the stage of creating a Profile. Once the Profile is finished |
| 2160 | being created, this class goes away. |
| 2161 | (KJS::ProfileGenerator::create): |
| 2162 | (KJS::ProfileGenerator::ProfileGenerator): |
| 2163 | (KJS::ProfileGenerator::title): |
| 2164 | (KJS::ProfileGenerator::willExecute): |
| 2165 | (KJS::ProfileGenerator::didExecute): |
| 2166 | (KJS::ProfileGenerator::stopProfiling): |
| 2167 | (KJS::ProfileGenerator::didFinishAllExecution): |
| 2168 | (KJS::ProfileGenerator::removeProfileStart): |
| 2169 | (KJS::ProfileGenerator::removeProfileEnd): |
| 2170 | * profiler/ProfileGenerator.h: Added. |
| 2171 | (KJS::ProfileGenerator::profile): |
| 2172 | (KJS::ProfileGenerator::originatingGlobalExec): |
| 2173 | (KJS::ProfileGenerator::pageGroupIdentifier): |
| 2174 | (KJS::ProfileGenerator::client): |
| 2175 | (KJS::ProfileGenerator::stoppedProfiling): |
| 2176 | * profiler/Profiler.cpp: Now operates with the ProfileGenerator instead |
| 2177 | of the Profile. |
| 2178 | (KJS::Profiler::startProfiling): |
| 2179 | (KJS::Profiler::stopProfiling): |
| 2180 | (KJS::Profiler::didFinishAllExecution): It is here that the Profile is |
| 2181 | handed off to its client and the Profile Generator is no longer needed. |
| 2182 | (KJS::dispatchFunctionToProfiles): |
| 2183 | (KJS::Profiler::willExecute): |
| 2184 | (KJS::Profiler::didExecute): |
| 2185 | * profiler/Profiler.h: Cleaned up the includes and subsequently the |
| 2186 | forward declarations. Also use the new ProfileGenerator. |
| 2187 | (KJS::ProfilerClient::~ProfilerClient): |
| 2188 | (KJS::Profiler::currentProfiles): |
| 2189 | * profiler/TreeProfile.cpp: Use Profile's new interface. |
| 2190 | (KJS::TreeProfile::create): |
| 2191 | (KJS::TreeProfile::TreeProfile): |
| 2192 | * profiler/TreeProfile.h: |
| 2193 | |
| 2194 | 2008-07-07 Sam Weinig <sam@webkit.org> |
| 2195 | |
| 2196 | Reviewed by Cameron Zwarich. |
| 2197 | |
| 2198 | Third step in broad cleanup effort. |
| 2199 | |
| 2200 | [ File list elided ] |
| 2201 | |
| 2202 | 2008-07-06 Sam Weinig <sam@webkit.org> |
| 2203 | |
| 2204 | Reviewed by Cameron Zwarich. |
| 2205 | |
| 2206 | Second step in broad cleanup effort. |
| 2207 | |
| 2208 | [ File list elided ] |
| 2209 | |
| 2210 | 2008-07-05 Sam Weinig <sam@webkit.org> |
| 2211 | |
| 2212 | Reviewed by Cameron Zwarich. |
| 2213 | |
| 2214 | First step in broad cleanup effort. |
| 2215 | |
| 2216 | [ File list elided ] |
| 2217 | |
| 2218 | 2008-07-05 Sam Weinig <sam@webkit.org> |
| 2219 | |
| 2220 | Rubber-stamped by Cameron Zwarich. |
| 2221 | |
| 2222 | Rename list.h/cpp to ArgList.h/cpp. |
| 2223 | |
| 2224 | * GNUmakefile.am: |
| 2225 | * JavaScriptCore.pri: |
| 2226 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2227 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2228 | * JavaScriptCoreSources.bkl: |
| 2229 | * VM/Machine.h: |
| 2230 | * kjs/AllInOneFile.cpp: |
| 2231 | * kjs/ArgList.cpp: Copied from JavaScriptCore/kjs/list.cpp. |
| 2232 | * kjs/ArgList.h: Copied from JavaScriptCore/kjs/list.h. |
| 2233 | * kjs/IndexToNameMap.cpp: |
| 2234 | * kjs/JSGlobalData.cpp: |
| 2235 | * kjs/JSGlobalData.h: |
| 2236 | * kjs/JSObject.h: |
| 2237 | * kjs/collector.cpp: |
| 2238 | * kjs/list.cpp: Removed. |
| 2239 | * kjs/list.h: Removed. |
| 2240 | |
| 2241 | 2008-07-05 Sam Weinig <sam@webkit.org> |
| 2242 | |
| 2243 | Fix non-AllInOne builds again. |
| 2244 | |
| 2245 | * kjs/BooleanPrototype.cpp: |
| 2246 | * kjs/ErrorPrototype.cpp: |
| 2247 | * kjs/FunctionPrototype.cpp: |
| 2248 | * kjs/NumberPrototype.cpp: |
| 2249 | * kjs/ObjectPrototype.cpp: |
| 2250 | |
| 2251 | 2008-07-05 Sam Weinig <sam@webkit.org> |
| 2252 | |
| 2253 | Fix build on case-sensitive build systems. |
| 2254 | |
| 2255 | * kjs/IndexToNameMap.cpp: |
| 2256 | |
| 2257 | 2008-07-05 Sam Weinig <sam@webkit.org> |
| 2258 | |
| 2259 | Fix build. |
| 2260 | |
| 2261 | * kjs/Arguments.cpp: |
| 2262 | * kjs/BooleanPrototype.cpp: |
| 2263 | * kjs/DateConstructor.cpp: |
| 2264 | * kjs/ErrorPrototype.cpp: |
| 2265 | * kjs/FunctionPrototype.cpp: |
| 2266 | * kjs/NumberPrototype.cpp: |
| 2267 | * kjs/ObjectPrototype.cpp: |
| 2268 | * kjs/RegExpPrototype.cpp: |
| 2269 | * kjs/StringConstructor.cpp: |
| 2270 | * kjs/lookup.cpp: |
| 2271 | |
| 2272 | 2008-07-05 Sam Weinig <sam@webkit.org> |
| 2273 | |
| 2274 | Fix non-AllInOne build. |
| 2275 | |
| 2276 | * kjs/JSGlobalObject.cpp: |
| 2277 | |
| 2278 | 2008-07-05 Sam Weinig <sam@webkit.org> |
| 2279 | |
| 2280 | Rubber-stamped by Cameron Zwarich. |
| 2281 | |
| 2282 | Split Arguments, IndexToNameMap, PrototypeFunction, GlobalEvalFunction and |
| 2283 | the functions on the global object out of JSFunction.h/cpp. |
| 2284 | |
| 2285 | * GNUmakefile.am: |
| 2286 | * JavaScriptCore.pri: |
| 2287 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2288 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2289 | * JavaScriptCoreSources.bkl: |
| 2290 | * VM/Machine.cpp: |
| 2291 | * kjs/AllInOneFile.cpp: |
| 2292 | * kjs/Arguments.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp. |
| 2293 | * kjs/Arguments.h: Copied from JavaScriptCore/kjs/JSFunction.h. |
| 2294 | * kjs/GlobalEvalFunction.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp. |
| 2295 | * kjs/GlobalEvalFunction.h: Copied from JavaScriptCore/kjs/JSFunction.h. |
| 2296 | * kjs/IndexToNameMap.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp. |
| 2297 | * kjs/IndexToNameMap.h: Copied from JavaScriptCore/kjs/JSFunction.h. |
| 2298 | * kjs/JSActivation.cpp: |
| 2299 | * kjs/JSFunction.cpp: |
| 2300 | * kjs/JSFunction.h: |
| 2301 | * kjs/JSGlobalObject.cpp: |
| 2302 | * kjs/JSGlobalObjectFunctions.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp. |
| 2303 | * kjs/JSGlobalObjectFunctions.h: Copied from JavaScriptCore/kjs/JSFunction.h. |
| 2304 | The functions on the global object should be in JSGlobalObject.cpp, but putting them there |
| 2305 | was a 0.5% regression. |
| 2306 | |
| 2307 | * kjs/PrototypeFunction.cpp: Copied from JavaScriptCore/kjs/JSFunction.cpp. |
| 2308 | * kjs/PrototypeFunction.h: Copied from JavaScriptCore/kjs/JSFunction.h. |
| 2309 | * kjs/Shell.cpp: |
| 2310 | * kjs/lexer.cpp: |
| 2311 | * kjs/ustring.cpp: |
| 2312 | |
| 2313 | 2008-07-04 Sam Weinig <sam@webkit.org> |
| 2314 | |
| 2315 | Really fix the mac build. |
| 2316 | |
| 2317 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2318 | |
| 2319 | 2008-07-04 Sam Weinig <sam@webkit.org> |
| 2320 | |
| 2321 | Fix mac build. |
| 2322 | |
| 2323 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2324 | |
| 2325 | 2008-07-04 Sam Weinig <sam@webkit.org> |
| 2326 | |
| 2327 | Fix non-AllInOne builds. |
| 2328 | |
| 2329 | * kjs/Error.cpp: |
| 2330 | * kjs/GetterSetter.cpp: |
| 2331 | * kjs/JSImmediate.cpp: |
| 2332 | * kjs/operations.cpp: |
| 2333 | |
| 2334 | 2008-07-04 Sam Weinig <sam@webkit.org> |
| 2335 | |
| 2336 | Rubber-stamped by Dan Bernstein. |
| 2337 | |
| 2338 | Split Error and GetterSetter out of JSObject.h. |
| 2339 | |
| 2340 | * API/JSCallbackObjectFunctions.h: |
| 2341 | * GNUmakefile.am: |
| 2342 | * JavaScriptCore.pri: |
| 2343 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2344 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2345 | * JavaScriptCoreSources.bkl: |
| 2346 | * kjs/AllInOneFile.cpp: |
| 2347 | * kjs/ClassInfo.h: Copied from JavaScriptCore/kjs/JSObject.h. |
| 2348 | * kjs/Error.cpp: Copied from JavaScriptCore/kjs/JSObject.cpp. |
| 2349 | * kjs/Error.h: Copied from JavaScriptCore/kjs/JSObject.h. |
| 2350 | * kjs/GetterSetter.cpp: |
| 2351 | * kjs/GetterSetter.h: Copied from JavaScriptCore/kjs/JSObject.h. |
| 2352 | * kjs/JSObject.cpp: |
| 2353 | * kjs/JSObject.h: |
| 2354 | * kjs/nodes.h: |
| 2355 | |
| 2356 | 2008-07-04 Simon Hausmann <hausmann@webkit.org> |
| 2357 | |
| 2358 | Fix the Wx build, added TreeProfile.cpp to the build. |
| 2359 | |
| 2360 | * JavaScriptCoreSources.bkl: |
| 2361 | |
| 2362 | 2008-07-03 Mark Rowe <mrowe@apple.com> |
| 2363 | |
| 2364 | Reviewed by Oliver Hunt. |
| 2365 | |
| 2366 | Fix output path of recently-added script phase to reference the correct file. |
| 2367 | This prevents Xcode from running the script phase unnecessarily, which caused |
| 2368 | the generated header to be recreated and lead to AllInOneFile.cpp rebuilding. |
| 2369 | |
| 2370 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2371 | |
| 2372 | 2008-07-03 Mark Rowe <mrowe@apple.com> |
| 2373 | |
| 2374 | Follow-up to the 64-bit build fix. Use intptr_t rather than ssize_t as |
| 2375 | the latter is non-standard and does not exist on Windows. |
| 2376 | |
| 2377 | * kjs/JSLock.cpp: |
| 2378 | (KJS::JSLock::lockCount): |
| 2379 | (KJS::JSLock::lock): |
| 2380 | (KJS::JSLock::unlock): |
| 2381 | (KJS::JSLock::DropAllLocks::DropAllLocks): |
| 2382 | * kjs/JSLock.h: |
| 2383 | |
| 2384 | 2008-07-02 Mark Rowe <mrowe@apple.com> |
| 2385 | |
| 2386 | Fix the 64-bit build. pthread_getspecific works with pointer-sized values, |
| 2387 | so use ssize_t rather than int to track the lock count to avoid warnings about |
| 2388 | truncating the result of pthread_getspecific. |
| 2389 | |
| 2390 | * kjs/JSLock.cpp: |
| 2391 | (KJS::JSLock::lockCount): |
| 2392 | (KJS::JSLock::lock): |
| 2393 | (KJS::JSLock::unlock): |
| 2394 | (KJS::JSLock::DropAllLocks::DropAllLocks): |
| 2395 | * kjs/JSLock.h: |
| 2396 | |
| 2397 | 2008-07-03 Geoffrey Garen <ggaren@apple.com> |
| 2398 | |
| 2399 | Reviewed by Sam Weinig. |
| 2400 | |
| 2401 | Removed checking for the array get/put fast case from the array code. |
| 2402 | Callers who want the fast case should call getIndex and/or setIndex |
| 2403 | instead. (get_by_val and put_by_val already do this.) |
| 2404 | |
| 2405 | SunSpider reports no change overall, but a 1.4% speedup on fannkuch and |
| 2406 | a 3.6% speedup on nsieve. |
| 2407 | |
| 2408 | 2008-07-03 Dan Bernstein <mitz@apple.com> |
| 2409 | |
| 2410 | - Windows build fix |
| 2411 | |
| 2412 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added TreeProfile.{h,cpp}. |
| 2413 | |
| 2414 | 2008-07-03 Dan Bernstein <mitz@apple.com> |
| 2415 | |
| 2416 | Reviewed by Anders Carlsson. |
| 2417 | |
| 2418 | - Windows build fix |
| 2419 | |
| 2420 | * VM/Machine.cpp: |
| 2421 | (KJS::Machine::Machine): |
| 2422 | |
| 2423 | 2008-07-03 Simon Hausmann <hausmann@webkit.org> |
| 2424 | |
| 2425 | Reviewed by Alexey Proskuryakov. |
| 2426 | |
| 2427 | Fix the non-threaded build. |
| 2428 | |
| 2429 | * kjs/JSGlobalData.cpp: |
| 2430 | (KJS::JSGlobalData::threadInstanceInternal): |
| 2431 | |
| 2432 | 2008-07-03 Simon Hausmann <hausmann@webkit.org> |
| 2433 | |
| 2434 | Fix the Qt build, added TreeProfile to the build. |
| 2435 | |
| 2436 | * JavaScriptCore.pri: |
| 2437 | |
| 2438 | 2008-07-02 Alexey Proskuryakov <ap@webkit.org> |
| 2439 | |
| 2440 | Reviewed by Geoff. |
| 2441 | |
| 2442 | Don't create unnecessary JSGlobalData instances. |
| 2443 | |
| 2444 | * kjs/JSGlobalData.h: |
| 2445 | * kjs/JSGlobalData.cpp: |
| 2446 | (KJS::JSGlobalData::threadInstanceExists): |
| 2447 | (KJS::JSGlobalData::sharedInstanceExists): |
| 2448 | (KJS::JSGlobalData::threadInstance): |
| 2449 | (KJS::JSGlobalData::sharedInstance): |
| 2450 | (KJS::JSGlobalData::threadInstanceInternal): |
| 2451 | (KJS::JSGlobalData::sharedInstanceInternal): |
| 2452 | Added methods to query instance existence. |
| 2453 | |
| 2454 | * kjs/InitializeThreading.cpp: |
| 2455 | (KJS::initializeThreadingOnce): |
| 2456 | Initialize thread instance static in a new way. |
| 2457 | |
| 2458 | * API/JSBase.cpp: |
| 2459 | (JSGarbageCollect): |
| 2460 | * kjs/collector.cpp: |
| 2461 | (KJS::Heap::collect): |
| 2462 | Check for instance existence before accessing it. |
| 2463 | |
| 2464 | 2008-07-02 Geoffrey Garen <ggaren@apple.com> |
| 2465 | |
| 2466 | Reviewed by Cameron Zwarich. |
| 2467 | |
| 2468 | Fixed https://bugs.webkit.org/show_bug.cgi?id=19862 |
| 2469 | REGRESSION (r34907): Gmail crashes in JavaScriptCore code while editing drafts |
| 2470 | |
| 2471 | I was never able to reproduce this issue, but Cameron could, and he says |
| 2472 | that this patch fixes it. |
| 2473 | |
| 2474 | The crash seems tied to a timer or event handler callback. In such a case, |
| 2475 | the sole reference to the global object may be in the current call frame, |
| 2476 | so we can't depend on the global object to mark the call frame area in |
| 2477 | the register file. |
| 2478 | |
| 2479 | The new GC marking rule is: the global object is not responsible for |
| 2480 | marking the whole register file -- it's just responsible for the globals |
| 2481 | section it's tied to. The heap is responsible for marking the call frame area. |
| 2482 | |
| 2483 | 2008-07-02 Mark Rowe <mrowe@apple.com> |
| 2484 | |
| 2485 | Reviewed by Sam Weinig. |
| 2486 | |
| 2487 | Add the ability to trace JavaScriptCore garabge collections using dtrace. |
| 2488 | |
| 2489 | * JavaScriptCore.xcodeproj/project.pbxproj: Generate the dtrace probe header |
| 2490 | file when building on a new enough version of Mac OS X. |
| 2491 | * JavaScriptCorePrefix.h: Add our standard Mac OS X version detection macros. |
| 2492 | * kjs/Tracing.d: Declare three dtrace probes. |
| 2493 | * kjs/Tracing.h: Include the generated dtrace macros if dtrace is available, |
| 2494 | otherwise provide versions that do nothing. |
| 2495 | * kjs/collector.cpp: |
| 2496 | (KJS::Heap::collect): Fire dtrace probes when starting a collection, after the |
| 2497 | mark phase has completed, and when the collection is complete. |
| 2498 | * wtf/Platform.h: Define HAVE_DTRACE when building on a new enough version of Mac OS X. |
| 2499 | |
| 2500 | 2008-07-02 Geoffrey Garen <ggaren@apple.com> |
| 2501 | |
| 2502 | Rubber stamped by Oliver Hunt. |
| 2503 | |
| 2504 | Reduced the max register file size from 8MB to 2MB. |
| 2505 | |
| 2506 | We still allow about 20,000 levels of recursion. |
| 2507 | |
| 2508 | 2008-07-02 Alp Toker <alp@nuanti.com> |
| 2509 | |
| 2510 | Build fix for r34960. Add TreeProfile.cpp to build. |
| 2511 | |
| 2512 | * GNUmakefile.am: |
| 2513 | |
| 2514 | 2008-07-02 Geoffrey Garen <ggaren@apple.com> |
| 2515 | |
| 2516 | Reviewed by Oliver Hunt. |
| 2517 | |
| 2518 | Optimized a[n] get for cases when a is an array or a string. When a is |
| 2519 | an array, we optimize both get and put. When a is a string, we only |
| 2520 | optimize get, since you can't put to a string. |
| 2521 | |
| 2522 | SunSpider says 3.4% faster. |
| 2523 | |
| 2524 | 2008-07-02 Kevin McCullough <kmccullough@apple.com> |
| 2525 | |
| 2526 | Reviewed by Darin. |
| 2527 | |
| 2528 | -Small cleanup in preparation for implementing Bottom-up. |
| 2529 | |
| 2530 | * profiler/CallIdentifier.h: Rename debug function to make it clear of |
| 2531 | its output and intention to be debug only. |
| 2532 | (KJS::CallIdentifier::operator const char* ): Implement in terms of |
| 2533 | c_str. |
| 2534 | (KJS::CallIdentifier::c_str): |
| 2535 | * profiler/ProfileNode.cpp: Impelment findChild() which will be needed |
| 2536 | by the bottom-up implementation. |
| 2537 | (KJS::ProfileNode::findChild): |
| 2538 | * profiler/ProfileNode.h: Added comments to make the collections of |
| 2539 | functions more clear. |
| 2540 | (KJS::ProfileNode::operator==): |
| 2541 | (KJS::ProfileNode::c_str): |
| 2542 | |
| 2543 | 2008-07-02 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 2544 | |
| 2545 | Reviewed by Darin. |
| 2546 | |
| 2547 | Bug 19776: Number.toExponential() is incorrect for numbers between 0.1 and 1 |
| 2548 | <https://bugs.webkit.org/show_bug.cgi?id=19776> |
| 2549 | |
| 2550 | Perform the sign check for the exponent on the actual exponent value, |
| 2551 | which is 1 less than the value of decimalPoint, instead of on the value |
| 2552 | of decimalPoint itself. |
| 2553 | |
| 2554 | * kjs/NumberPrototype.cpp: |
| 2555 | (KJS::exponentialPartToString): |
| 2556 | |
| 2557 | 2008-07-02 Kevin McCullough <kmccullough@apple.com> |
| 2558 | |
| 2559 | Reviewed by Darin. |
| 2560 | |
| 2561 | <rdar://problem/5951532> JSProfiler: Implement Bottom-Up view (19228) |
| 2562 | - Subclass TreeProfile as I prepare for a HeavyProfile to be comming |
| 2563 | later. |
| 2564 | |
| 2565 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2566 | * profiler/Profile.cpp: By default we create a TreeProfile. |
| 2567 | (KJS::Profile::create): |
| 2568 | * profiler/Profile.h: Changes to the Profile class to make it amenable |
| 2569 | to be inherited from. |
| 2570 | (KJS::Profile::~Profile): |
| 2571 | * profiler/TreeProfile.cpp: Added. |
| 2572 | (KJS::TreeProfile::create): |
| 2573 | (KJS::TreeProfile::TreeProfile): |
| 2574 | (KJS::TreeProfile::heavyProfile): |
| 2575 | * profiler/TreeProfile.h: Added. |
| 2576 | (KJS::TreeProfile::treeProfile): |
| 2577 | |
| 2578 | 2008-07-02 Kevin McCullough <kmccullough@apple.com> |
| 2579 | |
| 2580 | Reviewed by Dan. |
| 2581 | |
| 2582 | Broke CallIdentifier out into its own file. I did this because it's |
| 2583 | going to grow a lot soon and I wanted this to be a separate patch. |
| 2584 | |
| 2585 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2586 | * profiler/CallIdentifier.h: Added. |
| 2587 | (KJS::CallIdentifier::CallIdentifier): |
| 2588 | (KJS::CallIdentifier::operator==): |
| 2589 | (KJS::CallIdentifier::operator!=): |
| 2590 | (KJS::CallIdentifier::operator const char* ): |
| 2591 | (KJS::CallIdentifier::toString): |
| 2592 | * profiler/ProfileNode.h: |
| 2593 | |
| 2594 | 2008-07-02 Simon Hausmann <hausmann@webkit.org> |
| 2595 | |
| 2596 | Build fix. Implemented missing functions for single-threaded build. |
| 2597 | |
| 2598 | * kjs/JSLock.cpp: |
| 2599 | (KJS::JSLock::JSLock): |
| 2600 | (KJS::JSLock::lock): |
| 2601 | (KJS::JSLock::unlock): |
| 2602 | (KJS::JSLock::DropAllLocks::DropAllLocks): |
| 2603 | |
| 2604 | 2008-07-02 Alexey Proskuryakov <ap@webkit.org> |
| 2605 | |
| 2606 | Another non-AllInOne build fix. |
| 2607 | |
| 2608 | * kjs/JSGlobalObject.cpp: Include JSLock.h here, too. |
| 2609 | |
| 2610 | 2008-07-02 Alexey Proskuryakov <ap@webkit.org> |
| 2611 | |
| 2612 | Non-AllInOne build fix. |
| 2613 | |
| 2614 | * kjs/interpreter.cpp: Include JSLock.h. |
| 2615 | |
| 2616 | 2008-06-30 Alexey Proskuryakov <ap@webkit.org> |
| 2617 | |
| 2618 | Reviewed by Darin. |
| 2619 | |
| 2620 | Disable JSLock for per-thread contexts. |
| 2621 | |
| 2622 | No change on SunSpider. |
| 2623 | |
| 2624 | * kjs/JSGlobalData.h: |
| 2625 | * kjs/JSGlobalData.cpp: |
| 2626 | (KJS::JSGlobalData::JSGlobalData): |
| 2627 | (KJS::JSGlobalData::sharedInstance): |
| 2628 | Added isSharedInstance as a better way to tell whether the instance is shared (legacy). |
| 2629 | |
| 2630 | * kjs/JSLock.cpp: |
| 2631 | (KJS::createJSLockCount): |
| 2632 | (KJS::JSLock::lockCount): |
| 2633 | (KJS::setLockCount): |
| 2634 | (KJS::JSLock::JSLock): |
| 2635 | (KJS::JSLock::lock): |
| 2636 | (KJS::JSLock::unlock): |
| 2637 | (KJS::JSLock::currentThreadIsHoldingLock): |
| 2638 | (KJS::JSLock::DropAllLocks::DropAllLocks): |
| 2639 | (KJS::JSLock::DropAllLocks::~DropAllLocks): |
| 2640 | * kjs/JSLock.h: |
| 2641 | (KJS::JSLock::JSLock): |
| 2642 | (KJS::JSLock::~JSLock): |
| 2643 | Made JSLock and JSLock::DropAllLocks constructors take a parameter to decide whether to |
| 2644 | actually lock a mutex, or only to increment recursion count. We cannot turn it into no-op |
| 2645 | if we want to keep existing assertions working. |
| 2646 | Made recursion count per-thread, now that locks may not lock. |
| 2647 | |
| 2648 | * API/JSBase.cpp: |
| 2649 | (JSEvaluateScript): Take JSLock after casting JSContextRef to ExecState* (which doesn't need |
| 2650 | locking in any case), so that a decision whether to actually lock can be made. |
| 2651 | (JSCheckScriptSyntax): Ditto. |
| 2652 | (JSGarbageCollect): Only lock while collecting the shared heap, not the per-thread one. |
| 2653 | |
| 2654 | * API/JSObjectRef.cpp: |
| 2655 | (JSClassCreate): Don't lock, as there is no reason to. |
| 2656 | (JSClassRetain): Ditto. |
| 2657 | (JSClassRelease): Ditto. |
| 2658 | (JSPropertyNameArrayRetain): Ditto. |
| 2659 | (JSPropertyNameArrayRelease): Only lock while deleting the array, as that may touch |
| 2660 | identifier table. |
| 2661 | (JSPropertyNameAccumulatorAddName): Adding a string also involves an identifier table |
| 2662 | lookup, and possibly modification. |
| 2663 | |
| 2664 | * API/JSStringRef.cpp: |
| 2665 | (JSStringCreateWithCharacters): |
| 2666 | (JSStringCreateWithUTF8CString): |
| 2667 | (JSStringRetain): |
| 2668 | (JSStringRelease): |
| 2669 | (JSStringGetUTF8CString): |
| 2670 | (JSStringIsEqual): |
| 2671 | * API/JSStringRefCF.cpp: |
| 2672 | (JSStringCreateWithCFString): |
| 2673 | JSStringRef operations other than releasing do not need locking. |
| 2674 | |
| 2675 | * VM/Machine.cpp: Don't include unused JSLock.h. |
| 2676 | |
| 2677 | * kjs/CollectorHeapIntrospector.cpp: (KJS::CollectorHeapIntrospector::statistics): |
| 2678 | Don't take the lock for real, as heap introspection pauses the process anyway. It seems that |
| 2679 | the existing code could cause deadlocks. |
| 2680 | |
| 2681 | * kjs/Shell.cpp: |
| 2682 | (functionGC): |
| 2683 | (main): |
| 2684 | (jscmain): |
| 2685 | The test tool uses a per-thread context, so no real locking is required. |
| 2686 | |
| 2687 | * kjs/collector.h: |
| 2688 | (KJS::Heap::setGCProtectNeedsLocking): Optionally protect m_protectedValues access with a |
| 2689 | per-heap mutex. This is only needed for WebCore Database code, which violates the "no data |
| 2690 | migration between threads" by using ProtectedPtr on a background thread. |
| 2691 | (KJS::Heap::isShared): Keep a shared flag here, as well. |
| 2692 | |
| 2693 | * kjs/protect.h: |
| 2694 | (KJS::::ProtectedPtr): |
| 2695 | (KJS::::~ProtectedPtr): |
| 2696 | (KJS::::operator): |
| 2697 | (KJS::operator==): |
| 2698 | (KJS::operator!=): |
| 2699 | ProtectedPtr is ony used from WebCore, so it doesn't need to take JSLock. An assertion in |
| 2700 | Heap::protect/unprotect guards agains possible future unlocked uses of ProtectedPtr in JSC. |
| 2701 | |
| 2702 | * kjs/collector.cpp: |
| 2703 | (KJS::Heap::Heap): Initialize m_isShared. |
| 2704 | (KJS::Heap::~Heap): No need to lock for real during destruction, but must keep assertions |
| 2705 | in sweep() working. |
| 2706 | (KJS::destroyRegisteredThread): Registered thread list is only accessed for shared heap, |
| 2707 | so locking is always needed here. |
| 2708 | (KJS::Heap::registerThread): Ditto. |
| 2709 | (KJS::Heap::markStackObjectsConservatively): Use m_isShared instead of comparing to a shared |
| 2710 | instance for a small speedup. |
| 2711 | (KJS::Heap::setGCProtectNeedsLocking): Create m_protectedValuesMutex. There is currently no |
| 2712 | way to undo this - and ideally, Database code will be fixed to lo longer require this quirk. |
| 2713 | (KJS::Heap::protect): Take m_protectedValuesMutex (if it exists) while accessing |
| 2714 | m_protectedValues. |
| 2715 | (KJS::Heap::unprotect): Ditto. |
| 2716 | (KJS::Heap::markProtectedObjects): Ditto. |
| 2717 | (KJS::Heap::protectedGlobalObjectCount): Ditto. |
| 2718 | (KJS::Heap::protectedObjectCount): Ditto. |
| 2719 | (KJS::Heap::protectedObjectTypeCounts): Ditto. |
| 2720 | |
| 2721 | * kjs/ustring.cpp: |
| 2722 | * kjs/ustring.h: |
| 2723 | Don't include JSLock.h, which is no longer used here. As a result, an explicit include had |
| 2724 | to be added to many files in JavaScriptGlue, WebCore and WebKit. |
| 2725 | |
| 2726 | * kjs/JSGlobalObject.cpp: |
| 2727 | (KJS::JSGlobalObject::init): |
| 2728 | * API/JSCallbackConstructor.cpp: |
| 2729 | (KJS::constructJSCallback): |
| 2730 | * API/JSCallbackFunction.cpp: |
| 2731 | (KJS::JSCallbackFunction::call): |
| 2732 | * API/JSCallbackObjectFunctions.h: |
| 2733 | (KJS::::init): |
| 2734 | (KJS::::getOwnPropertySlot): |
| 2735 | (KJS::::put): |
| 2736 | (KJS::::deleteProperty): |
| 2737 | (KJS::::construct): |
| 2738 | (KJS::::hasInstance): |
| 2739 | (KJS::::call): |
| 2740 | (KJS::::getPropertyNames): |
| 2741 | (KJS::::toNumber): |
| 2742 | (KJS::::toString): |
| 2743 | (KJS::::staticValueGetter): |
| 2744 | (KJS::::callbackGetter): |
| 2745 | * API/JSContextRef.cpp: |
| 2746 | (JSGlobalContextCreate): |
| 2747 | (JSGlobalContextRetain): |
| 2748 | (JSGlobalContextRelease): |
| 2749 | * API/JSValueRef.cpp: |
| 2750 | (JSValueIsEqual): |
| 2751 | (JSValueIsStrictEqual): |
| 2752 | (JSValueIsInstanceOfConstructor): |
| 2753 | (JSValueMakeNumber): |
| 2754 | (JSValueMakeString): |
| 2755 | (JSValueToNumber): |
| 2756 | (JSValueToStringCopy): |
| 2757 | (JSValueToObject): |
| 2758 | (JSValueProtect): |
| 2759 | (JSValueUnprotect): |
| 2760 | * JavaScriptCore.exp: |
| 2761 | * kjs/PropertyNameArray.h: |
| 2762 | (KJS::PropertyNameArray::globalData): |
| 2763 | * kjs/interpreter.cpp: |
| 2764 | (KJS::Interpreter::checkSyntax): |
| 2765 | (KJS::Interpreter::evaluate): |
| 2766 | Pass a parameter to JSLock/JSLock::DropAllLocks to decide whether the lock needs to be taken. |
| 2767 | |
| 2768 | 2008-07-01 Alexey Proskuryakov <ap@webkit.org> |
| 2769 | |
| 2770 | Reviewed by Darin. |
| 2771 | |
| 2772 | https://bugs.webkit.org/show_bug.cgi?id=19834 |
| 2773 | Failed assertion in JavaScriptCore/VM/SegmentedVector.h:82 |
| 2774 | |
| 2775 | Creating a global object with a custom prototype resets it twice (wasteful!). |
| 2776 | So, addStaticGlobals() was called twice, but JSGlobalObject::reset() didn't reset |
| 2777 | the register array. |
| 2778 | |
| 2779 | * kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::reset): Call setRegisterArray(0, 0). |
| 2780 | |
| 2781 | * kjs/JSVariableObject.h: Changed registerArray to OwnArrayPtr. Also, added private copy |
| 2782 | constructor and operator= to ensure that no one attempts to copy this object (for whatever |
| 2783 | reason, I couldn't make Noncopyable work). |
| 2784 | |
| 2785 | * kjs/JSGlobalObject.h: (KJS::JSGlobalObject::addStaticGlobals): Allocate registerArray |
| 2786 | with new[]. |
| 2787 | |
| 2788 | * kjs/JSVariableObject.cpp: |
| 2789 | (KJS::JSVariableObject::copyRegisterArray): Allocate registerArray with new[]. |
| 2790 | (KJS::JSVariableObject::setRegisterArray): Avoid hitting an assertion in OwnArrayPtr when |
| 2791 | "changing" the value from 0 to 0. |
| 2792 | |
| 2793 | 2008-07-01 Geoffrey Garen <ggaren@apple.com> |
| 2794 | |
| 2795 | Reviewed by Oliver Hunt. |
| 2796 | |
| 2797 | Removed and/or reordered exception checks in array-style a[n] access. |
| 2798 | |
| 2799 | SunSpider says 1.4% faster. |
| 2800 | |
| 2801 | * VM/Machine.cpp: |
| 2802 | (KJS::Machine::privateExecute): No need to check for exceptions before |
| 2803 | calling toString, toNumber and/or get. If the call ends up being observable |
| 2804 | through toString, valueOf, or a getter, we short-circuit it there, instead. |
| 2805 | In the op_del_by_val case, I removed the incorrect comment without actually |
| 2806 | removing the code, since I didn't want to tempt the GCC fates! |
| 2807 | |
| 2808 | * kjs/JSObject.cpp: |
| 2809 | (KJS::callDefaultValueFunction): Added exception check to prevent |
| 2810 | toString and valueOf functions from observing execution after an exception |
| 2811 | has been thrown. This removes some of the burden of exception checking |
| 2812 | from the machine. |
| 2813 | |
| 2814 | (KJS::JSObject::defaultValue): Removed redundant exception check here. |
| 2815 | |
| 2816 | * kjs/PropertySlot.cpp: |
| 2817 | (KJS::PropertySlot::functionGetter): Added exception check to prevent |
| 2818 | getter functions from observing execution after an exception has been |
| 2819 | thrown. This removes some of the burden of exception checking from the |
| 2820 | machine. |
| 2821 | |
| 2822 | 2008-07-01 Geoffrey Garen <ggaren@apple.com> |
| 2823 | |
| 2824 | Reviewed by Oliver Hunt. |
| 2825 | |
| 2826 | Optimized a[n] get and put for cases where n is an immediate unsigned |
| 2827 | value. |
| 2828 | |
| 2829 | SunSpider says 3.5% faster. |
| 2830 | |
| 2831 | 2008-07-01 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 2832 | |
| 2833 | Reviewed by Darin. |
| 2834 | |
| 2835 | Bug 19844: JavaScript Switch statement modifies "this" |
| 2836 | <https://bugs.webkit.org/show_bug.cgi?id=19844> |
| 2837 | |
| 2838 | Use a temporary when generating code for switch clauses to avoid |
| 2839 | overwriting 'this' or a local variable. |
| 2840 | |
| 2841 | * kjs/nodes.cpp: |
| 2842 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 2843 | |
| 2844 | 2008-07-01 Christian Dywan <christian@twotoasts.de> |
| 2845 | |
| 2846 | Gtk+ build fix. |
| 2847 | |
| 2848 | * kjs/list.cpp: Include "JSCell.h" |
| 2849 | |
| 2850 | 2008-07-01 Kevin McCullough <kmccullough@apple.com> |
| 2851 | |
| 2852 | Build fix. |
| 2853 | |
| 2854 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2855 | |
| 2856 | 2008-07-01 Dan Bernstein <mitz@apple.com> |
| 2857 | |
| 2858 | Reviewed by Anders Carlsson. |
| 2859 | |
| 2860 | - Mac release build fix |
| 2861 | |
| 2862 | * JavaScriptCore.exp: |
| 2863 | |
| 2864 | 2008-07-01 Sam Weinig <sam@webkit.org> |
| 2865 | |
| 2866 | Try and fix mac builds. |
| 2867 | |
| 2868 | * JavaScriptCore.exp: |
| 2869 | |
| 2870 | 2008-07-01 Sam Weinig <sam@webkit.org> |
| 2871 | |
| 2872 | Fix non-AllInOne builds. |
| 2873 | |
| 2874 | * kjs/DateMath.cpp: |
| 2875 | |
| 2876 | 2008-07-01 Sam Weinig <sam@webkit.org> |
| 2877 | |
| 2878 | Reviewed by Darin Adler. |
| 2879 | |
| 2880 | Split JSCell and JSNumberCell class declarations out of JSValue.h |
| 2881 | |
| 2882 | * GNUmakefile.am: |
| 2883 | * JavaScriptCore.pri: |
| 2884 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2885 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2886 | * JavaScriptCoreSources.bkl: |
| 2887 | * VM/JSPropertyNameIterator.h: |
| 2888 | * kjs/AllInOneFile.cpp: |
| 2889 | * kjs/JSCell.cpp: Copied from JavaScriptCore/kjs/JSValue.cpp. |
| 2890 | * kjs/JSCell.h: Copied from JavaScriptCore/kjs/JSValue.h. |
| 2891 | (KJS::JSValue::getJSNumber): |
| 2892 | * kjs/JSNumberCell.cpp: |
| 2893 | * kjs/JSNumberCell.h: Copied from JavaScriptCore/kjs/JSValue.h. |
| 2894 | * kjs/JSObject.h: |
| 2895 | * kjs/JSString.cpp: |
| 2896 | (KJS::jsString): |
| 2897 | (KJS::jsOwnedString): |
| 2898 | * kjs/JSString.h: |
| 2899 | (KJS::JSValue::toThisJSString): |
| 2900 | * kjs/JSValue.cpp: |
| 2901 | * kjs/JSValue.h: |
| 2902 | |
| 2903 | 2008-07-01 Anders Carlsson <andersca@apple.com> |
| 2904 | |
| 2905 | Build fixes. |
| 2906 | |
| 2907 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2908 | * kjs/JSGlobalObject.h: |
| 2909 | (KJS::JSGlobalObject::addStaticGlobals): |
| 2910 | |
| 2911 | 2008-07-01 Simon Hausmann <hausmann@webkit.org> |
| 2912 | |
| 2913 | Build fix, include OwnPtr.h. |
| 2914 | |
| 2915 | * kjs/RegExpConstructor.h: |
| 2916 | |
| 2917 | 2008-06-30 Geoffrey Garen <ggaren@apple.com> |
| 2918 | |
| 2919 | Reviewed by Oliver Hunt. |
| 2920 | |
| 2921 | Fixed a global object leak caused by the switch to one register file. |
| 2922 | |
| 2923 | Don't unconditionally mark the register file, since that logically |
| 2924 | makes all global variables GC roots, even when their global object is |
| 2925 | no longer reachable. |
| 2926 | |
| 2927 | Instead, make the global object associated with the register file |
| 2928 | responsible for marking the register file. |
| 2929 | |
| 2930 | 2008-06-30 Geoffrey Garen <ggaren@apple.com> |
| 2931 | |
| 2932 | Reviewed by Oliver Hunt. |
| 2933 | |
| 2934 | Removed the "registerBase" abstraction. Since the register file never |
| 2935 | reallocates, we can keep direct pointers into it, instead of |
| 2936 | <registerBase, offset> tuples. |
| 2937 | |
| 2938 | SunSpider says 0.8% faster. |
| 2939 | |
| 2940 | 2008-06-30 Oliver Hunt <oliver@apple.com> |
| 2941 | |
| 2942 | Reviewed by NOBODY (build fix). |
| 2943 | |
| 2944 | Fix build by adding all (hopefully) the missing includes. |
| 2945 | |
| 2946 | * kjs/BooleanPrototype.cpp: |
| 2947 | * kjs/DateConstructor.cpp: |
| 2948 | * kjs/ErrorPrototype.cpp: |
| 2949 | * kjs/FunctionPrototype.cpp: |
| 2950 | * kjs/NativeErrorConstructor.cpp: |
| 2951 | * kjs/NumberPrototype.cpp: |
| 2952 | * kjs/ObjectPrototype.cpp: |
| 2953 | * kjs/RegExpConstructor.cpp: |
| 2954 | * kjs/StringConstructor.cpp: |
| 2955 | * kjs/StringPrototype.cpp: |
| 2956 | |
| 2957 | 2008-06-30 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 2958 | |
| 2959 | Reviewed by Oliver. |
| 2960 | |
| 2961 | Bug 19830: REGRESSION (r34883): Google Reader doesn't show up feed list on sidebar |
| 2962 | <https://bugs.webkit.org/show_bug.cgi?id=19830> |
| 2963 | |
| 2964 | Ensure that we do not eliminate a write to a local register when doing |
| 2965 | peephole optimizations. |
| 2966 | |
| 2967 | * VM/CodeGenerator.cpp: |
| 2968 | (KJS::CodeGenerator::emitJumpIfTrue): |
| 2969 | (KJS::CodeGenerator::emitJumpIfFalse): |
| 2970 | |
| 2971 | 2008-06-30 Sam Weinig <sam@webkit.org> |
| 2972 | |
| 2973 | Rubber-stamped by Darin Alder. |
| 2974 | |
| 2975 | Split InternalFunction into its own header file. |
| 2976 | |
| 2977 | * API/JSCallbackFunction.h: |
| 2978 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 2979 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 2980 | * kjs/ArrayConstructor.h: |
| 2981 | * kjs/BooleanConstructor.h: |
| 2982 | * kjs/DateConstructor.h: |
| 2983 | * kjs/ErrorConstructor.h: |
| 2984 | * kjs/FunctionConstructor.h: |
| 2985 | * kjs/FunctionPrototype.h: |
| 2986 | * kjs/InternalFunction.h: Copied from kjs/JSFunction.h. |
| 2987 | * kjs/JSFunction.h: |
| 2988 | * kjs/NativeErrorConstructor.h: |
| 2989 | * kjs/NumberConstructor.h: |
| 2990 | * kjs/ObjectConstructor.h: |
| 2991 | * kjs/RegExpConstructor.h: |
| 2992 | * kjs/StringConstructor.h: |
| 2993 | * profiler/Profiler.cpp: |
| 2994 | |
| 2995 | 2008-06-30 Sam Weinig <sam@webkit.org> |
| 2996 | |
| 2997 | Reviewed by Kevin McCullough. |
| 2998 | |
| 2999 | Remove empty files Instruction.cpp, LabelID.cpp, Register.cpp and RegisterID.cpp. |
| 3000 | |
| 3001 | * GNUmakefile.am: |
| 3002 | * JavaScriptCore.pri: |
| 3003 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3004 | * JavaScriptCoreSources.bkl: |
| 3005 | * VM/Instruction.cpp: Removed. |
| 3006 | * VM/LabelID.cpp: Removed. |
| 3007 | * VM/Register.cpp: Removed. |
| 3008 | * VM/RegisterID.cpp: Removed. |
| 3009 | |
| 3010 | 2008-06-30 Sam Weinig <sam@webkit.org> |
| 3011 | |
| 3012 | Rubber-stamped (reluctantly) by Kevin McCullough. |
| 3013 | |
| 3014 | Rename date_object.h/cpp to DateInstance.h/cpp |
| 3015 | |
| 3016 | * GNUmakefile.am: |
| 3017 | * JavaScriptCore.pri: |
| 3018 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3019 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3020 | * JavaScriptCoreSources.bkl: |
| 3021 | * kjs/AllInOneFile.cpp: |
| 3022 | * kjs/DateConstructor.cpp: |
| 3023 | * kjs/DateInstance.cpp: Copied from kjs/date_object.cpp. |
| 3024 | * kjs/DateInstance.h: Copied from kjs/date_object.h. |
| 3025 | * kjs/DatePrototype.cpp: |
| 3026 | * kjs/DatePrototype.h: |
| 3027 | * kjs/date_object.cpp: Removed. |
| 3028 | * kjs/date_object.h: Removed. |
| 3029 | |
| 3030 | 2008-06-30 Sam Weinig <sam@webkit.org> |
| 3031 | |
| 3032 | Rubber-stamped by Darin Adler. |
| 3033 | |
| 3034 | Remove internal.cpp and move its contents to there own .cpp files. |
| 3035 | |
| 3036 | * GNUmakefile.am: |
| 3037 | * JavaScriptCore.pri: |
| 3038 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3039 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3040 | * JavaScriptCoreSources.bkl: |
| 3041 | * kjs/AllInOneFile.cpp: |
| 3042 | * kjs/GetterSetter.cpp: Copied from kjs/internal.cpp. |
| 3043 | * kjs/InternalFunction.cpp: Copied from kjs/internal.cpp. |
| 3044 | * kjs/JSNumberCell.cpp: Copied from kjs/internal.cpp. |
| 3045 | * kjs/JSString.cpp: Copied from kjs/internal.cpp. |
| 3046 | * kjs/JSString.h: |
| 3047 | * kjs/LabelStack.cpp: Copied from kjs/internal.cpp. |
| 3048 | * kjs/NumberConstructor.cpp: |
| 3049 | * kjs/NumberObject.cpp: |
| 3050 | (KJS::constructNumber): |
| 3051 | (KJS::constructNumberFromImmediateNumber): |
| 3052 | * kjs/internal.cpp: Removed. |
| 3053 | |
| 3054 | 2008-06-30 Adam Roben <aroben@apple.com> |
| 3055 | |
| 3056 | Fix <rdar://5954749> Assertion failure due to HashTable's use of |
| 3057 | operator& |
| 3058 | |
| 3059 | HashTable was passing &value to constructDeletedValue, which in |
| 3060 | classes like WebCore::COMPtr would cause an assertion. We now pass |
| 3061 | value by reference instead of by address so that the HashTraits |
| 3062 | implementations have more flexibility in constructing the deleted |
| 3063 | value. |
| 3064 | |
| 3065 | Reviewed by Ada Chan. |
| 3066 | |
| 3067 | * VM/CodeGenerator.h: Updated for changes to HashTraits. |
| 3068 | * wtf/HashTable.h: |
| 3069 | (WTF::::deleteBucket): Changed to pass bucket by reference instead of |
| 3070 | by address. |
| 3071 | (WTF::::checkKey): Ditto. |
| 3072 | * wtf/HashTraits.h: |
| 3073 | (WTF::): Updated HashTraits for HashTable change. |
| 3074 | |
| 3075 | 2008-07-01 Alexey Proskuryakov <ap@webkit.org> |
| 3076 | |
| 3077 | Reviewed by Cameron Zwarich. |
| 3078 | |
| 3079 | Make RegisterFile really unmap memory on destruction. |
| 3080 | |
| 3081 | This fixes run-webkit-tests --threaded, which ran out of address space in a few seconds. |
| 3082 | |
| 3083 | * VM/RegisterFile.cpp: (KJS::RegisterFile::~RegisterFile): Unmap all the memory, not just |
| 3084 | 1/4 of it. |
| 3085 | |
| 3086 | * kjs/JSGlobalObject.h: Don't include RegisterFile.h, so that changes to it don't make |
| 3087 | half of WebCore rebuild. |
| 3088 | |
| 3089 | * VM/Machine.h: Don't forward declare RegisterFile, as RegisterFile.h is included already. |
| 3090 | |
| 3091 | * VM/RegisterFile.h: (KJS::RegisterFile::RegisterFile): Assert that the allocation succeeded. |
| 3092 | |
| 3093 | 2008-06-30 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 3094 | |
| 3095 | Rubber-stamped by Oliver. |
| 3096 | |
| 3097 | Correct the documentation for op_put_by_index. |
| 3098 | |
| 3099 | * VM/Machine.cpp: |
| 3100 | (KJS::Machine::privateExecute): |
| 3101 | |
| 3102 | 2008-06-29 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 3103 | |
| 3104 | Reviewed by Oliver. |
| 3105 | |
| 3106 | Bug 19821: Merge the instruction pair (less, jfalse) |
| 3107 | <https://bugs.webkit.org/show_bug.cgi?id=19821> |
| 3108 | |
| 3109 | This is a 2.4% win on SunSpider. I needed to add an ALWAYS_INLINE |
| 3110 | intrinisc to CodeGenerator::rewindBinaryOp() to avoid a massive |
| 3111 | regression in regexp-dna. |
| 3112 | |
| 3113 | * VM/CodeBlock.cpp: |
| 3114 | (KJS::CodeBlock::dump): |
| 3115 | * VM/CodeGenerator.cpp: |
| 3116 | (KJS::CodeGenerator::rewindBinaryOp): |
| 3117 | (KJS::CodeGenerator::emitJumpIfFalse): |
| 3118 | * VM/Machine.cpp: |
| 3119 | (KJS::Machine::privateExecute): |
| 3120 | * VM/Opcode.cpp: |
| 3121 | (KJS::): |
| 3122 | * VM/Opcode.h: |
| 3123 | |
| 3124 | 2008-06-29 Sam Weinig <sam@webkit.org> |
| 3125 | |
| 3126 | Fix non-AllInOne builds. |
| 3127 | |
| 3128 | * kjs/JSObject.cpp: |
| 3129 | * kjs/JSValue.cpp: |
| 3130 | |
| 3131 | 2008-06-29 Sam Weinig <sam@webkit.org> |
| 3132 | |
| 3133 | Build fix for Qt. |
| 3134 | |
| 3135 | * kjs/DateMath.cpp: |
| 3136 | * kjs/DatePrototype.cpp: |
| 3137 | |
| 3138 | 2008-06-29 Sam Weinig <sam@webkit.org> |
| 3139 | |
| 3140 | Rubber-stamped by Cameron Zwarich. |
| 3141 | |
| 3142 | Splits ErrorConstructor, ErrorPrototype, NativeErrorConstructor and |
| 3143 | NativeErrorPrototype out of error_object.h/cpp and renames it ErrorInstance. |
| 3144 | |
| 3145 | * GNUmakefile.am: |
| 3146 | * JavaScriptCore.pri: |
| 3147 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3148 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3149 | * JavaScriptCoreSources.bkl: |
| 3150 | * kjs/AllInOneFile.cpp: |
| 3151 | * kjs/ArrayConstructor.cpp: |
| 3152 | * kjs/ArrayPrototype.cpp: |
| 3153 | * kjs/BooleanPrototype.cpp: |
| 3154 | * kjs/DatePrototype.cpp: |
| 3155 | * kjs/ErrorConstructor.cpp: Copied from kjs/error_object.cpp. |
| 3156 | * kjs/ErrorConstructor.h: Copied from kjs/error_object.h. |
| 3157 | * kjs/ErrorInstance.cpp: Copied from kjs/error_object.cpp. |
| 3158 | * kjs/ErrorInstance.h: Copied from kjs/error_object.h. |
| 3159 | * kjs/ErrorPrototype.cpp: Copied from kjs/error_object.cpp. |
| 3160 | * kjs/ErrorPrototype.h: Copied from kjs/error_object.h. |
| 3161 | * kjs/JSGlobalObject.cpp: |
| 3162 | * kjs/JSObject.cpp: |
| 3163 | * kjs/JSValue.cpp: |
| 3164 | * kjs/NativeErrorConstructor.cpp: Copied from kjs/error_object.cpp. |
| 3165 | * kjs/NativeErrorConstructor.h: Copied from kjs/error_object.h. |
| 3166 | * kjs/NativeErrorPrototype.cpp: Copied from kjs/error_object.cpp. |
| 3167 | * kjs/NativeErrorPrototype.h: Copied from kjs/error_object.h. |
| 3168 | * kjs/NumberPrototype.cpp: |
| 3169 | * kjs/RegExpConstructor.cpp: |
| 3170 | * kjs/RegExpObject.cpp: |
| 3171 | * kjs/RegExpPrototype.cpp: |
| 3172 | * kjs/StringPrototype.cpp: |
| 3173 | * kjs/error_object.cpp: Removed. |
| 3174 | * kjs/error_object.h: Removed. |
| 3175 | * kjs/internal.cpp: |
| 3176 | |
| 3177 | 2008-06-29 Sam Weinig <sam@webkit.org> |
| 3178 | |
| 3179 | Fix non-AllInOne build. |
| 3180 | |
| 3181 | * kjs/DateConstructor.cpp: |
| 3182 | * kjs/DateMath.cpp: |
| 3183 | * kjs/JSObject.cpp: |
| 3184 | |
| 3185 | 2008-06-29 Sam Weinig <sam@webkit.org> |
| 3186 | |
| 3187 | Rubber-stamped by Oliver Hunt. |
| 3188 | |
| 3189 | Splits DateConstructor and DatePrototype out of date_object.h/cpp |
| 3190 | Moves shared Date code into DateMath. |
| 3191 | |
| 3192 | * DerivedSources.make: |
| 3193 | * GNUmakefile.am: |
| 3194 | * JavaScriptCore.pri: |
| 3195 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3196 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3197 | * JavaScriptCoreSources.bkl: |
| 3198 | * kjs/AllInOneFile.cpp: |
| 3199 | * kjs/DateConstructor.cpp: Copied from kjs/date_object.cpp. |
| 3200 | * kjs/DateConstructor.h: Copied from kjs/date_object.h. |
| 3201 | * kjs/DateMath.cpp: |
| 3202 | (KJS::ymdhmsToSeconds): |
| 3203 | (KJS::): |
| 3204 | (KJS::skipSpacesAndComments): |
| 3205 | (KJS::findMonth): |
| 3206 | (KJS::parseDate): |
| 3207 | (KJS::timeClip): |
| 3208 | (KJS::formatDate): |
| 3209 | (KJS::formatDateUTCVariant): |
| 3210 | (KJS::formatTime): |
| 3211 | * kjs/DateMath.h: |
| 3212 | (KJS::gmtoffset): |
| 3213 | * kjs/DatePrototype.cpp: Copied from kjs/date_object.cpp. |
| 3214 | * kjs/DatePrototype.h: Copied from kjs/date_object.h. |
| 3215 | * kjs/JSGlobalObject.cpp: |
| 3216 | * kjs/JSObject.cpp: |
| 3217 | * kjs/date_object.cpp: |
| 3218 | * kjs/date_object.h: |
| 3219 | * kjs/internal.cpp: |
| 3220 | |
| 3221 | 2008-06-29 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 3222 | |
| 3223 | Rubber-stamped by Cameron Zwarich |
| 3224 | |
| 3225 | Fix Gtk non-AllInOne build |
| 3226 | |
| 3227 | * GNUmakefile.am: include JSVariableObject.cpp |
| 3228 | * kjs/RegExpConstructor.cpp: include RegExpObject.h |
| 3229 | * kjs/RegExpObject.h: forward declare RegExpPrototype |
| 3230 | |
| 3231 | 2008-06-28 Darin Adler <darin@apple.com> |
| 3232 | |
| 3233 | Reviewed by Sam and Cameron. |
| 3234 | |
| 3235 | - fix https://bugs.webkit.org/show_bug.cgi?id=19805 |
| 3236 | Array.concat turns missing array elements into "undefined" |
| 3237 | |
| 3238 | Test: fast/js/array-holes.html |
| 3239 | |
| 3240 | * JavaScriptCore.exp: No longer export JSArray::getItem. |
| 3241 | |
| 3242 | * kjs/ArrayPrototype.cpp: |
| 3243 | (KJS::arrayProtoFuncConcat): Changed to use getProperty instead of |
| 3244 | JSArray::getItem -- need to handle properties from the prototype chain |
| 3245 | instead of ignoring them. |
| 3246 | |
| 3247 | * kjs/JSArray.cpp: Removed getItem. |
| 3248 | * kjs/JSArray.h: Ditto. |
| 3249 | |
| 3250 | 2008-06-28 Darin Adler <darin@apple.com> |
| 3251 | |
| 3252 | Reviewed by Cameron. |
| 3253 | |
| 3254 | - https://bugs.webkit.org/show_bug.cgi?id=19804 |
| 3255 | optimize access to arrays without "holes" |
| 3256 | |
| 3257 | SunSpider says 1.8% faster. |
| 3258 | |
| 3259 | * kjs/JSArray.cpp: |
| 3260 | (KJS::JSArray::JSArray): Initialize m_fastAccessCutoff when creating |
| 3261 | arrays. Also updated for new location of m_vectorLength. |
| 3262 | (KJS::JSArray::getItem): Updated for new location of m_vectorLength. |
| 3263 | (KJS::JSArray::getSlowCase): Added. Broke out the non-hot parts of |
| 3264 | getOwnPropertySlot to make the hot part faster. |
| 3265 | (KJS::JSArray::getOwnPropertySlot): Added a new faster case for |
| 3266 | indices lower than m_fastAccessCutoff. We can do theese with no |
| 3267 | additional checks or branches. |
| 3268 | (KJS::JSArray::put): Added a new faster case for indices lower than |
| 3269 | m_fastAccessCutoff. We can do theese with no additional checks or |
| 3270 | branches. Moved the maxArrayIndex handling out of this function. |
| 3271 | Added code to set m_fastAccessCutoff when the very last hole in |
| 3272 | an array is filled; this is how the cutoff gets set for most arrays. |
| 3273 | (KJS::JSArray::putSlowCase): Moved the rest of the put function logic |
| 3274 | in here, to make the hot part of the put function faster. |
| 3275 | (KJS::JSArray::deleteProperty): Added code to lower m_fastAccessCutoff |
| 3276 | when a delete makes a new hole in the array. |
| 3277 | (KJS::JSArray::getPropertyNames): Updated for new location of |
| 3278 | m_vectorLength. |
| 3279 | (KJS::JSArray::increaseVectorLength): Ditto. |
| 3280 | (KJS::JSArray::setLength): Added code to lower m_fastAccessCutoff |
| 3281 | when setLength makes the array smaller. |
| 3282 | (KJS::JSArray::mark): Updated for new location of m_vectorLength. |
| 3283 | (KJS::JSArray::sort): Ditto. Set m_fastAccessCutoff after moving |
| 3284 | all the holes to the end of the array. |
| 3285 | (KJS::JSArray::compactForSorting): Ditto. |
| 3286 | (KJS::JSArray::checkConsistency): Added consistency checks fro |
| 3287 | m_fastAccessCutoff and updated for the new location of m_vectorLength. |
| 3288 | |
| 3289 | * kjs/JSArray.h: Added declarations for slow case functions. |
| 3290 | Replaced m_vectorLength with m_fastAccessCutoff. |
| 3291 | |
| 3292 | 2008-06-28 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 3293 | |
| 3294 | Reviewed by Sam. |
| 3295 | |
| 3296 | When executing a native call, check for an exception before writing the |
| 3297 | return value. |
| 3298 | |
| 3299 | * VM/Machine.cpp: |
| 3300 | (KJS::Machine::privateExecute): |
| 3301 | |
| 3302 | 2008-06-28 Mark Rowe <mrowe@apple.com> |
| 3303 | |
| 3304 | Build fix. Flag headers as private or public as is appropriate. |
| 3305 | These settings were accidentally removed during some project file cleanup. |
| 3306 | |
| 3307 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3308 | |
| 3309 | 2008-06-28 Sam Weinig <sam@webkit.org> |
| 3310 | |
| 3311 | Rubber-stamped by Darin Adler. |
| 3312 | |
| 3313 | Splits RegExpConstructor and RegExpPrototype out of RegExpObject.h/cpp |
| 3314 | |
| 3315 | * DerivedSources.make: |
| 3316 | * GNUmakefile.am: |
| 3317 | * JavaScriptCore.pri: |
| 3318 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3319 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3320 | * JavaScriptCoreSources.bkl: |
| 3321 | * VM/Machine.cpp: |
| 3322 | * kjs/AllInOneFile.cpp: |
| 3323 | * kjs/JSGlobalObject.cpp: |
| 3324 | * kjs/RegExpConstructor.cpp: Copied from kjs/RegExpObject.cpp. |
| 3325 | * kjs/RegExpConstructor.h: Copied from kjs/RegExpObject.h. |
| 3326 | * kjs/RegExpObject.cpp: |
| 3327 | * kjs/RegExpObject.h: |
| 3328 | * kjs/RegExpPrototype.cpp: Copied from kjs/RegExpObject.cpp. |
| 3329 | * kjs/RegExpPrototype.h: Copied from kjs/RegExpObject.h. |
| 3330 | * kjs/StringPrototype.cpp: |
| 3331 | * kjs/internal.cpp: |
| 3332 | |
| 3333 | 2008-06-28 Sam Weinig <sam@webkit.org> |
| 3334 | |
| 3335 | Fix non-AllInOne builds. |
| 3336 | |
| 3337 | * kjs/StringConstructor.cpp: |
| 3338 | |
| 3339 | 2008-06-28 Sam Weinig <sam@webkit.org> |
| 3340 | |
| 3341 | Rubber-stamped by Darin Adler. |
| 3342 | |
| 3343 | Rename string_object.h/cpp to StringObject.h/cpp and split out StringObjectThatMasqueradesAsUndefined, |
| 3344 | StringConstructor and StringPrototype. |
| 3345 | |
| 3346 | * DerivedSources.make: |
| 3347 | * GNUmakefile.am: |
| 3348 | * JavaScriptCore.pri: |
| 3349 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3350 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3351 | * JavaScriptCoreSources.bkl: |
| 3352 | * kjs/AllInOneFile.cpp: |
| 3353 | * kjs/JSGlobalObject.cpp: |
| 3354 | * kjs/StringConstructor.cpp: Copied from JavaScriptCore/kjs/string_object.cpp. |
| 3355 | * kjs/StringConstructor.h: Copied from JavaScriptCore/kjs/string_object.h. |
| 3356 | * kjs/StringObject.cpp: Copied from JavaScriptCore/kjs/string_object.cpp. |
| 3357 | * kjs/StringObject.h: Copied from JavaScriptCore/kjs/string_object.h. |
| 3358 | * kjs/StringObjectThatMasqueradesAsUndefined.h: Copied from JavaScriptCore/kjs/string_object.h. |
| 3359 | * kjs/StringPrototype.cpp: Copied from JavaScriptCore/kjs/string_object.cpp. |
| 3360 | * kjs/StringPrototype.h: Copied from JavaScriptCore/kjs/string_object.h. |
| 3361 | * kjs/internal.cpp: |
| 3362 | * kjs/string_object.cpp: Removed. |
| 3363 | * kjs/string_object.h: Removed. |
| 3364 | |
| 3365 | 2008-06-28 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 3366 | |
| 3367 | Gtk build fix: JSVariableObject is now part of AllInOne |
| 3368 | |
| 3369 | * GNUmakefile.am: |
| 3370 | |
| 3371 | 2008-06-28 Darin Adler <darin@apple.com> |
| 3372 | |
| 3373 | Reviewed by Oliver. |
| 3374 | |
| 3375 | - https://bugs.webkit.org/show_bug.cgi?id=19801 |
| 3376 | add a feature so we can tell what regular expressions are taking time |
| 3377 | |
| 3378 | * pcre/pcre_compile.cpp: |
| 3379 | (jsRegExpCompile): Compile in the string if REGEXP_HISTOGRAM is on. |
| 3380 | |
| 3381 | * pcre/pcre_exec.cpp: |
| 3382 | (jsRegExpExecute): Add hook to time execution. |
| 3383 | (Histogram::~Histogram): Print a sorted list of what took time. |
| 3384 | (Histogram::add): Accumulate records of what took time. |
| 3385 | (HistogramTimeLogger::~HistogramTimeLogger): Hook that calls |
| 3386 | Histogram::add at the right moment and creates the global histogram |
| 3387 | object. |
| 3388 | |
| 3389 | * pcre/pcre_internal.h: Define REGEXP_HISTOGRAM. |
| 3390 | |
| 3391 | * pcre/pcre_tables.cpp: Added missing include of "config.h". Not needed |
| 3392 | any more, but an omissions an earlier version of this patch detected. |
| 3393 | * pcre/pcre_ucp_searchfuncs.cpp: Ditto. |
| 3394 | * pcre/pcre_xclass.cpp: Ditto. |
| 3395 | |
| 3396 | 2008-06-28 Sam Weinig <sam@webkit.org> |
| 3397 | |
| 3398 | Try and fix the Windows build again. |
| 3399 | |
| 3400 | * kjs/RegExpObject.cpp: |
| 3401 | * kjs/date_object.cpp: |
| 3402 | * kjs/error_object.cpp: |
| 3403 | |
| 3404 | 2008-06-28 Sam Weinig <sam@webkit.org> |
| 3405 | |
| 3406 | Rubber-stamped by Darin Adler. |
| 3407 | |
| 3408 | Remove unused StringConstructorFunction class. |
| 3409 | |
| 3410 | * kjs/string_object.h: |
| 3411 | |
| 3412 | 2008-06-28 Sam Weinig <sam@webkit.org> |
| 3413 | |
| 3414 | Fix windows build. |
| 3415 | |
| 3416 | * kjs/ArrayPrototype.cpp: |
| 3417 | * kjs/BooleanPrototype.cpp: |
| 3418 | * kjs/BooleanPrototype.h: |
| 3419 | * kjs/FunctionPrototype.cpp: |
| 3420 | * kjs/JSImmediate.cpp: |
| 3421 | * kjs/JSObject.cpp: |
| 3422 | * kjs/MathObject.cpp: |
| 3423 | * kjs/NumberPrototype.cpp: |
| 3424 | * kjs/NumberPrototype.h: |
| 3425 | * kjs/ObjectConstructor.cpp: |
| 3426 | * kjs/RegExpObject.h: |
| 3427 | * kjs/error_object.h: |
| 3428 | * kjs/string_object.cpp: |
| 3429 | |
| 3430 | 2008-06-28 Sam Weinig <sam@webkit.org> |
| 3431 | |
| 3432 | Rubber-stamped by Oliver Hunt. |
| 3433 | |
| 3434 | Splits FunctionConstructor out of FunctionPrototype.h/cpp |
| 3435 | Splits NumberConstructor and NumberPrototype out of NumberObject.h/cpp |
| 3436 | Rename object_object.h/cpp to ObjectPrototype.h/cpp and split out ObjectConstructor. |
| 3437 | |
| 3438 | * API/JSCallbackConstructor.cpp: |
| 3439 | * API/JSClassRef.cpp: |
| 3440 | * API/JSObjectRef.cpp: |
| 3441 | * DerivedSources.make: |
| 3442 | * GNUmakefile.am: |
| 3443 | * JavaScriptCore.pri: |
| 3444 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3445 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3446 | * JavaScriptCoreSources.bkl: |
| 3447 | * VM/Machine.cpp: |
| 3448 | * kjs/AllInOneFile.cpp: |
| 3449 | * kjs/ArrayConstructor.cpp: |
| 3450 | * kjs/ArrayConstructor.h: |
| 3451 | * kjs/FunctionConstructor.cpp: Copied from JavaScriptCore/kjs/FunctionPrototype.cpp. |
| 3452 | * kjs/FunctionConstructor.h: Copied from JavaScriptCore/kjs/FunctionPrototype.h. |
| 3453 | * kjs/FunctionPrototype.cpp: |
| 3454 | * kjs/FunctionPrototype.h: |
| 3455 | * kjs/JSFunction.cpp: |
| 3456 | * kjs/JSGlobalObject.cpp: |
| 3457 | * kjs/JSImmediate.cpp: |
| 3458 | * kjs/MathObject.h: |
| 3459 | * kjs/NumberConstructor.cpp: Copied from JavaScriptCore/kjs/NumberObject.cpp. |
| 3460 | * kjs/NumberConstructor.h: Copied from JavaScriptCore/kjs/NumberObject.h. |
| 3461 | * kjs/NumberObject.cpp: |
| 3462 | * kjs/NumberObject.h: |
| 3463 | * kjs/NumberPrototype.cpp: Copied from JavaScriptCore/kjs/NumberObject.cpp. |
| 3464 | * kjs/NumberPrototype.h: Copied from JavaScriptCore/kjs/NumberObject.h. |
| 3465 | * kjs/ObjectConstructor.cpp: Copied from JavaScriptCore/kjs/object_object.cpp. |
| 3466 | * kjs/ObjectConstructor.h: Copied from JavaScriptCore/kjs/object_object.h. |
| 3467 | * kjs/ObjectPrototype.cpp: Copied from JavaScriptCore/kjs/object_object.cpp. |
| 3468 | * kjs/ObjectPrototype.h: Copied from JavaScriptCore/kjs/object_object.h. |
| 3469 | * kjs/RegExpObject.h: |
| 3470 | * kjs/Shell.cpp: |
| 3471 | * kjs/error_object.h: |
| 3472 | * kjs/internal.cpp: |
| 3473 | * kjs/nodes.cpp: |
| 3474 | * kjs/object_object.cpp: Removed. |
| 3475 | * kjs/object_object.h: Removed. |
| 3476 | * kjs/string_object.h: |
| 3477 | |
| 3478 | 2008-06-28 Darin Adler <darin@apple.com> |
| 3479 | |
| 3480 | Reviewed by Oliver. |
| 3481 | |
| 3482 | - fix https://bugs.webkit.org/show_bug.cgi?id=19796 |
| 3483 | optimize expressions with ignored results (especially post-increment) |
| 3484 | |
| 3485 | SunSpider says 0.9% faster. |
| 3486 | |
| 3487 | * VM/CodeGenerator.h: |
| 3488 | (KJS::CodeGenerator::tempDestination): Create a new temporary for |
| 3489 | ignoredResult() too, just as we would for 0. |
| 3490 | (KJS::CodeGenerator::finalDestination): Use the temporary if the |
| 3491 | register passed in is ignoredResult() too, just as we would for 0. |
| 3492 | (KJS::CodeGenerator::destinationForAssignResult): Return 0 if the |
| 3493 | passed in register is ignoredResult(), just as we would for 0. |
| 3494 | (KJS::CodeGenerator::moveToDestinationIfNeeded): Return 0 if the |
| 3495 | register passed in is ignoredResult(). What matters is that we |
| 3496 | don't want to emit a move. The return value won't be looked at. |
| 3497 | (KJS::CodeGenerator::emitNode): Allow ignoredResult() and pass it |
| 3498 | through to the node's emitCode function. |
| 3499 | |
| 3500 | * VM/RegisterID.h: |
| 3501 | (KJS::ignoredResult): Added. Special value to indicate the result of |
| 3502 | a node will be ignored and need not be put in any register. |
| 3503 | |
| 3504 | * kjs/nodes.cpp: |
| 3505 | (KJS::NullNode::emitCode): Do nothing if dst == ignoredResult(). |
| 3506 | (KJS::BooleanNode::emitCode): Ditto. |
| 3507 | (KJS::NumberNode::emitCode): Ditto. |
| 3508 | (KJS::StringNode::emitCode): Ditto. |
| 3509 | (KJS::RegExpNode::emitCode): Ditto. |
| 3510 | (KJS::ThisNode::emitCode): Ditto. |
| 3511 | (KJS::ResolveNode::emitCode): Do nothing if dst == ignoredResult() and |
| 3512 | the identifier resolves to a local variable. |
| 3513 | (KJS::ObjectLiteralNode::emitCode): Do nothing if dst == ignoredResult() |
| 3514 | and the object is empty. |
| 3515 | (KJS::PostIncResolveNode::emitCode): If dst == ignoredResult(), then do |
| 3516 | nothing for the local constant case, and do a pre-increment in all the |
| 3517 | other cases. |
| 3518 | (KJS::PostDecResolveNode::emitCode): Ditto. |
| 3519 | (KJS::PostIncBracketNode::emitCode): Ditto. |
| 3520 | (KJS::PostDecBracketNode::emitCode): Ditto. |
| 3521 | (KJS::PostIncDotNode::emitCode): Ditto. |
| 3522 | (KJS::PostDecDotNode::emitCode): Ditto. |
| 3523 | (KJS::DeleteValueNode::emitCode): Pass ignoredResult() when evaluating |
| 3524 | the expression. |
| 3525 | (KJS::VoidNode::emitCode): Ditto. |
| 3526 | (KJS::TypeOfResolveNode::emitCode): If dst == ignoredResult(), do nothing |
| 3527 | if the identifier resolves to a local variable, and don't bother generating |
| 3528 | a typeof opcode in the other case. |
| 3529 | (KJS::TypeOfValueNode::emitCode): Ditto. |
| 3530 | (KJS::PreIncResolveNode::emitCode): Do nothing if dst == ignoredResult() and |
| 3531 | the identifier resolves to a local constant. |
| 3532 | (KJS::PreDecResolveNode::emitCode): Ditto. |
| 3533 | (KJS::AssignResolveNode::emitCode): Turn ignoredResult() into 0 in a couple |
| 3534 | places, because we need to put the result into a register so we can assign |
| 3535 | it. At other sites this is taken care of by functions like finalDestination. |
| 3536 | (KJS::CommaNode::emitCode): Pass ignoredResult() when evaluating the first |
| 3537 | expression. |
| 3538 | (KJS::ForNode::emitCode): Pass ignoredResult() when evaluating the first and |
| 3539 | third expressions. |
| 3540 | (KJS::ForInNode::emitCode): Pass ignoredResult() when evaluating the first |
| 3541 | expression. |
| 3542 | |
| 3543 | 2008-06-28 Darin Adler <darin@apple.com> |
| 3544 | |
| 3545 | Reviewed by Oliver. |
| 3546 | |
| 3547 | - https://bugs.webkit.org/show_bug.cgi?id=19787 |
| 3548 | create most arrays from values in registers rather than with multiple put operations |
| 3549 | |
| 3550 | SunSpider says 0.8% faster. |
| 3551 | |
| 3552 | * VM/CodeBlock.cpp: |
| 3553 | (KJS::CodeBlock::dump): Added argv and argc parameters to new_array. |
| 3554 | * VM/Machine.cpp: |
| 3555 | (KJS::Machine::privateExecute): Ditto. |
| 3556 | |
| 3557 | * VM/CodeGenerator.cpp: |
| 3558 | (KJS::CodeGenerator::emitNewArray): Added. |
| 3559 | * VM/CodeGenerator.h: Added ElementNode* argument to emitNewArray. |
| 3560 | |
| 3561 | * kjs/nodes.cpp: |
| 3562 | (KJS::ArrayNode::emitCode): Pass the ElementNode to emitNewArray so it can be |
| 3563 | initialized with as many elements as possible. If the array doesn't have any |
| 3564 | holes in it, that's all that's needed. If there are holes, then emit some separate |
| 3565 | put operations for the other values in the array and for the length as needed. |
| 3566 | |
| 3567 | * kjs/nodes.h: Added some accessors to ElementNode so the code generator can |
| 3568 | iterate through elements and generate code to evaluate them. Now ArrayNode does |
| 3569 | not need to be a friend. Also took out some unused PlacementNewAdoptType |
| 3570 | constructors. |
| 3571 | |
| 3572 | 2008-06-28 Darin Adler <darin@apple.com> |
| 3573 | |
| 3574 | Reviewed by Oliver. |
| 3575 | |
| 3576 | * kjs/nodes.h: Remove obsolete PlacementNewAdopt constructors. |
| 3577 | We no longer mutate the AST in place. |
| 3578 | |
| 3579 | 2008-06-28 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 3580 | |
| 3581 | Reviewed by Oliver Hunt. |
| 3582 | |
| 3583 | Build fix |
| 3584 | |
| 3585 | * VM/Machine.cpp: include stdio.h for printf |
| 3586 | |
| 3587 | 2008-06-27 Sam Weinig <sam@webkit.org> |
| 3588 | |
| 3589 | Reviewed by Oliver Hunt. |
| 3590 | |
| 3591 | Fix platforms that don't use AllInOne.cpp |
| 3592 | |
| 3593 | * kjs/BooleanConstructor.h: |
| 3594 | * kjs/BooleanPrototype.h: |
| 3595 | * kjs/FunctionPrototype.cpp: |
| 3596 | |
| 3597 | 2008-06-27 Sam Weinig <sam@webkit.org> |
| 3598 | |
| 3599 | Rubber-stamped by Oliver Hunt. |
| 3600 | |
| 3601 | Splits ArrayConstructor out of ArrayPrototype.h/cpp |
| 3602 | Splits BooleanConstructor and BooleanPrototype out of BooleanObject.h/cpp |
| 3603 | |
| 3604 | * GNUmakefile.am: |
| 3605 | * JavaScriptCore.pri: |
| 3606 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3607 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 3608 | * JavaScriptCoreSources.bkl: |
| 3609 | * VM/Machine.cpp: |
| 3610 | * kjs/AllInOneFile.cpp: |
| 3611 | * kjs/ArrayConstructor.cpp: Copied from kjs/ArrayPrototype.cpp. |
| 3612 | * kjs/ArrayConstructor.h: Copied from kjs/ArrayPrototype.h. |
| 3613 | * kjs/ArrayPrototype.cpp: |
| 3614 | * kjs/ArrayPrototype.h: |
| 3615 | * kjs/BooleanConstructor.cpp: Copied from kjs/BooleanObject.cpp. |
| 3616 | * kjs/BooleanConstructor.h: Copied from kjs/BooleanObject.h. |
| 3617 | * kjs/BooleanObject.cpp: |
| 3618 | * kjs/BooleanObject.h: |
| 3619 | * kjs/BooleanPrototype.cpp: Copied from kjs/BooleanObject.cpp. |
| 3620 | * kjs/BooleanPrototype.h: Copied from kjs/BooleanObject.h. |
| 3621 | * kjs/CommonIdentifiers.h: |
| 3622 | * kjs/FunctionPrototype.cpp: |
| 3623 | * kjs/JSArray.cpp: |
| 3624 | * kjs/JSGlobalObject.cpp: |
| 3625 | * kjs/JSImmediate.cpp: |
| 3626 | * kjs/Shell.cpp: |
| 3627 | * kjs/internal.cpp: |
| 3628 | * kjs/nodes.cpp: |
| 3629 | * kjs/string_object.cpp: |
| 3630 | |
| 3631 | 2008-06-27 Oliver Hunt <oliver@apple.com> |
| 3632 | |
| 3633 | Reviewed by Sam. |
| 3634 | |
| 3635 | Bug 18626: SQUIRRELFISH: support the "slow script" dialog <https://bugs.webkit.org/show_bug.cgi?id=18626> |
| 3636 | <rdar://problem/5973931> Slow script dialog needs to be reimplemented for squirrelfish |
| 3637 | |
| 3638 | Adds support for the slow script dialog in squirrelfish. This requires the addition |
| 3639 | of three new op codes, op_loop, op_loop_if_true, and op_loop_if_less which have the |
| 3640 | same behaviour as their simple jump equivalents but have an additional time out check. |
| 3641 | |
| 3642 | Additional assertions were added to other jump instructions to prevent accidentally |
| 3643 | creating loops with jump types that do not support time out checks. |
| 3644 | |
| 3645 | Sunspider does not report a regression, however this appears very sensitive to code |
| 3646 | layout and hardware, so i would expect up to a 1% regression on other systems. |
| 3647 | |
| 3648 | Part of this required moving the old timeout logic from JSGlobalObject and into Machine |
| 3649 | which is the cause of a number of the larger diff blocks. |
| 3650 | |
| 3651 | * JavaScriptCore.exp: |
| 3652 | * VM/CodeBlock.cpp: |
| 3653 | (KJS::CodeBlock::dump): |
| 3654 | * VM/CodeGenerator.cpp: |
| 3655 | (KJS::CodeGenerator::emitJumpIfTrue): |
| 3656 | (KJS::CodeGenerator::emitJumpScopes): |
| 3657 | * VM/ExceptionHelpers.cpp: |
| 3658 | (KJS::InterruptedExecutionError::isWatchdogException): |
| 3659 | (KJS::createInterruptedExecutionException): |
| 3660 | * VM/ExceptionHelpers.h: |
| 3661 | * VM/LabelID.h: |
| 3662 | * VM/Machine.cpp: |
| 3663 | (KJS::Machine::Machine): |
| 3664 | (KJS::Machine::throwException): |
| 3665 | (KJS::Machine::resetTimeoutCheck): |
| 3666 | (KJS::getCurrentTime): |
| 3667 | (KJS::Machine::checkTimeout): |
| 3668 | (KJS::Machine::privateExecute): |
| 3669 | * VM/Machine.h: |
| 3670 | (KJS::Machine::setTimeoutTime): |
| 3671 | (KJS::Machine::startTimeoutCheck): |
| 3672 | (KJS::Machine::stopTimeoutCheck): |
| 3673 | (KJS::Machine::initTimeout): |
| 3674 | * VM/Opcode.cpp: |
| 3675 | (KJS::): |
| 3676 | * VM/Opcode.h: |
| 3677 | * kjs/JSGlobalObject.cpp: |
| 3678 | (KJS::JSGlobalObject::init): |
| 3679 | (KJS::JSGlobalObject::setTimeoutTime): |
| 3680 | (KJS::JSGlobalObject::startTimeoutCheck): |
| 3681 | * kjs/JSGlobalObject.h: |
| 3682 | * kjs/JSObject.h: |
| 3683 | * kjs/interpreter.cpp: |
| 3684 | (KJS::Interpreter::evaluate): |
| 3685 | |
| 3686 | 2008-06-27 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 3687 | |
| 3688 | Gtk and Qt build fix: Remove RegisterFileStack from the build |
| 3689 | scripts. |
| 3690 | |
| 3691 | * GNUmakefile.am: |
| 3692 | * JavaScriptCore.pri: |
| 3693 | |
| 3694 | 2008-06-27 Adele Peterson <adele@apple.com> |
| 3695 | |
| 3696 | Reviewed by Geoff. |
| 3697 | |
| 3698 | Build fixes. |
| 3699 | |
| 3700 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 3701 | * VM/RegisterFile.h: |
| 3702 | (KJS::RegisterFile::RegisterFile): |
| 3703 | * kjs/JSGlobalObject.cpp: |
| 3704 | * kjs/collector.cpp: |
| 3705 | |
| 3706 | 2008-06-27 Geoffrey Garen <ggaren@apple.com> |
| 3707 | |
| 3708 | Reviewed by Oliver Hunt. |
| 3709 | |
| 3710 | One RegisterFile to rule them all! |
| 3711 | |
| 3712 | SunSpider reports a 0.2% speedup. |
| 3713 | |
| 3714 | This patch removes the RegisterFileStack abstraction and replaces it with |
| 3715 | a single register file that |
| 3716 | |
| 3717 | (a) allocates a fixed storage area, including a fixed area for global |
| 3718 | vars, so that no operation may cause the register file to reallocate |
| 3719 | |
| 3720 | and |
| 3721 | |
| 3722 | (b) swaps between global storage areas when executing code in different |
| 3723 | global objects. |
| 3724 | |
| 3725 | This patch also changes the layout of the register file so that all call |
| 3726 | frames, including call frames for global code, get a header. This is |
| 3727 | required to support re-entrant global code. It also just makes things simpler. |
| 3728 | |
| 3729 | * VM/CodeGenerator.cpp: |
| 3730 | (KJS::CodeGenerator::addGlobalVar): New function. Differs from addVar in |
| 3731 | that |
| 3732 | |
| 3733 | (a) global vars don't contribute to a CodeBlock's numLocals count, since |
| 3734 | global storage is fixed and allocated at startup |
| 3735 | |
| 3736 | and |
| 3737 | |
| 3738 | (b) references to global vars get shifted to elide intermediate stack |
| 3739 | between "r" and the global storage area. |
| 3740 | |
| 3741 | * VM/Machine.cpp: |
| 3742 | (KJS::Machine::dumpRegisters): Updated this function to match the new |
| 3743 | register file layout, and added the ability to dump exact identifiers |
| 3744 | for the different parts of a call frame. |
| 3745 | |
| 3746 | (KJS::Machine::unwindCallFrame): Updated this function to match the new |
| 3747 | register file layout. |
| 3748 | |
| 3749 | (KJS::Machine::execute): Updated this function to initialize a call frame |
| 3750 | header for global code, and to swap global storage areas when switching |
| 3751 | to execution in a new global object. |
| 3752 | |
| 3753 | (KJS::Machine::privateExecute): Got rid of "safeForReentry" and re-reading |
| 3754 | of registerBase because the register file is always safe for reentry now, |
| 3755 | and registerBase never changes. |
| 3756 | |
| 3757 | * VM/Machine.h: Moved the call frame header enum from Machine to RegisterFile, |
| 3758 | to resolve a header dependency problem (a good sign that the enum belonged |
| 3759 | in RegisterFile all along!) |
| 3760 | |
| 3761 | * VM/RegisterFile.cpp: |
| 3762 | * VM/RegisterFile.h: Changed RegisterFile to mmap a fixed size register |
| 3763 | area. This allows us to avoid re-allocting the register file later on. |
| 3764 | Instead, we rely on the OS to allocate physical pages to the register |
| 3765 | file as necessary. |
| 3766 | |
| 3767 | * VM/RegisterFileStack.cpp: Removed. Tada! |
| 3768 | * VM/RegisterFileStack.h: Removed. Tada! |
| 3769 | |
| 3770 | * kjs/DebuggerCallFrame.cpp: Updated this class to match the new |
| 3771 | register file layout, greatly simplifying it in the process. |
| 3772 | |
| 3773 | * kjs/JSActivation.h: |
| 3774 | * kjs/JSActivation.cpp: Moved some of this logic up to JSVariableObject, |
| 3775 | since the global object now needs to be able to tear off its registers |
| 3776 | just like the activation object. |
| 3777 | |
| 3778 | * kjs/JSFunction.cpp: No need to fiddle with the register file anymore. |
| 3779 | |
| 3780 | * kjs/JSGlobalObject.h: |
| 3781 | * kjs/JSGlobalObject.cpp: Updated JSGlobalObject to support moving its |
| 3782 | global storage area into and out of the register file. |
| 3783 | |
| 3784 | * kjs/PropertySlot.cpp: No need to fiddle with the register file anymore. |
| 3785 | |
| 3786 | * kjs/collector.cpp: Renamed markStackObjectConservatively to |
| 3787 | markConservatively, since we don't just mark stack objects this way. |
| 3788 | |
| 3789 | Also, added code to mark the machine's register file. |
| 3790 | |
| 3791 | * kjs/config.h: Moved some platforms #defines from here... |
| 3792 | * wtf/Platform.h: ...to here, to support mmap/VirtualAlloc detection |
| 3793 | in RegisterFile.h. |
| 3794 | |
| 3795 | 2008-06-26 Mark Rowe <mrowe@apple.com> |
| 3796 | |
| 3797 | Speculative fix for the Windows build. |
| 3798 | |
| 3799 | * kjs/JSImmediate.cpp: |
| 3800 | |
| 3801 | 2008-06-26 Mark Rowe <mrowe@apple.com> |
| 3802 | |
| 3803 | Reviewed by Darin Adler and Geoff Garen. |
| 3804 | |
| 3805 | Fix the malloc zone introspection functions so that malloc_zone_statistics does not give |
| 3806 | bogus output in an application that uses JavaScriptCore. |
| 3807 | |
| 3808 | * kjs/CollectorHeapIntrospector.cpp: |
| 3809 | (KJS::CollectorHeapIntrospector::statistics): Return statistics about memory allocated by the collector. |
| 3810 | * kjs/CollectorHeapIntrospector.h: |
| 3811 | * wtf/FastMalloc.cpp: Zero out the statistics. FastMalloc doesn't track this information at present. |
| 3812 | Returning zero for all values is preferable to returning bogus data. |
| 3813 | |
| 3814 | 2008-06-26 Darin Adler <darin@apple.com> |
| 3815 | |
| 3816 | Reviewed by Geoff. |
| 3817 | |
| 3818 | - https://bugs.webkit.org/show_bug.cgi?id=19721 |
| 3819 | speed up JavaScriptCore by not wrapping strings in objects just |
| 3820 | to call functions on them |
| 3821 | |
| 3822 | - optimize UString append and the replace function a bit |
| 3823 | |
| 3824 | SunSpider says 1.8% faster. |
| 3825 | |
| 3826 | * JavaScriptCore.exp: Updated. |
| 3827 | |
| 3828 | * VM/JSPropertyNameIterator.cpp: Added include of JSString.h, now needed |
| 3829 | because jsString returns a JSString*. |
| 3830 | |
| 3831 | * VM/Machine.cpp: |
| 3832 | (KJS::Machine::privateExecute): Removed the toObject call from native |
| 3833 | function calls. Also removed code to put the this value into a register. |
| 3834 | |
| 3835 | * kjs/BooleanObject.cpp: |
| 3836 | (KJS::booleanProtoFuncToString): Rewrite to handle false and true |
| 3837 | separately. |
| 3838 | |
| 3839 | * kjs/FunctionPrototype.cpp: |
| 3840 | (KJS::constructFunction): Use single-character append rather than building |
| 3841 | a string for each character. |
| 3842 | * kjs/JSFunction.cpp: |
| 3843 | (KJS::globalFuncUnescape): Ditto. |
| 3844 | |
| 3845 | * kjs/JSImmediate.cpp: |
| 3846 | (KJS::JSImmediate::prototype): Added. Gets the appropriate prototype for |
| 3847 | use with an immediate value. To be used instead of toObject when doing a |
| 3848 | get on an immediate value. |
| 3849 | * kjs/JSImmediate.h: Added prototype. |
| 3850 | |
| 3851 | * kjs/JSObject.cpp: |
| 3852 | (KJS::JSObject::toString): Tweaked formatting. |
| 3853 | |
| 3854 | * kjs/JSObject.h: |
| 3855 | (KJS::JSValue::get): Use prototype instead of toObject to avoid creating |
| 3856 | an object wrapper just to search for properties. This also saves an |
| 3857 | unnecessary hash table lookup since the object wrappers themselves don't |
| 3858 | have any properties. |
| 3859 | |
| 3860 | * kjs/JSString.h: Added toThisString and toThisJSString. |
| 3861 | |
| 3862 | * kjs/JSValue.cpp: |
| 3863 | (KJS::JSCell::toThisString): Added. |
| 3864 | (KJS::JSCell::toThisJSString): Added. |
| 3865 | (KJS::JSCell::getJSNumber): Added. |
| 3866 | (KJS::jsString): Changed return type to JSString*. |
| 3867 | (KJS::jsOwnedString): Ditto. |
| 3868 | |
| 3869 | * kjs/JSValue.h: |
| 3870 | (KJS::JSValue::toThisString): Added. |
| 3871 | (KJS::JSValue::toThisJSString): Added. |
| 3872 | (KJS::JSValue::getJSNumber): Added. |
| 3873 | |
| 3874 | * kjs/NumberObject.cpp: |
| 3875 | (KJS::NumberObject::getJSNumber): Added. |
| 3876 | (KJS::integer_part_noexp): Append C string directly rather than first |
| 3877 | turning it into a UString. |
| 3878 | (KJS::numberProtoFuncToString): Use getJSNumber to check if the value |
| 3879 | is a number rather than isObject(&NumberObject::info). This works for |
| 3880 | immediate numbers, number cells, and NumberObject instances. |
| 3881 | (KJS::numberProtoFuncToLocaleString): Ditto. |
| 3882 | (KJS::numberProtoFuncValueOf): Ditto. |
| 3883 | (KJS::numberProtoFuncToFixed): Ditto. |
| 3884 | (KJS::numberProtoFuncToExponential): Ditto. |
| 3885 | (KJS::numberProtoFuncToPrecision): Ditto. |
| 3886 | * kjs/NumberObject.h: Added getJSNumber. |
| 3887 | |
| 3888 | * kjs/PropertySlot.cpp: Tweaked comment. |
| 3889 | |
| 3890 | * kjs/internal.cpp: |
| 3891 | (KJS::JSString::toThisString): Added. |
| 3892 | (KJS::JSString::toThisJSString): Added. |
| 3893 | (KJS::JSString::getOwnPropertySlot): Changed code that searches the |
| 3894 | prototype chain to start with the string prototype and not create a |
| 3895 | string object. |
| 3896 | (KJS::JSNumberCell::toThisString): Added. |
| 3897 | (KJS::JSNumberCell::getJSNumber): Added. |
| 3898 | |
| 3899 | * kjs/lookup.cpp: |
| 3900 | (KJS::staticFunctionGetter): Moved here, because there's no point in |
| 3901 | having a function that's only used for a function pointer be inline. |
| 3902 | (KJS::setUpStaticFunctionSlot): New function for getStaticFunctionSlot. |
| 3903 | |
| 3904 | * kjs/lookup.h: |
| 3905 | (KJS::staticValueGetter): Don't mark this inline. It doesn't make sense |
| 3906 | to have a function that's only used for a function pointer be inline. |
| 3907 | (KJS::getStaticFunctionSlot): Changed to get properties from the parent |
| 3908 | first before doing any handling of functions. This is the fastest way |
| 3909 | to return the function once the initial setup is done. |
| 3910 | |
| 3911 | * kjs/string_object.cpp: |
| 3912 | (KJS::StringObject::getPropertyNames): Call value() instead of getString(), |
| 3913 | avoiding an unnecessary virtual function call (the call to the type() |
| 3914 | function in the implementation of the isString() function). |
| 3915 | (KJS::StringObject::toString): Added. |
| 3916 | (KJS::StringObject::toThisString): Added. |
| 3917 | (KJS::StringObject::toThisJSString): Added. |
| 3918 | (KJS::substituteBackreferences): Rewrote to use a appending algorithm |
| 3919 | instead of a the old one that tried to replace in place. |
| 3920 | (KJS::stringProtoFuncReplace): Merged this function and the replace function. |
| 3921 | Replaced the hand-rolled dynamic arrays for source ranges and replacements |
| 3922 | with Vector. |
| 3923 | (KJS::stringProtoFuncToString): Handle JSString as well as StringObject. |
| 3924 | Removed the separate valueOf implementation, since it can just share this. |
| 3925 | (KJS::stringProtoFuncCharAt): Use toThisString, which handles JSString as |
| 3926 | well as StringObject, and is slightly more efficient than the old code too. |
| 3927 | (KJS::stringProtoFuncCharCodeAt): Ditto. |
| 3928 | (KJS::stringProtoFuncConcat): Ditto. |
| 3929 | (KJS::stringProtoFuncIndexOf): Ditto. |
| 3930 | (KJS::stringProtoFuncLastIndexOf): Ditto. |
| 3931 | (KJS::stringProtoFuncMatch): Ditto. |
| 3932 | (KJS::stringProtoFuncSearch): Ditto. |
| 3933 | (KJS::stringProtoFuncSlice): Ditto. |
| 3934 | (KJS::stringProtoFuncSplit): Ditto. |
| 3935 | (KJS::stringProtoFuncSubstr): Ditto. |
| 3936 | (KJS::stringProtoFuncSubstring): Ditto. |
| 3937 | (KJS::stringProtoFuncToLowerCase): Use toThisJSString. |
| 3938 | (KJS::stringProtoFuncToUpperCase): Ditto. |
| 3939 | (KJS::stringProtoFuncToLocaleLowerCase): Ditto. |
| 3940 | (KJS::stringProtoFuncToLocaleUpperCase): Ditto. |
| 3941 | (KJS::stringProtoFuncLocaleCompare): Ditto. |
| 3942 | (KJS::stringProtoFuncBig): Use toThisString. |
| 3943 | (KJS::stringProtoFuncSmall): Ditto. |
| 3944 | (KJS::stringProtoFuncBlink): Ditto. |
| 3945 | (KJS::stringProtoFuncBold): Ditto. |
| 3946 | (KJS::stringProtoFuncFixed): Ditto. |
| 3947 | (KJS::stringProtoFuncItalics): Ditto. |
| 3948 | (KJS::stringProtoFuncStrike): Ditto. |
| 3949 | (KJS::stringProtoFuncSub): Ditto. |
| 3950 | (KJS::stringProtoFuncSup): Ditto. |
| 3951 | (KJS::stringProtoFuncFontcolor): Ditto. |
| 3952 | (KJS::stringProtoFuncFontsize): Ditto. |
| 3953 | (KJS::stringProtoFuncAnchor): Ditto. |
| 3954 | (KJS::stringProtoFuncLink): Ditto. |
| 3955 | |
| 3956 | * kjs/string_object.h: Added toString, toThisString, and toThisJSString. |
| 3957 | |
| 3958 | * kjs/ustring.cpp: |
| 3959 | (KJS::UString::append): Added a version that takes a character pointer and |
| 3960 | size, so we don't have to create a UString just to append to another UString. |
| 3961 | * kjs/ustring.h: |
| 3962 | |
| 3963 | 2008-06-26 Alexey Proskuryakov <ap@webkit.org> |
| 3964 | |
| 3965 | Reviewed by Maciej. |
| 3966 | |
| 3967 | Make JSGlobalData per-thread. |
| 3968 | |
| 3969 | No change on SunSpider total. |
| 3970 | |
| 3971 | * wtf/ThreadSpecific.h: Re-enabled the actual implementation. |
| 3972 | |
| 3973 | * kjs/JSGlobalObject.cpp: |
| 3974 | (KJS::JSGlobalObject::~JSGlobalObject): Re-added a JSLock-related assertion. We'll probably |
| 3975 | want to preserve these somehow to keep legacy behavior in working condition. |
| 3976 | (KJS::JSGlobalObject::init): Initialize globalData pointer earlier, so that it is ready |
| 3977 | when updating JSGlobalObject linked list. |
| 3978 | |
| 3979 | * kjs/JSGlobalObject.h: (KJS::JSGlobalObject::head): Changed head() to be non-static, and |
| 3980 | to use JSGlobalData associated with the current object. |
| 3981 | |
| 3982 | * kjs/InitializeThreading.cpp: (KJS::initializeThreadingOnce): Removed a no longer needed |
| 3983 | Heap::registerAsMainThread() call. |
| 3984 | |
| 3985 | * kjs/JSGlobalData.h: Removed a lying lie comment - parserObjectExtraRefCounts is not |
| 3986 | transient, and while newParserObjects may conceptually be such, there is still some node |
| 3987 | manipulation going on outside Parser::parse which touches it. |
| 3988 | |
| 3989 | * kjs/JSGlobalData.cpp: |
| 3990 | (KJS::JSGlobalData::~JSGlobalData): Delete recently added members. |
| 3991 | (KJS::JSGlobalData::sharedInstance): Actually use a separate instance. |
| 3992 | |
| 3993 | * kjs/collector.cpp: |
| 3994 | (KJS::Heap::Heap): |
| 3995 | (KJS::Heap::~Heap): Added a destructor, which unconditionally deletes everything. |
| 3996 | (KJS::Heap::sweep): Removed code related to "collect on main thread only" logic. |
| 3997 | (KJS::Heap::collect): Ditto. |
| 3998 | (KJS::Heap::globalObjectCount): Explicitly use per-thread instance of JSGlobalObject linked |
| 3999 | list now that JSGlobalObject::head() is not static. Curently, WebCoreStatistics methods only |
| 4000 | work with the main thread currently anyway. |
| 4001 | (KJS::Heap::protectedGlobalObjectCount): Ditto. |
| 4002 | |
| 4003 | * kjs/collector.h: Removed code related to "collect on main thread only" logic. |
| 4004 | |
| 4005 | * JavaScriptCore.exp: Removed Heap::collectOnMainThreadOnly. |
| 4006 | |
| 4007 | 2008-06-26 Alexey Proskuryakov <ap@webkit.org> |
| 4008 | |
| 4009 | Reviewed by Darin. |
| 4010 | |
| 4011 | https://bugs.webkit.org/show_bug.cgi?id=19767 |
| 4012 | REGRESSION: Crash in sort() when visiting http://www.onnyturf.com/subway/ |
| 4013 | |
| 4014 | * kjs/JSArray.cpp: (KJS::AVLTreeAbstractorForArrayCompare::set_balance_factor): |
| 4015 | Made changing balance factor from -1 to +1 work correctly. |
| 4016 | |
| 4017 | * wtf/AVLTree.h: (KJS::AVLTreeDefaultBSet::operator[]): Added an assertion that catches |
| 4018 | this slightly earlier. |
| 4019 | |
| 4020 | 2008-06-25 Timothy Hatcher <timothy@apple.com> |
| 4021 | |
| 4022 | Fixes an ASSERT in the profiler when starting multiple profiles |
| 4023 | with the same name inside the same function/program. |
| 4024 | |
| 4025 | Reviewed by Kevin McCullough. |
| 4026 | |
| 4027 | * profiler/Profile.cpp: |
| 4028 | (KJS::Profile::Profile): Initialize m_stoppedCallDepth to zero. |
| 4029 | (KJS::Profile::stopProfiling): Set the current node to the parent, |
| 4030 | because we are in a call that will not get a didExecute call. |
| 4031 | (KJS::Profile::removeProfile): Increment m_stoppedCallDepth to |
| 4032 | account for didExecute not being called for profile. |
| 4033 | (KJS::Profile::willExecute): Increment m_stoppedCallDepth if stopped. |
| 4034 | (KJS::Profile::didExecute): Decrement m_stoppedCallDepth if stopped and |
| 4035 | greater than zero, and return early. |
| 4036 | * profiler/Profile.h: Added stoppedProfiling(). |
| 4037 | * profiler/Profiler.cpp: |
| 4038 | (KJS::Profiler::findProfile): Removed. |
| 4039 | (KJS::Profiler::startProfiling): Don't return early for stopped profiles. |
| 4040 | (KJS::Profiler::stopProfiling): Skipp stopped profiles. |
| 4041 | (KJS::Profiler::didFinishAllExecution): Code clean-up. |
| 4042 | * profiler/Profiler.h: Removed findProfile. |
| 4043 | |
| 4044 | 2008-06-25 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 4045 | |
| 4046 | Reviewed by Alexey Proskuryakov. |
| 4047 | |
| 4048 | Attempt to fix Windows debug build. The compiler gives a warning when |
| 4049 | Structured Exception Handling and destructors are used in the same |
| 4050 | function. Using manual locking and unlocking instead of constructors |
| 4051 | and destructors should fix the warning. |
| 4052 | |
| 4053 | * kjs/Shell.cpp: |
| 4054 | (main): |
| 4055 | |
| 4056 | 2008-06-25 Alexey Proskuryakov <ap@webkit.org> |
| 4057 | |
| 4058 | Forgot to address a review comment about better names for tracked objects, doing it now. |
| 4059 | |
| 4060 | * kjs/JSGlobalData.cpp: |
| 4061 | (KJS::JSGlobalData::JSGlobalData): |
| 4062 | * kjs/JSGlobalData.h: |
| 4063 | * kjs/nodes.cpp: |
| 4064 | (KJS::ParserRefCounted::ParserRefCounted): |
| 4065 | (KJS::ParserRefCounted::ref): |
| 4066 | (KJS::ParserRefCounted::deref): |
| 4067 | (KJS::ParserRefCounted::hasOneRef): |
| 4068 | (KJS::ParserRefCounted::deleteNewObjects): |
| 4069 | |
| 4070 | 2008-06-25 Alexey Proskuryakov <ap@webkit.org> |
| 4071 | |
| 4072 | Reviewed by Geoff. |
| 4073 | |
| 4074 | Remove more threadInstance() calls. |
| 4075 | |
| 4076 | * kjs/JSFunction.cpp: |
| 4077 | (KJS::JSFunction::getParameterName): |
| 4078 | (KJS::IndexToNameMap::unMap): |
| 4079 | (KJS::Arguments::deleteProperty): |
| 4080 | * kjs/JSFunction.h: |
| 4081 | Access nullIdentifier without going to thread specific storage. |
| 4082 | |
| 4083 | * JavaScriptCore.exp: |
| 4084 | * kjs/JSGlobalData.cpp: |
| 4085 | (KJS::JSGlobalData::JSGlobalData): |
| 4086 | * kjs/JSGlobalData.h: |
| 4087 | * kjs/Parser.cpp: |
| 4088 | (KJS::Parser::parse): |
| 4089 | * kjs/Parser.h: |
| 4090 | (KJS::ParserRefCountedData::ParserRefCountedData): |
| 4091 | (KJS::Parser::parse): |
| 4092 | * kjs/grammar.y: |
| 4093 | * kjs/nodes.cpp: |
| 4094 | (KJS::ParserRefCounted::ParserRefCounted): |
| 4095 | (KJS::ParserRefCounted::ref): |
| 4096 | (KJS::ParserRefCounted::deref): |
| 4097 | (KJS::ParserRefCounted::hasOneRef): |
| 4098 | (KJS::ParserRefCounted::deleteNewObjects): |
| 4099 | (KJS::Node::Node): |
| 4100 | (KJS::StatementNode::StatementNode): |
| 4101 | (KJS::BreakpointCheckStatement::BreakpointCheckStatement): |
| 4102 | (KJS::ConstDeclNode::ConstDeclNode): |
| 4103 | (KJS::BlockNode::BlockNode): |
| 4104 | (KJS::ForInNode::ForInNode): |
| 4105 | (KJS::ScopeNode::ScopeNode): |
| 4106 | (KJS::ProgramNode::ProgramNode): |
| 4107 | (KJS::ProgramNode::create): |
| 4108 | (KJS::EvalNode::EvalNode): |
| 4109 | (KJS::EvalNode::create): |
| 4110 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 4111 | (KJS::FunctionBodyNode::create): |
| 4112 | * kjs/nodes.h: |
| 4113 | (KJS::ExpressionNode::): |
| 4114 | (KJS::NullNode::): |
| 4115 | (KJS::BooleanNode::): |
| 4116 | (KJS::NumberNode::): |
| 4117 | (KJS::ImmediateNumberNode::): |
| 4118 | (KJS::StringNode::): |
| 4119 | (KJS::RegExpNode::): |
| 4120 | (KJS::ThisNode::): |
| 4121 | (KJS::ResolveNode::): |
| 4122 | (KJS::ElementNode::): |
| 4123 | (KJS::ArrayNode::): |
| 4124 | (KJS::PropertyNode::): |
| 4125 | (KJS::PropertyListNode::): |
| 4126 | (KJS::ObjectLiteralNode::): |
| 4127 | (KJS::BracketAccessorNode::): |
| 4128 | (KJS::DotAccessorNode::): |
| 4129 | (KJS::ArgumentListNode::): |
| 4130 | (KJS::ArgumentsNode::): |
| 4131 | (KJS::NewExprNode::): |
| 4132 | (KJS::EvalFunctionCallNode::): |
| 4133 | (KJS::FunctionCallValueNode::): |
| 4134 | (KJS::FunctionCallResolveNode::): |
| 4135 | (KJS::FunctionCallBracketNode::): |
| 4136 | (KJS::FunctionCallDotNode::): |
| 4137 | (KJS::PrePostResolveNode::): |
| 4138 | (KJS::PostIncResolveNode::): |
| 4139 | (KJS::PostDecResolveNode::): |
| 4140 | (KJS::PostfixBracketNode::): |
| 4141 | (KJS::PostIncBracketNode::): |
| 4142 | (KJS::PostDecBracketNode::): |
| 4143 | (KJS::PostfixDotNode::): |
| 4144 | (KJS::PostIncDotNode::): |
| 4145 | (KJS::PostDecDotNode::): |
| 4146 | (KJS::PostfixErrorNode::): |
| 4147 | (KJS::DeleteResolveNode::): |
| 4148 | (KJS::DeleteBracketNode::): |
| 4149 | (KJS::DeleteDotNode::): |
| 4150 | (KJS::DeleteValueNode::): |
| 4151 | (KJS::VoidNode::): |
| 4152 | (KJS::TypeOfResolveNode::): |
| 4153 | (KJS::TypeOfValueNode::): |
| 4154 | (KJS::PreIncResolveNode::): |
| 4155 | (KJS::PreDecResolveNode::): |
| 4156 | (KJS::PrefixBracketNode::): |
| 4157 | (KJS::PreIncBracketNode::): |
| 4158 | (KJS::PreDecBracketNode::): |
| 4159 | (KJS::PrefixDotNode::): |
| 4160 | (KJS::PreIncDotNode::): |
| 4161 | (KJS::PreDecDotNode::): |
| 4162 | (KJS::PrefixErrorNode::): |
| 4163 | (KJS::UnaryOpNode::UnaryOpNode): |
| 4164 | (KJS::UnaryPlusNode::): |
| 4165 | (KJS::NegateNode::): |
| 4166 | (KJS::BitwiseNotNode::): |
| 4167 | (KJS::LogicalNotNode::): |
| 4168 | (KJS::BinaryOpNode::BinaryOpNode): |
| 4169 | (KJS::ReverseBinaryOpNode::ReverseBinaryOpNode): |
| 4170 | (KJS::MultNode::): |
| 4171 | (KJS::DivNode::): |
| 4172 | (KJS::ModNode::): |
| 4173 | (KJS::AddNode::): |
| 4174 | (KJS::SubNode::): |
| 4175 | (KJS::LeftShiftNode::): |
| 4176 | (KJS::RightShiftNode::): |
| 4177 | (KJS::UnsignedRightShiftNode::): |
| 4178 | (KJS::LessNode::): |
| 4179 | (KJS::GreaterNode::): |
| 4180 | (KJS::LessEqNode::): |
| 4181 | (KJS::GreaterEqNode::): |
| 4182 | (KJS::InstanceOfNode::): |
| 4183 | (KJS::InNode::): |
| 4184 | (KJS::EqualNode::): |
| 4185 | (KJS::NotEqualNode::): |
| 4186 | (KJS::StrictEqualNode::): |
| 4187 | (KJS::NotStrictEqualNode::): |
| 4188 | (KJS::BitAndNode::): |
| 4189 | (KJS::BitOrNode::): |
| 4190 | (KJS::BitXOrNode::): |
| 4191 | (KJS::LogicalAndNode::): |
| 4192 | (KJS::LogicalOrNode::): |
| 4193 | (KJS::ConditionalNode::): |
| 4194 | (KJS::ReadModifyResolveNode::): |
| 4195 | (KJS::AssignResolveNode::): |
| 4196 | (KJS::ReadModifyBracketNode::): |
| 4197 | (KJS::AssignBracketNode::): |
| 4198 | (KJS::AssignDotNode::): |
| 4199 | (KJS::ReadModifyDotNode::): |
| 4200 | (KJS::AssignErrorNode::): |
| 4201 | (KJS::CommaNode::): |
| 4202 | (KJS::VarDeclCommaNode::): |
| 4203 | (KJS::ConstStatementNode::): |
| 4204 | (KJS::SourceElements::SourceElements): |
| 4205 | (KJS::EmptyStatementNode::): |
| 4206 | (KJS::DebuggerStatementNode::): |
| 4207 | (KJS::ExprStatementNode::): |
| 4208 | (KJS::VarStatementNode::): |
| 4209 | (KJS::IfNode::): |
| 4210 | (KJS::IfElseNode::): |
| 4211 | (KJS::DoWhileNode::): |
| 4212 | (KJS::WhileNode::): |
| 4213 | (KJS::ForNode::): |
| 4214 | (KJS::ContinueNode::): |
| 4215 | (KJS::BreakNode::): |
| 4216 | (KJS::ReturnNode::): |
| 4217 | (KJS::WithNode::): |
| 4218 | (KJS::LabelNode::): |
| 4219 | (KJS::ThrowNode::): |
| 4220 | (KJS::TryNode::): |
| 4221 | (KJS::ParameterNode::): |
| 4222 | (KJS::FuncExprNode::): |
| 4223 | (KJS::FuncDeclNode::): |
| 4224 | (KJS::CaseClauseNode::): |
| 4225 | (KJS::ClauseListNode::): |
| 4226 | (KJS::CaseBlockNode::): |
| 4227 | (KJS::SwitchNode::): |
| 4228 | Changed ParserRefCounted to hold a JSGlobalData pointer, and used it to replace |
| 4229 | threadInstance calls. |
| 4230 | |
| 4231 | 2008-06-24 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 4232 | |
| 4233 | Reviewed by Alexey Proskuryakov. |
| 4234 | |
| 4235 | Make the JavaScript shell collect the heap from main() instead of |
| 4236 | jscmain() to suppress leak messages in debug builds. |
| 4237 | |
| 4238 | * kjs/Shell.cpp: |
| 4239 | (main): |
| 4240 | (jscmain): |
| 4241 | |
| 4242 | 2008-06-24 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 4243 | |
| 4244 | Reviewed by Maciej. |
| 4245 | |
| 4246 | Make the conversion of the pair (less, jtrue) to jless use register |
| 4247 | reference counting information for safety instead of requiring callers |
| 4248 | to decide whether it is safe. |
| 4249 | |
| 4250 | No changes on SunSpider codegen. |
| 4251 | |
| 4252 | * VM/CodeGenerator.cpp: |
| 4253 | (KJS::CodeGenerator::emitJumpIfTrue): |
| 4254 | * VM/CodeGenerator.h: |
| 4255 | * kjs/nodes.cpp: |
| 4256 | (KJS::DoWhileNode::emitCode): |
| 4257 | (KJS::WhileNode::emitCode): |
| 4258 | (KJS::ForNode::emitCode): |
| 4259 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 4260 | |
| 4261 | 2008-06-24 Kevin McCullough <kmccullough@apple.com> |
| 4262 | |
| 4263 | Reviewed by Tim. |
| 4264 | |
| 4265 | <rdar://problem/6031594> JSProfiler: Profiler goes into an infinite |
| 4266 | loop sometimes. |
| 4267 | <rdar://problem/6031603> JSProfiler: Profiler asserts in debug and |
| 4268 | give the wrong times in release |
| 4269 | |
| 4270 | Fixed two issues found by Tim in the same test. |
| 4271 | |
| 4272 | * profiler/Profile.cpp: |
| 4273 | (KJS::Profile::removeProfileStart): No longer take profile's time from |
| 4274 | all ancestors, but instead attribute it to its parent. Also add an |
| 4275 | Assert to ensure we only delete the child we mean to. |
| 4276 | (KJS::Profile::removeProfileEnd): Ditto for profileEnd. |
| 4277 | (KJS::Profile::didExecute): Cleaned up the execution order and correctly |
| 4278 | attribute all of the parent's time to the new node. |
| 4279 | * profiler/ProfileNode.cpp: If this node does not have a startTime it |
| 4280 | should not get a giant total time, but instead be 0. |
| 4281 | (KJS::ProfileNode::endAndRecordCall): |
| 4282 | * profiler/ProfileNode.h: |
| 4283 | (KJS::ProfileNode::removeChild): Should reset the sibling pointers since |
| 4284 | one of them has been removed. |
| 4285 | |
| 4286 | 2008-06-24 Darin Adler <darin@apple.com> |
| 4287 | |
| 4288 | Reviewed by Cameron. |
| 4289 | |
| 4290 | - fix https://bugs.webkit.org/show_bug.cgi?id=19739 |
| 4291 | REGRESSION: fast/js/property-getters-and-setters.html fails |
| 4292 | |
| 4293 | * kjs/JSObject.cpp: |
| 4294 | (KJS::JSObject::put): Remove an untested optimization I checked in by accident. |
| 4295 | The two loops up the prototype chain both need to start from this; instead the |
| 4296 | second loop was starting where the first loop left off. |
| 4297 | |
| 4298 | 2008-06-24 Steve Falkenburg <sfalken@apple.com> |
| 4299 | |
| 4300 | Build fix. |
| 4301 | |
| 4302 | * kjs/nodes.cpp: |
| 4303 | |
| 4304 | 2008-06-24 Joerg Bornemann <joerg.bornemann@trolltech.com> |
| 4305 | |
| 4306 | Reviewed by Simon. |
| 4307 | |
| 4308 | For the Qt build on Windows don't depend on the presence of GNU CPP |
| 4309 | but use MSVC's preprocessor instead. |
| 4310 | dftables accepts a --preprocessor option which is set in pcre.pri for MSVC platforms. |
| 4311 | |
| 4312 | * pcre/dftables: Added support for specifying the preprocessor command |
| 4313 | to use via --preprocessor, similar to |
| 4314 | WebCore/bindings/scripts/generate-bindings.pl. |
| 4315 | * pcre/pcre.pri: Pass --preprocessor='cl /e' to dftables, or more |
| 4316 | generally speaking QMAKE_CC /E for the win32-msvc buildspecs. |
| 4317 | |
| 4318 | 2008-06-24 Simon Hausmann <hausmann@webkit.org> |
| 4319 | |
| 4320 | Fix the Qt build, added missing include. |
| 4321 | |
| 4322 | * kjs/PropertySlot.cpp: |
| 4323 | |
| 4324 | 2008-06-24 Alexey Proskuryakov <ap@webkit.org> |
| 4325 | |
| 4326 | Reviewed by Cameron Zwarich. |
| 4327 | |
| 4328 | Make ParserRefCountedCounter actually perform a leak check. |
| 4329 | |
| 4330 | * kjs/nodes.cpp: |
| 4331 | (KJS::ParserRefCountedCounter::~ParserRefCountedCounter): Check for leaks in destructor, |
| 4332 | not in constructor. |
| 4333 | (KJS::ParserRefCountedCounter::increment): |
| 4334 | (KJS::ParserRefCountedCounter::decrement): |
| 4335 | (KJS::ParserRefCounted::ParserRefCounted): |
| 4336 | (KJS::ParserRefCounted::~ParserRefCounted): |
| 4337 | While at it, also made counting thread-safe. |
| 4338 | |
| 4339 | 2008-06-24 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 4340 | |
| 4341 | Reviewed by Oliver. |
| 4342 | |
| 4343 | Bug 19730: REGRESSION (r34497): Text in alerts in "Leisure suit Larry" is not wrapped |
| 4344 | <https://bugs.webkit.org/show_bug.cgi?id=19730> |
| 4345 | |
| 4346 | Do not convert the pair (less, jtrue) to jless when jtrue is a jump |
| 4347 | target. An example of this is when the condition of a while loop is a |
| 4348 | LogicalOrNode. |
| 4349 | |
| 4350 | * VM/CodeGenerator.cpp: |
| 4351 | (KJS::CodeGenerator::emitLabel): |
| 4352 | |
| 4353 | 2008-06-20 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 4354 | |
| 4355 | Reviewed by Adam Roben. |
| 4356 | |
| 4357 | Fix compile with MinGW. |
| 4358 | |
| 4359 | * kjs/Shell.cpp: |
| 4360 | * wtf/Threading.h: |
| 4361 | (WTF::atomicIncrement): |
| 4362 | (WTF::atomicDecrement): |
| 4363 | |
| 4364 | 2008-06-23 Mark Rowe <mrowe@apple.com> |
| 4365 | |
| 4366 | Reviewed by Oliver Hunt. |
| 4367 | |
| 4368 | Prepration for returning memory to the OS on Windows. Track whether a portion of a span of memory was returned to the OS. |
| 4369 | If it was, ask that it be recommitted before returning it to the application as an allocated region. |
| 4370 | |
| 4371 | * wtf/FastMalloc.cpp: |
| 4372 | (WTF::TCMalloc_PageHeap::New): If the span was decommitted, ask that it be recommitted before returning it. |
| 4373 | (WTF::TCMalloc_PageHeap::AllocLarge): Ditto. |
| 4374 | (WTF::TCMalloc_PageHeap::Carve): When splitting a span, ensure that the decommitted state propogates to the two new spans. |
| 4375 | (WTF::TCMalloc_PageHeap::Delete): When merging a span, ensure that the resulting span is marked as decommitted if any of the |
| 4376 | spans being merged were marked as decommitted. |
| 4377 | (WTF::TCMalloc_PageHeap::IncrementalScavenge): Mark as decommitted after releasing the span. |
| 4378 | (WTF::TCMalloc_Central_FreeList::FetchFromSpans): Add an assertion to catch a decommitted span being returned to the application |
| 4379 | without first being recommitted. |
| 4380 | (WTF::TCMalloc_Central_FreeList::Populate): Ditto. |
| 4381 | * wtf/TCSystemAlloc.cpp: Stub out TCMalloc_SystemCommit. |
| 4382 | * wtf/TCSystemAlloc.h: |
| 4383 | |
| 4384 | 2008-06-23 Mark Rowe <mrowe@apple.com> |
| 4385 | |
| 4386 | Reviewed by Sam Weinig. |
| 4387 | |
| 4388 | Remove the sample member of Span when NO_TCMALLOC_SAMPLES is defined. |
| 4389 | |
| 4390 | * wtf/FastMalloc.cpp: |
| 4391 | (WTF::TCMalloc_PageHeap::Delete): Only update Span::sample if NO_TCMALLOC_SAMPLES is not defined. |
| 4392 | (WTF::TCMallocStats::do_free): Ditto. |
| 4393 | |
| 4394 | 2008-06-23 Darin Adler <darin@apple.com> |
| 4395 | |
| 4396 | Reviewed by Geoff. |
| 4397 | |
| 4398 | - work toward https://bugs.webkit.org/show_bug.cgi?id=19721 |
| 4399 | |
| 4400 | More preparation toward making functions work on primitive types without |
| 4401 | creating wrapper objects. No speedup this time, but prepares for a future |
| 4402 | speedup without slowing things down. |
| 4403 | |
| 4404 | SunSpider reports no change. |
| 4405 | |
| 4406 | - Eliminated the implementsCall, callAsFunction and construct virtual |
| 4407 | functions from JSObject. Instead, the CallData and ConstructData for |
| 4408 | a native function includes a function pointer that the caller can use |
| 4409 | directly. Changed all call sites to use CallData and ConstructData. |
| 4410 | |
| 4411 | - Changed the "this" argument to native functions to be a JSValue rather |
| 4412 | than a JSObject. This prepares us for passing primitives into these |
| 4413 | functions. The conversion to an object now must be done inside the |
| 4414 | function. Critically, if it's a function that can be called on a DOM |
| 4415 | window object, then we have to be sure to call toThisObject on the |
| 4416 | argument before we use it for anything even if it's already an object. |
| 4417 | |
| 4418 | - Eliminated the practice of using constructor objects in the global |
| 4419 | object to make objects of the various basic types. Since these |
| 4420 | constructors can't be replaced by script, there's no reason to involve |
| 4421 | a constructor object at all. Added functions to do the construction |
| 4422 | directly. |
| 4423 | |
| 4424 | - Made some more class members private and protected, including virtual |
| 4425 | function overrides. This can catch code using unnecessarily slow virtual |
| 4426 | function code paths when the type of an object is known statically. If we |
| 4427 | later find a new reason use the members outside the class it's easy to |
| 4428 | make them public again. |
| 4429 | |
| 4430 | - Moved the declarations of the native implementations for functions out |
| 4431 | of header files. These can have internal linkage and be declared inside |
| 4432 | the source file. |
| 4433 | |
| 4434 | - Changed PrototypeFunction to take function pointers with the right |
| 4435 | arguments to be put directly into CallData. This eliminates the |
| 4436 | need to have a separate PrototypeReflexiveFunction, and reveals that the |
| 4437 | real purpose of that class included something else specific to eval -- |
| 4438 | storage of a cached global object. So renamed PrototypeReflexiveFunction |
| 4439 | to GlobalEvalFunction. |
| 4440 | |
| 4441 | * API/JSCallbackConstructor.cpp: |
| 4442 | (KJS::constructJSCallback): |
| 4443 | (KJS::JSCallbackConstructor::getConstructData): |
| 4444 | * API/JSCallbackConstructor.h: |
| 4445 | * API/JSCallbackFunction.cpp: |
| 4446 | (KJS::JSCallbackFunction::implementsHasInstance): |
| 4447 | (KJS::JSCallbackFunction::call): |
| 4448 | (KJS::JSCallbackFunction::getCallData): |
| 4449 | * API/JSCallbackFunction.h: |
| 4450 | (KJS::JSCallbackFunction::classInfo): |
| 4451 | * API/JSCallbackObject.h: |
| 4452 | (KJS::JSCallbackObject::classRef): |
| 4453 | (KJS::JSCallbackObject::classInfo): |
| 4454 | * API/JSCallbackObjectFunctions.h: |
| 4455 | (KJS::::getConstructData): |
| 4456 | (KJS::::construct): |
| 4457 | (KJS::::getCallData): |
| 4458 | (KJS::::call): |
| 4459 | * API/JSObjectRef.cpp: |
| 4460 | (JSObjectMakeFunction): |
| 4461 | (JSObjectIsFunction): |
| 4462 | (JSObjectCallAsFunction): |
| 4463 | (JSObjectCallAsConstructor): |
| 4464 | * JavaScriptCore.exp: |
| 4465 | * VM/Machine.cpp: |
| 4466 | (KJS::jsTypeStringForValue): |
| 4467 | (KJS::Machine::privateExecute): |
| 4468 | * kjs/ArrayPrototype.cpp: |
| 4469 | (KJS::arrayProtoFuncToString): |
| 4470 | (KJS::arrayProtoFuncToLocaleString): |
| 4471 | (KJS::arrayProtoFuncJoin): |
| 4472 | (KJS::arrayProtoFuncConcat): |
| 4473 | (KJS::arrayProtoFuncPop): |
| 4474 | (KJS::arrayProtoFuncPush): |
| 4475 | (KJS::arrayProtoFuncReverse): |
| 4476 | (KJS::arrayProtoFuncShift): |
| 4477 | (KJS::arrayProtoFuncSlice): |
| 4478 | (KJS::arrayProtoFuncSort): |
| 4479 | (KJS::arrayProtoFuncSplice): |
| 4480 | (KJS::arrayProtoFuncUnShift): |
| 4481 | (KJS::arrayProtoFuncFilter): |
| 4482 | (KJS::arrayProtoFuncMap): |
| 4483 | (KJS::arrayProtoFuncEvery): |
| 4484 | (KJS::arrayProtoFuncForEach): |
| 4485 | (KJS::arrayProtoFuncSome): |
| 4486 | (KJS::arrayProtoFuncIndexOf): |
| 4487 | (KJS::arrayProtoFuncLastIndexOf): |
| 4488 | (KJS::ArrayConstructor::ArrayConstructor): |
| 4489 | (KJS::constructArrayWithSizeQuirk): |
| 4490 | (KJS::constructWithArrayConstructor): |
| 4491 | (KJS::ArrayConstructor::getConstructData): |
| 4492 | (KJS::callArrayConstructor): |
| 4493 | (KJS::ArrayConstructor::getCallData): |
| 4494 | * kjs/ArrayPrototype.h: |
| 4495 | * kjs/BooleanObject.cpp: |
| 4496 | (KJS::booleanProtoFuncToString): |
| 4497 | (KJS::booleanProtoFuncValueOf): |
| 4498 | (KJS::constructBoolean): |
| 4499 | (KJS::constructWithBooleanConstructor): |
| 4500 | (KJS::BooleanConstructor::getConstructData): |
| 4501 | (KJS::callBooleanConstructor): |
| 4502 | (KJS::BooleanConstructor::getCallData): |
| 4503 | (KJS::constructBooleanFromImmediateBoolean): |
| 4504 | * kjs/BooleanObject.h: |
| 4505 | * kjs/CallData.h: |
| 4506 | (KJS::): |
| 4507 | * kjs/ConstructData.h: |
| 4508 | (KJS::): |
| 4509 | * kjs/FunctionPrototype.cpp: |
| 4510 | (KJS::callFunctionPrototype): |
| 4511 | (KJS::FunctionPrototype::getCallData): |
| 4512 | (KJS::functionProtoFuncToString): |
| 4513 | (KJS::functionProtoFuncApply): |
| 4514 | (KJS::functionProtoFuncCall): |
| 4515 | (KJS::constructWithFunctionConstructor): |
| 4516 | (KJS::FunctionConstructor::getConstructData): |
| 4517 | (KJS::callFunctionConstructor): |
| 4518 | (KJS::FunctionConstructor::getCallData): |
| 4519 | (KJS::constructFunction): |
| 4520 | * kjs/FunctionPrototype.h: |
| 4521 | * kjs/JSArray.cpp: |
| 4522 | (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key): |
| 4523 | (KJS::JSArray::sort): |
| 4524 | (KJS::constructEmptyArray): |
| 4525 | (KJS::constructArray): |
| 4526 | * kjs/JSArray.h: |
| 4527 | (KJS::JSArray::classInfo): |
| 4528 | * kjs/JSFunction.cpp: |
| 4529 | (KJS::JSFunction::call): |
| 4530 | (KJS::globalFuncEval): |
| 4531 | (KJS::globalFuncParseInt): |
| 4532 | (KJS::globalFuncParseFloat): |
| 4533 | (KJS::globalFuncIsNaN): |
| 4534 | (KJS::globalFuncIsFinite): |
| 4535 | (KJS::globalFuncDecodeURI): |
| 4536 | (KJS::globalFuncDecodeURIComponent): |
| 4537 | (KJS::globalFuncEncodeURI): |
| 4538 | (KJS::globalFuncEncodeURIComponent): |
| 4539 | (KJS::globalFuncEscape): |
| 4540 | (KJS::globalFuncUnescape): |
| 4541 | (KJS::globalFuncKJSPrint): |
| 4542 | (KJS::PrototypeFunction::PrototypeFunction): |
| 4543 | (KJS::PrototypeFunction::getCallData): |
| 4544 | (KJS::GlobalEvalFunction::GlobalEvalFunction): |
| 4545 | (KJS::GlobalEvalFunction::mark): |
| 4546 | * kjs/JSFunction.h: |
| 4547 | (KJS::InternalFunction::classInfo): |
| 4548 | (KJS::InternalFunction::functionName): |
| 4549 | (KJS::JSFunction::classInfo): |
| 4550 | (KJS::GlobalEvalFunction::cachedGlobalObject): |
| 4551 | * kjs/JSGlobalObject.cpp: |
| 4552 | (KJS::JSGlobalObject::reset): |
| 4553 | (KJS::JSGlobalObject::mark): |
| 4554 | * kjs/JSGlobalObject.h: |
| 4555 | (KJS::JSGlobalObject::JSGlobalObject): |
| 4556 | (KJS::JSGlobalObject::evalFunction): |
| 4557 | * kjs/JSImmediate.cpp: |
| 4558 | (KJS::JSImmediate::toObject): |
| 4559 | * kjs/JSNotAnObject.cpp: |
| 4560 | * kjs/JSNotAnObject.h: |
| 4561 | * kjs/JSObject.cpp: |
| 4562 | (KJS::JSObject::put): |
| 4563 | (KJS::callDefaultValueFunction): |
| 4564 | (KJS::JSObject::defaultValue): |
| 4565 | (KJS::JSObject::lookupGetter): |
| 4566 | (KJS::JSObject::lookupSetter): |
| 4567 | (KJS::JSObject::hasInstance): |
| 4568 | (KJS::JSObject::fillGetterPropertySlot): |
| 4569 | (KJS::Error::create): |
| 4570 | (KJS::constructEmptyObject): |
| 4571 | * kjs/JSObject.h: |
| 4572 | (KJS::GetterSetter::GetterSetter): |
| 4573 | (KJS::GetterSetter::getter): |
| 4574 | (KJS::GetterSetter::setGetter): |
| 4575 | (KJS::GetterSetter::setter): |
| 4576 | (KJS::GetterSetter::setSetter): |
| 4577 | * kjs/JSValue.cpp: |
| 4578 | (KJS::JSCell::deleteProperty): |
| 4579 | (KJS::call): |
| 4580 | (KJS::construct): |
| 4581 | * kjs/JSValue.h: |
| 4582 | * kjs/MathObject.cpp: |
| 4583 | (KJS::mathProtoFuncAbs): |
| 4584 | (KJS::mathProtoFuncACos): |
| 4585 | (KJS::mathProtoFuncASin): |
| 4586 | (KJS::mathProtoFuncATan): |
| 4587 | (KJS::mathProtoFuncATan2): |
| 4588 | (KJS::mathProtoFuncCeil): |
| 4589 | (KJS::mathProtoFuncCos): |
| 4590 | (KJS::mathProtoFuncExp): |
| 4591 | (KJS::mathProtoFuncFloor): |
| 4592 | (KJS::mathProtoFuncLog): |
| 4593 | (KJS::mathProtoFuncMax): |
| 4594 | (KJS::mathProtoFuncMin): |
| 4595 | (KJS::mathProtoFuncPow): |
| 4596 | (KJS::mathProtoFuncRandom): |
| 4597 | (KJS::mathProtoFuncRound): |
| 4598 | (KJS::mathProtoFuncSin): |
| 4599 | (KJS::mathProtoFuncSqrt): |
| 4600 | (KJS::mathProtoFuncTan): |
| 4601 | * kjs/MathObject.h: |
| 4602 | * kjs/NumberObject.cpp: |
| 4603 | (KJS::numberProtoFuncToString): |
| 4604 | (KJS::numberProtoFuncToLocaleString): |
| 4605 | (KJS::numberProtoFuncValueOf): |
| 4606 | (KJS::numberProtoFuncToFixed): |
| 4607 | (KJS::numberProtoFuncToExponential): |
| 4608 | (KJS::numberProtoFuncToPrecision): |
| 4609 | (KJS::NumberConstructor::NumberConstructor): |
| 4610 | (KJS::constructWithNumberConstructor): |
| 4611 | (KJS::NumberConstructor::getConstructData): |
| 4612 | (KJS::callNumberConstructor): |
| 4613 | (KJS::NumberConstructor::getCallData): |
| 4614 | (KJS::constructNumber): |
| 4615 | (KJS::constructNumberFromImmediateNumber): |
| 4616 | * kjs/NumberObject.h: |
| 4617 | (KJS::NumberObject::classInfo): |
| 4618 | (KJS::NumberConstructor::classInfo): |
| 4619 | * kjs/PropertySlot.cpp: |
| 4620 | (KJS::PropertySlot::functionGetter): |
| 4621 | * kjs/RegExpObject.cpp: |
| 4622 | (KJS::regExpProtoFuncTest): |
| 4623 | (KJS::regExpProtoFuncExec): |
| 4624 | (KJS::regExpProtoFuncCompile): |
| 4625 | (KJS::regExpProtoFuncToString): |
| 4626 | (KJS::callRegExpObject): |
| 4627 | (KJS::RegExpObject::getCallData): |
| 4628 | (KJS::constructRegExp): |
| 4629 | (KJS::constructWithRegExpConstructor): |
| 4630 | (KJS::RegExpConstructor::getConstructData): |
| 4631 | (KJS::callRegExpConstructor): |
| 4632 | (KJS::RegExpConstructor::getCallData): |
| 4633 | * kjs/RegExpObject.h: |
| 4634 | (KJS::RegExpConstructor::classInfo): |
| 4635 | * kjs/Shell.cpp: |
| 4636 | (GlobalObject::GlobalObject): |
| 4637 | (functionPrint): |
| 4638 | (functionDebug): |
| 4639 | (functionGC): |
| 4640 | (functionVersion): |
| 4641 | (functionRun): |
| 4642 | (functionLoad): |
| 4643 | (functionReadline): |
| 4644 | (functionQuit): |
| 4645 | * kjs/date_object.cpp: |
| 4646 | (KJS::gmtoffset): |
| 4647 | (KJS::formatLocaleDate): |
| 4648 | (KJS::fillStructuresUsingDateArgs): |
| 4649 | (KJS::DateInstance::getTime): |
| 4650 | (KJS::DateInstance::getUTCTime): |
| 4651 | (KJS::DateConstructor::DateConstructor): |
| 4652 | (KJS::constructDate): |
| 4653 | (KJS::DateConstructor::getConstructData): |
| 4654 | (KJS::callDate): |
| 4655 | (KJS::DateConstructor::getCallData): |
| 4656 | (KJS::dateParse): |
| 4657 | (KJS::dateNow): |
| 4658 | (KJS::dateUTC): |
| 4659 | (KJS::dateProtoFuncToString): |
| 4660 | (KJS::dateProtoFuncToUTCString): |
| 4661 | (KJS::dateProtoFuncToDateString): |
| 4662 | (KJS::dateProtoFuncToTimeString): |
| 4663 | (KJS::dateProtoFuncToLocaleString): |
| 4664 | (KJS::dateProtoFuncToLocaleDateString): |
| 4665 | (KJS::dateProtoFuncToLocaleTimeString): |
| 4666 | (KJS::dateProtoFuncValueOf): |
| 4667 | (KJS::dateProtoFuncGetTime): |
| 4668 | (KJS::dateProtoFuncGetFullYear): |
| 4669 | (KJS::dateProtoFuncGetUTCFullYear): |
| 4670 | (KJS::dateProtoFuncToGMTString): |
| 4671 | (KJS::dateProtoFuncGetMonth): |
| 4672 | (KJS::dateProtoFuncGetUTCMonth): |
| 4673 | (KJS::dateProtoFuncGetDate): |
| 4674 | (KJS::dateProtoFuncGetUTCDate): |
| 4675 | (KJS::dateProtoFuncGetDay): |
| 4676 | (KJS::dateProtoFuncGetUTCDay): |
| 4677 | (KJS::dateProtoFuncGetHours): |
| 4678 | (KJS::dateProtoFuncGetUTCHours): |
| 4679 | (KJS::dateProtoFuncGetMinutes): |
| 4680 | (KJS::dateProtoFuncGetUTCMinutes): |
| 4681 | (KJS::dateProtoFuncGetSeconds): |
| 4682 | (KJS::dateProtoFuncGetUTCSeconds): |
| 4683 | (KJS::dateProtoFuncGetMilliSeconds): |
| 4684 | (KJS::dateProtoFuncGetUTCMilliseconds): |
| 4685 | (KJS::dateProtoFuncGetTimezoneOffset): |
| 4686 | (KJS::dateProtoFuncSetTime): |
| 4687 | (KJS::setNewValueFromTimeArgs): |
| 4688 | (KJS::setNewValueFromDateArgs): |
| 4689 | (KJS::dateProtoFuncSetMilliSeconds): |
| 4690 | (KJS::dateProtoFuncSetUTCMilliseconds): |
| 4691 | (KJS::dateProtoFuncSetSeconds): |
| 4692 | (KJS::dateProtoFuncSetUTCSeconds): |
| 4693 | (KJS::dateProtoFuncSetMinutes): |
| 4694 | (KJS::dateProtoFuncSetUTCMinutes): |
| 4695 | (KJS::dateProtoFuncSetHours): |
| 4696 | (KJS::dateProtoFuncSetUTCHours): |
| 4697 | (KJS::dateProtoFuncSetDate): |
| 4698 | (KJS::dateProtoFuncSetUTCDate): |
| 4699 | (KJS::dateProtoFuncSetMonth): |
| 4700 | (KJS::dateProtoFuncSetUTCMonth): |
| 4701 | (KJS::dateProtoFuncSetFullYear): |
| 4702 | (KJS::dateProtoFuncSetUTCFullYear): |
| 4703 | (KJS::dateProtoFuncSetYear): |
| 4704 | (KJS::dateProtoFuncGetYear): |
| 4705 | * kjs/date_object.h: |
| 4706 | (KJS::DateInstance::internalNumber): |
| 4707 | (KJS::DateInstance::classInfo): |
| 4708 | * kjs/error_object.cpp: |
| 4709 | (KJS::errorProtoFuncToString): |
| 4710 | (KJS::constructError): |
| 4711 | (KJS::constructWithErrorConstructor): |
| 4712 | (KJS::ErrorConstructor::getConstructData): |
| 4713 | (KJS::callErrorConstructor): |
| 4714 | (KJS::ErrorConstructor::getCallData): |
| 4715 | (KJS::NativeErrorConstructor::construct): |
| 4716 | (KJS::constructWithNativeErrorConstructor): |
| 4717 | (KJS::NativeErrorConstructor::getConstructData): |
| 4718 | (KJS::callNativeErrorConstructor): |
| 4719 | (KJS::NativeErrorConstructor::getCallData): |
| 4720 | * kjs/error_object.h: |
| 4721 | (KJS::NativeErrorConstructor::classInfo): |
| 4722 | * kjs/internal.cpp: |
| 4723 | (KJS::JSNumberCell::toObject): |
| 4724 | (KJS::JSNumberCell::toThisObject): |
| 4725 | (KJS::GetterSetter::mark): |
| 4726 | (KJS::GetterSetter::toPrimitive): |
| 4727 | (KJS::GetterSetter::toBoolean): |
| 4728 | (KJS::GetterSetter::toNumber): |
| 4729 | (KJS::GetterSetter::toString): |
| 4730 | (KJS::GetterSetter::toObject): |
| 4731 | (KJS::InternalFunction::InternalFunction): |
| 4732 | (KJS::InternalFunction::implementsHasInstance): |
| 4733 | * kjs/lookup.h: |
| 4734 | (KJS::HashEntry::): |
| 4735 | * kjs/nodes.cpp: |
| 4736 | (KJS::FuncDeclNode::makeFunction): |
| 4737 | (KJS::FuncExprNode::makeFunction): |
| 4738 | * kjs/object_object.cpp: |
| 4739 | (KJS::objectProtoFuncValueOf): |
| 4740 | (KJS::objectProtoFuncHasOwnProperty): |
| 4741 | (KJS::objectProtoFuncIsPrototypeOf): |
| 4742 | (KJS::objectProtoFuncDefineGetter): |
| 4743 | (KJS::objectProtoFuncDefineSetter): |
| 4744 | (KJS::objectProtoFuncLookupGetter): |
| 4745 | (KJS::objectProtoFuncLookupSetter): |
| 4746 | (KJS::objectProtoFuncPropertyIsEnumerable): |
| 4747 | (KJS::objectProtoFuncToLocaleString): |
| 4748 | (KJS::objectProtoFuncToString): |
| 4749 | (KJS::ObjectConstructor::ObjectConstructor): |
| 4750 | (KJS::constructObject): |
| 4751 | (KJS::constructWithObjectConstructor): |
| 4752 | (KJS::ObjectConstructor::getConstructData): |
| 4753 | (KJS::callObjectConstructor): |
| 4754 | (KJS::ObjectConstructor::getCallData): |
| 4755 | * kjs/object_object.h: |
| 4756 | * kjs/string_object.cpp: |
| 4757 | (KJS::replace): |
| 4758 | (KJS::stringProtoFuncToString): |
| 4759 | (KJS::stringProtoFuncValueOf): |
| 4760 | (KJS::stringProtoFuncCharAt): |
| 4761 | (KJS::stringProtoFuncCharCodeAt): |
| 4762 | (KJS::stringProtoFuncConcat): |
| 4763 | (KJS::stringProtoFuncIndexOf): |
| 4764 | (KJS::stringProtoFuncLastIndexOf): |
| 4765 | (KJS::stringProtoFuncMatch): |
| 4766 | (KJS::stringProtoFuncSearch): |
| 4767 | (KJS::stringProtoFuncReplace): |
| 4768 | (KJS::stringProtoFuncSlice): |
| 4769 | (KJS::stringProtoFuncSplit): |
| 4770 | (KJS::stringProtoFuncSubstr): |
| 4771 | (KJS::stringProtoFuncSubstring): |
| 4772 | (KJS::stringProtoFuncToLowerCase): |
| 4773 | (KJS::stringProtoFuncToUpperCase): |
| 4774 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 4775 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 4776 | (KJS::stringProtoFuncLocaleCompare): |
| 4777 | (KJS::stringProtoFuncBig): |
| 4778 | (KJS::stringProtoFuncSmall): |
| 4779 | (KJS::stringProtoFuncBlink): |
| 4780 | (KJS::stringProtoFuncBold): |
| 4781 | (KJS::stringProtoFuncFixed): |
| 4782 | (KJS::stringProtoFuncItalics): |
| 4783 | (KJS::stringProtoFuncStrike): |
| 4784 | (KJS::stringProtoFuncSub): |
| 4785 | (KJS::stringProtoFuncSup): |
| 4786 | (KJS::stringProtoFuncFontcolor): |
| 4787 | (KJS::stringProtoFuncFontsize): |
| 4788 | (KJS::stringProtoFuncAnchor): |
| 4789 | (KJS::stringProtoFuncLink): |
| 4790 | (KJS::stringFromCharCode): |
| 4791 | (KJS::StringConstructor::StringConstructor): |
| 4792 | (KJS::constructWithStringConstructor): |
| 4793 | (KJS::StringConstructor::getConstructData): |
| 4794 | (KJS::callStringConstructor): |
| 4795 | (KJS::StringConstructor::getCallData): |
| 4796 | * kjs/string_object.h: |
| 4797 | |
| 4798 | 2008-06-23 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 4799 | |
| 4800 | Reviewed by Oliver. |
| 4801 | |
| 4802 | Bug 19716: REGRESSION (SquirrelFish): Reproducible crash after entering a username at mint.com |
| 4803 | <https://bugs.webkit.org/show_bug.cgi?id=19716> |
| 4804 | |
| 4805 | When unwinding callframes for exceptions, check whether the callframe |
| 4806 | was created by a reentrant native call to JavaScript after tearing off |
| 4807 | the local variables instead of before. |
| 4808 | |
| 4809 | * VM/Machine.cpp: |
| 4810 | (KJS::Machine::unwindCallFrame): |
| 4811 | |
| 4812 | 2008-06-23 Mark Rowe <mrowe@apple.com> |
| 4813 | |
| 4814 | Reviewed by Oliver Hunt. |
| 4815 | |
| 4816 | Get testapi passing again in a debug build. |
| 4817 | |
| 4818 | * API/testapi.c: |
| 4819 | (main): Update the expected output of calling JSValueMakeString on a function object. |
| 4820 | |
| 4821 | 2008-06-21 Mark Rowe <mrowe@apple.com> |
| 4822 | |
| 4823 | Reviewed by Sam Weinig. |
| 4824 | |
| 4825 | Print a blank line when exiting the jsc interactive mode to ensure that the shell |
| 4826 | prompt will start on a new line. |
| 4827 | |
| 4828 | * kjs/Shell.cpp: |
| 4829 | (runInteractive): |
| 4830 | |
| 4831 | 2008-06-21 Mark Rowe <mrowe@apple.com> |
| 4832 | |
| 4833 | Rubber-stamped by Sam Weinig. |
| 4834 | |
| 4835 | Tweak the paths of the items in the "tests" group to clean things up a little. |
| 4836 | |
| 4837 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 4838 | |
| 4839 | 2008-06-21 Mark Rowe <mrowe@apple.com> |
| 4840 | |
| 4841 | Rubber-stamped by Sam Weinig. |
| 4842 | |
| 4843 | Fix jsc to link against libedit.dylib rather than libedit.2.dylib. |
| 4844 | |
| 4845 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 4846 | |
| 4847 | 2008-06-21 Mark Rowe <mrowe@apple.com> |
| 4848 | |
| 4849 | Reviewed by Sam Weinig. |
| 4850 | |
| 4851 | Copy the JavaScriptCore shell (jsc) into JavaScriptCore.framework so that it will |
| 4852 | be included in nightly builds. |
| 4853 | https://bugs.webkit.org/show_bug.cgi?id=19691 |
| 4854 | |
| 4855 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 4856 | |
| 4857 | 2008-06-21 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 4858 | |
| 4859 | Reviewed by Mark Rowe. |
| 4860 | |
| 4861 | Fix the build for non-Mac Darwin platforms by disabling their support |
| 4862 | for readline in the JavaScript shell. |
| 4863 | |
| 4864 | * kjs/config.h: |
| 4865 | |
| 4866 | 2008-06-20 Timothy Hatcher <timothy@apple.com> |
| 4867 | |
| 4868 | Use member function pointers for the Profile::forEach function. |
| 4869 | Eliminating a few static functions and simplified things a little. |
| 4870 | |
| 4871 | Reviewed by Alexey Proskuryakov. |
| 4872 | |
| 4873 | * JavaScriptCore.exp: Change the symbol for forEach. |
| 4874 | * profiler/Profile.cpp: |
| 4875 | (KJS::Profile::forEach): Use a member function pointer. |
| 4876 | * profiler/Profile.h: |
| 4877 | (KJS::Profile::sortTotalTimeDescending): Pass a function pointer. |
| 4878 | (KJS::Profile::sortTotalTimeAscending): Ditto. |
| 4879 | (KJS::Profile::sortSelfTimeDescending): Ditto. |
| 4880 | (KJS::Profile::sortSelfTimeAscending): Ditto. |
| 4881 | (KJS::Profile::sortCallsDescending): Ditto. |
| 4882 | * profiler/ProfileNode.h: |
| 4883 | (KJS::ProfileNode::sortTotalTimeDescending): No longer static. |
| 4884 | (KJS::ProfileNode::sortTotalTimeAscending): Ditto. |
| 4885 | (KJS::ProfileNode::sortSelfTimeDescending): Ditto. |
| 4886 | (KJS::ProfileNode::sortSelfTimeAscending): Ditto. |
| 4887 | (KJS::ProfileNode::sortCallsDescending): Ditto. |
| 4888 | |
| 4889 | 2008-06-20 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 4890 | |
| 4891 | Reviewed by Oliver. |
| 4892 | |
| 4893 | Remove unused destructors. |
| 4894 | |
| 4895 | * kjs/nodes.cpp: |
| 4896 | * kjs/nodes.h: |
| 4897 | |
| 4898 | 2008-06-20 Timothy Hatcher <timothy@apple.com> |
| 4899 | |
| 4900 | Fixed an ASSERT(m_actualSelfTime <= m_actualTotalTime) when starting |
| 4901 | and stopping a profile from the Develop menu. Also prevents |
| 4902 | inserting an incorrect parent node as the new head after profiling |
| 4903 | is stopped from the Develop menu. |
| 4904 | |
| 4905 | Reviewed by Dan Bernstein. |
| 4906 | |
| 4907 | * profiler/Profile.cpp: |
| 4908 | (KJS::Profile::stopProfiling): If the current node is already the head |
| 4909 | then there is no more need to record future nodes in didExecute. |
| 4910 | (KJS::Profile::didExecute): Move the code of setupCurrentNodeAsStopped |
| 4911 | into here since this was the only caller. When setting the total time |
| 4912 | keep any current total time while adding the self time of the head. |
| 4913 | (KJS::Profile::setupCurrentNodeAsStopped): Removed. |
| 4914 | * profiler/Profile.h: Removed setupCurrentNodeAsStopped. |
| 4915 | |
| 4916 | 2008-06-20 Kevin Ollivier <kevino@theolliviers.com> |
| 4917 | |
| 4918 | !USE(MULTIPLE_THREADS) on Darwin build fix |
| 4919 | |
| 4920 | * kjs/InitializeThreading.cpp: |
| 4921 | (KJS::initializeThreading): |
| 4922 | * kjs/collector.h: |
| 4923 | |
| 4924 | 2008-06-20 Kevin McCullough <kmccullough@apple.com> |
| 4925 | |
| 4926 | -Leopard Build Fix. |
| 4927 | |
| 4928 | * profiler/Profile.cpp: |
| 4929 | (KJS::Profile::removeProfileStart): |
| 4930 | (KJS::Profile::removeProfileEnd): |
| 4931 | |
| 4932 | 2008-06-20 Kevin McCullough <kmccullough@apple.com> |
| 4933 | |
| 4934 | Just giving credit. |
| 4935 | |
| 4936 | * ChangeLog: |
| 4937 | |
| 4938 | 2008-06-20 Kevin McCullough <kmccullough@apple.com> |
| 4939 | |
| 4940 | Reviewed by Tim and Dan. |
| 4941 | |
| 4942 | <rdar://problem/6024846> JSProfiler: ASSERT hit in Profiler. |
| 4943 | - Because InspectorController can call startProfiling() and |
| 4944 | stopProfiling() we cannot assert that console.profile() and |
| 4945 | console.profileEnd() will be in the profile tree. |
| 4946 | |
| 4947 | * profiler/Profile.cpp: |
| 4948 | (KJS::Profile::removeProfileStart): |
| 4949 | (KJS::Profile::removeProfileEnd): |
| 4950 | |
| 4951 | 2008-06-20 Kevin McCullough <kmccullough@apple.com> |
| 4952 | |
| 4953 | Reviewed by Tim. |
| 4954 | |
| 4955 | <rdar://problem/5958770> JSProfiler: Time incorrectly given to (idle) |
| 4956 | if profiling is started and finished within the same function. (19230) |
| 4957 | - Now we profile one more stack frame up from the last frame to allocate |
| 4958 | the time spent in it, if it exists. |
| 4959 | |
| 4960 | * JavaScriptCore.exp: |
| 4961 | * VM/Machine.cpp: We need to let the profiler know when the JS program |
| 4962 | has finished since that is what will actually stop the profiler instead |
| 4963 | of just calling stopProfiling(). |
| 4964 | (KJS::Machine::execute): |
| 4965 | * profiler/Profile.cpp: |
| 4966 | (KJS::Profile::create): Moved from Profile.h since it was getting pretty |
| 4967 | long. |
| 4968 | (KJS::Profile::Profile): We now have a client, which is a listener who |
| 4969 | we will return this profile to, once it has actually finished. |
| 4970 | (KJS::Profile::stopProfiling): Instead of fully stopping the profiler |
| 4971 | here, we set the flag and keep it profiling in the background. |
| 4972 | (KJS::Profile::didFinishAllExecution): This is where the profiler |
| 4973 | actually finishes and creates the (idle) node if one should be made. |
| 4974 | (KJS::Profile::removeProfileStart): Don't use m_currentNode since it is |
| 4975 | needed by the profiler as it runs silently in the background. |
| 4976 | (KJS::Profile::removeProfileEnd): Ditto. |
| 4977 | (KJS::Profile::willExecute): Don't profile new functions if we have |
| 4978 | stopped profiling. |
| 4979 | (KJS::Profile::didExecute): Only record one more return as all the |
| 4980 | remaining time will be attributed to that function. |
| 4981 | (KJS::Profile::setupCurrentNodeAsStopped): Sets the current node's time. |
| 4982 | * profiler/Profile.h: Added functions and variables for the above |
| 4983 | changes. |
| 4984 | (KJS::Profile::client): |
| 4985 | * profiler/ProfileNode.h: |
| 4986 | (KJS::CallIdentifier::toString): Debug method. |
| 4987 | * profiler/Profiler.cpp: Added support for the ProfilerClient. |
| 4988 | (KJS::Profiler::startProfiling): |
| 4989 | (KJS::Profiler::stopProfiling): No longer return sthe profile. |
| 4990 | (KJS::Profiler::didFinishAllExecution): Now returns the profile to the |
| 4991 | client instead of stopProfiling. |
| 4992 | * profiler/Profiler.h: |
| 4993 | (KJS::ProfilerClient::~ProfilerClient): Clients will implement this |
| 4994 | interface. |
| 4995 | |
| 4996 | 2008-06-19 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 4997 | |
| 4998 | Reviewed by Simon. |
| 4999 | |
| 5000 | Surpress compiler warning (int vs unsigned comparison). |
| 5001 | |
| 5002 | * wtf/unicode/qt4/UnicodeQt4.h: |
| 5003 | (WTF::Unicode::toLower): |
| 5004 | |
| 5005 | 2008-06-19 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 5006 | |
| 5007 | Reviewed by Timothy Hatcher. |
| 5008 | |
| 5009 | Introduce compiler define for MinGW, to have COMPILER(MINGW). |
| 5010 | |
| 5011 | * wtf/Platform.h: |
| 5012 | |
| 5013 | 2008-06-19 Alexey Proskuryakov <ap@webkit.org> |
| 5014 | |
| 5015 | Reviewed by Geoff. |
| 5016 | |
| 5017 | Make Machine per-JSGlobalData. |
| 5018 | |
| 5019 | * VM/CodeBlock.cpp: |
| 5020 | (KJS::CodeBlock::dump): |
| 5021 | * VM/CodeGenerator.cpp: |
| 5022 | (KJS::CodeGenerator::emitOpcode): |
| 5023 | * VM/Machine.cpp: |
| 5024 | (KJS::callEval): |
| 5025 | (KJS::Machine::unwindCallFrame): |
| 5026 | (KJS::Machine::throwException): |
| 5027 | (KJS::Machine::execute): |
| 5028 | (KJS::Machine::debug): |
| 5029 | * VM/Machine.h: |
| 5030 | * kjs/DebuggerCallFrame.cpp: |
| 5031 | (KJS::DebuggerCallFrame::evaluate): |
| 5032 | * kjs/DebuggerCallFrame.h: |
| 5033 | (KJS::DebuggerCallFrame::DebuggerCallFrame): |
| 5034 | * kjs/ExecState.cpp: |
| 5035 | (KJS::ExecState::ExecState): |
| 5036 | * kjs/ExecState.h: |
| 5037 | (KJS::ExecState::machine): |
| 5038 | * kjs/JSFunction.cpp: |
| 5039 | (KJS::JSFunction::callAsFunction): |
| 5040 | (KJS::JSFunction::argumentsGetter): |
| 5041 | (KJS::JSFunction::callerGetter): |
| 5042 | (KJS::JSFunction::construct): |
| 5043 | (KJS::globalFuncEval): |
| 5044 | * kjs/JSGlobalData.cpp: |
| 5045 | (KJS::JSGlobalData::JSGlobalData): |
| 5046 | * kjs/JSGlobalData.h: |
| 5047 | * kjs/interpreter.cpp: |
| 5048 | (KJS::Interpreter::evaluate): |
| 5049 | |
| 5050 | 2008-06-19 Alp Toker <alp@nuanti.com> |
| 5051 | |
| 5052 | GTK+/autotools build fix. JSGlobalObject.cpp in now in |
| 5053 | AllInOneFile.cpp and shouldn't be built separately. |
| 5054 | |
| 5055 | * GNUmakefile.am: |
| 5056 | |
| 5057 | 2008-06-19 Alexey Proskuryakov <ap@webkit.org> |
| 5058 | |
| 5059 | Reviewed by Darin. |
| 5060 | |
| 5061 | Get rid of some threadInstance calls. |
| 5062 | |
| 5063 | * kjs/JSGlobalObject.cpp: |
| 5064 | (KJS::JSGlobalObject::init): |
| 5065 | * kjs/Parser.cpp: |
| 5066 | (KJS::Parser::parse): |
| 5067 | * kjs/Shell.cpp: |
| 5068 | (jscmain): |
| 5069 | |
| 5070 | 2008-06-19 Alexey Proskuryakov <ap@webkit.org> |
| 5071 | |
| 5072 | Reviewed by Sam. |
| 5073 | |
| 5074 | Fix an assertion failure at startup. |
| 5075 | |
| 5076 | * kjs/JSObject.h: (KJS::JSObject::JSObject): Allow jsNull prototype in an assertion (I had |
| 5077 | it fixed in a wrong copy of the file, so I wasn't getting the failure). |
| 5078 | |
| 5079 | 2008-06-19 Alexey Proskuryakov <ap@webkit.org> |
| 5080 | |
| 5081 | Build fix. |
| 5082 | |
| 5083 | * kjs/collector.cpp: |
| 5084 | (KJS::Heap::Heap): |
| 5085 | (KJS::allocateBlock): |
| 5086 | * kjs/collector.h: |
| 5087 | No, #if PLATFORM(UNIX) was not right. I've just moved the unsafe initialization back for now, |
| 5088 | as the platforms that use that code path do not use multiple threads yet. |
| 5089 | |
| 5090 | 2008-06-19 Alexey Proskuryakov <ap@webkit.org> |
| 5091 | |
| 5092 | Windows and Qt build fixes. |
| 5093 | |
| 5094 | * kjs/collector.h: |
| 5095 | * kjs/collector.cpp: |
| 5096 | (KJS::Heap::Heap): |
| 5097 | Wrapped m_pagesize in #if PLATFORM(UNIX), which should better match the sequence of #elifs |
| 5098 | in allocateBlock(). Changed MIN_ARRAY_SIZE to be explicitly size_t, as this type is different |
| 5099 | on different platforms. |
| 5100 | |
| 5101 | 2008-06-17 Alexey Proskuryakov <ap@webkit.org> |
| 5102 | |
| 5103 | Reviewed by Darin. |
| 5104 | |
| 5105 | Prepare JavaScript heap for being per-thread. |
| 5106 | |
| 5107 | * kjs/ExecState.h: Shuffle includes, making it possible to include ExecState.h in JSValue.h. |
| 5108 | (KJS::ExecState::heap): Added an accessor. |
| 5109 | |
| 5110 | * API/JSBase.cpp: (JSGarbageCollect): Collect both shared and per-thread heaps. |
| 5111 | |
| 5112 | * API/JSContextRef.cpp: (JSGlobalContextCreate): When allocating JSGlobalObject, indicate |
| 5113 | that it belongs to a shared heap. |
| 5114 | |
| 5115 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 5116 | * kjs/AllInOneFile.cpp: |
| 5117 | Moved JSGlobalObject.cpp to AllInOneFile, as a build fix for inlineAllocate magic. |
| 5118 | |
| 5119 | * VM/CodeGenerator.h: (KJS::CodeGenerator::globalExec): Added an accessor (working via |
| 5120 | m_scopeChain). |
| 5121 | |
| 5122 | * VM/RegisterFile.h: |
| 5123 | (KJS::RegisterFile::mark): |
| 5124 | * VM/RegisterFileStack.h: |
| 5125 | (KJS::RegisterFileStack::mark): |
| 5126 | Made these pseudo-mark functions take Heap*. |
| 5127 | |
| 5128 | * kjs/InitializeThreading.cpp: |
| 5129 | (KJS::initializeThreading): Initialize heap introspector. |
| 5130 | |
| 5131 | * kjs/JSGlobalData.h: Added Heap to the structure. |
| 5132 | |
| 5133 | * kjs/JSGlobalData.cpp: |
| 5134 | (KJS::JSGlobalData::JSGlobalData): Initialize Heap. |
| 5135 | (KJS::JSGlobalData::sharedInstance): Added a method to access shared global data instance |
| 5136 | for legacy clients. |
| 5137 | |
| 5138 | * kjs/JSGlobalObject.cpp: |
| 5139 | (KJS::JSGlobalObject::~JSGlobalObject): Changed to work with per-thread head; fixed list |
| 5140 | maintenance logic. |
| 5141 | (KJS::JSGlobalObject::init): Changed to work with per-thread head. |
| 5142 | (KJS::JSGlobalObject::put): Assert that a cross-heap operation is not being attempted. |
| 5143 | (KJS::JSGlobalObject::reset): Pass ExecState* where now required. |
| 5144 | (KJS::JSGlobalObject::mark): Pass the current heap to RegisterFileStack::mark. |
| 5145 | (KJS::JSGlobalObject::operator new): Overload operator new to use per-thread or shared heap. |
| 5146 | * kjs/JSGlobalObject.h: Removed static s_head member. |
| 5147 | |
| 5148 | * kjs/PropertyMap.h: (KJS::PropertyMap::PropertyMap): Removed unused SavedProperty. |
| 5149 | |
| 5150 | * kjs/collector.h: Turned Collector into an actual object with its own data, renamed to Heap. |
| 5151 | (KJS::Heap::initializeHeapIntrospector): Added. |
| 5152 | (KJS::Heap::heap): Added a method to determine which heap a JSValue is in, if any. |
| 5153 | (KJS::Heap::allocate): Made non-static. |
| 5154 | (KJS::Heap::inlineAllocateNumber): Ditto. |
| 5155 | (KJS::Heap::markListSet): Ditto. |
| 5156 | (KJS::Heap::cellBlock): Ditto. |
| 5157 | (KJS::Heap::cellOffset): Ditto. |
| 5158 | (KJS::Heap::isCellMarked): Ditto. |
| 5159 | (KJS::Heap::markCell): Ditto. |
| 5160 | (KJS::Heap::reportExtraMemoryCost): Ditto. |
| 5161 | (KJS::CollectorBlock): Added a back-reference to Heap for Heap::heap() method. |
| 5162 | (KJS::SmallCellCollectorBlock): Ditto. |
| 5163 | |
| 5164 | * kjs/collector.cpp: Changed MIN_ARRAY_SIZE to a #define to avoid a PIC branch. Removed |
| 5165 | main thread related machinery. |
| 5166 | (KJS::Heap::Heap): Initialize the newly added data members. |
| 5167 | (KJS::allocateBlock): Marked NEVER_INLINE, as this is a rare case that uses a PIC branch. |
| 5168 | Moved static pagesize to the class to make it safely initialized. |
| 5169 | (KJS::Heap::heapAllocate): Initialize heap back reference after a new block is allocated. |
| 5170 | (KJS::Heap::registerThread): Removed introspector initialization, as it is now performed |
| 5171 | in InitializeThreading.cpp. |
| 5172 | (KJS::Heap::markOtherThreadConservatively): Assert that the "other thread" case only occurs |
| 5173 | for legacy clients using a shared heap. |
| 5174 | (KJS::Heap::markStackObjectsConservatively): Moved fastMallocForbid/Allow down here, since |
| 5175 | it doesn't need to be forbidden during other GC phases. |
| 5176 | |
| 5177 | * kjs/JSImmediate.h: |
| 5178 | (KJS::jsUndefined): |
| 5179 | (KJS::jsNull): |
| 5180 | (KJS::jsBoolean): |
| 5181 | Moved from JSvalue.h, to make these usable in files that cannot include JSValue.h (such |
| 5182 | as list.h). |
| 5183 | |
| 5184 | * API/JSCallbackObjectFunctions.h: |
| 5185 | (KJS::::staticFunctionGetter): |
| 5186 | * API/JSClassRef.cpp: |
| 5187 | (OpaqueJSClass::prototype): |
| 5188 | * API/JSObjectRef.cpp: |
| 5189 | (JSObjectMake): |
| 5190 | (JSObjectMakeFunctionWithCallback): |
| 5191 | (JSObjectMakeConstructor): |
| 5192 | (JSObjectMakeFunction): |
| 5193 | * API/JSValueRef.cpp: |
| 5194 | (JSValueMakeNumber): |
| 5195 | (JSValueMakeString): |
| 5196 | * JavaScriptCore.exp: |
| 5197 | * VM/CodeGenerator.cpp: |
| 5198 | (KJS::CodeGenerator::emitLoad): |
| 5199 | * VM/JSPropertyNameIterator.cpp: |
| 5200 | (KJS::JSPropertyNameIterator::create): |
| 5201 | (KJS::JSPropertyNameIterator::next): |
| 5202 | * VM/Machine.cpp: |
| 5203 | (KJS::jsAddSlowCase): |
| 5204 | (KJS::jsAdd): |
| 5205 | (KJS::jsTypeStringForValue): |
| 5206 | (KJS::scopeChainForCall): |
| 5207 | (KJS::Machine::throwException): |
| 5208 | (KJS::Machine::execute): |
| 5209 | (KJS::Machine::privateExecute): |
| 5210 | (KJS::Machine::retrieveArguments): |
| 5211 | * kjs/ArrayPrototype.cpp: |
| 5212 | (KJS::arrayProtoFuncToString): |
| 5213 | (KJS::arrayProtoFuncToLocaleString): |
| 5214 | (KJS::arrayProtoFuncJoin): |
| 5215 | (KJS::arrayProtoFuncConcat): |
| 5216 | (KJS::arrayProtoFuncPop): |
| 5217 | (KJS::arrayProtoFuncPush): |
| 5218 | (KJS::arrayProtoFuncShift): |
| 5219 | (KJS::arrayProtoFuncSlice): |
| 5220 | (KJS::arrayProtoFuncSplice): |
| 5221 | (KJS::arrayProtoFuncUnShift): |
| 5222 | (KJS::arrayProtoFuncFilter): |
| 5223 | (KJS::arrayProtoFuncMap): |
| 5224 | (KJS::arrayProtoFuncEvery): |
| 5225 | (KJS::arrayProtoFuncForEach): |
| 5226 | (KJS::arrayProtoFuncSome): |
| 5227 | (KJS::arrayProtoFuncIndexOf): |
| 5228 | (KJS::arrayProtoFuncLastIndexOf): |
| 5229 | (KJS::ArrayConstructor::ArrayConstructor): |
| 5230 | (KJS::ArrayConstructor::construct): |
| 5231 | (KJS::ArrayConstructor::callAsFunction): |
| 5232 | * kjs/BooleanObject.cpp: |
| 5233 | (KJS::BooleanPrototype::BooleanPrototype): |
| 5234 | (KJS::booleanProtoFuncToString): |
| 5235 | (KJS::BooleanConstructor::BooleanConstructor): |
| 5236 | (KJS::BooleanConstructor::construct): |
| 5237 | * kjs/FunctionPrototype.cpp: |
| 5238 | (KJS::FunctionPrototype::FunctionPrototype): |
| 5239 | (KJS::functionProtoFuncToString): |
| 5240 | (KJS::FunctionConstructor::FunctionConstructor): |
| 5241 | (KJS::FunctionConstructor::construct): |
| 5242 | * kjs/JSActivation.cpp: |
| 5243 | (KJS::JSActivation::createArgumentsObject): |
| 5244 | * kjs/JSArray.cpp: |
| 5245 | (KJS::JSArray::JSArray): |
| 5246 | (KJS::JSArray::lengthGetter): |
| 5247 | * kjs/JSFunction.cpp: |
| 5248 | (KJS::JSFunction::lengthGetter): |
| 5249 | (KJS::JSFunction::construct): |
| 5250 | (KJS::Arguments::Arguments): |
| 5251 | (KJS::encode): |
| 5252 | (KJS::decode): |
| 5253 | (KJS::globalFuncParseInt): |
| 5254 | (KJS::globalFuncParseFloat): |
| 5255 | (KJS::globalFuncEscape): |
| 5256 | (KJS::globalFuncUnescape): |
| 5257 | (KJS::PrototypeFunction::PrototypeFunction): |
| 5258 | (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction): |
| 5259 | * kjs/JSImmediate.cpp: |
| 5260 | (KJS::JSImmediate::toObject): |
| 5261 | * kjs/JSLock.cpp: |
| 5262 | (KJS::JSLock::registerThread): |
| 5263 | * kjs/JSObject.cpp: |
| 5264 | (KJS::JSObject::put): |
| 5265 | (KJS::JSObject::defineGetter): |
| 5266 | (KJS::JSObject::defineSetter): |
| 5267 | (KJS::Error::create): |
| 5268 | * kjs/JSObject.h: |
| 5269 | (KJS::JSObject::putDirect): |
| 5270 | * kjs/JSString.h: |
| 5271 | (KJS::JSString::JSString): |
| 5272 | * kjs/JSValue.cpp: |
| 5273 | (KJS::JSCell::operator new): |
| 5274 | (KJS::jsString): |
| 5275 | (KJS::jsOwnedString): |
| 5276 | * kjs/JSValue.h: |
| 5277 | (KJS::JSNumberCell::operator new): |
| 5278 | (KJS::jsNumberCell): |
| 5279 | (KJS::jsNaN): |
| 5280 | (KJS::jsNumber): |
| 5281 | (KJS::JSCell::marked): |
| 5282 | (KJS::JSCell::mark): |
| 5283 | (KJS::JSValue::toJSNumber): |
| 5284 | * kjs/MathObject.cpp: |
| 5285 | (KJS::MathObject::getValueProperty): |
| 5286 | (KJS::mathProtoFuncAbs): |
| 5287 | (KJS::mathProtoFuncACos): |
| 5288 | (KJS::mathProtoFuncASin): |
| 5289 | (KJS::mathProtoFuncATan): |
| 5290 | (KJS::mathProtoFuncATan2): |
| 5291 | (KJS::mathProtoFuncCeil): |
| 5292 | (KJS::mathProtoFuncCos): |
| 5293 | (KJS::mathProtoFuncExp): |
| 5294 | (KJS::mathProtoFuncFloor): |
| 5295 | (KJS::mathProtoFuncLog): |
| 5296 | (KJS::mathProtoFuncMax): |
| 5297 | (KJS::mathProtoFuncMin): |
| 5298 | (KJS::mathProtoFuncPow): |
| 5299 | (KJS::mathProtoFuncRandom): |
| 5300 | (KJS::mathProtoFuncRound): |
| 5301 | (KJS::mathProtoFuncSin): |
| 5302 | (KJS::mathProtoFuncSqrt): |
| 5303 | (KJS::mathProtoFuncTan): |
| 5304 | * kjs/NumberObject.cpp: |
| 5305 | (KJS::NumberPrototype::NumberPrototype): |
| 5306 | (KJS::numberProtoFuncToString): |
| 5307 | (KJS::numberProtoFuncToLocaleString): |
| 5308 | (KJS::numberProtoFuncToFixed): |
| 5309 | (KJS::numberProtoFuncToExponential): |
| 5310 | (KJS::numberProtoFuncToPrecision): |
| 5311 | (KJS::NumberConstructor::NumberConstructor): |
| 5312 | (KJS::NumberConstructor::getValueProperty): |
| 5313 | (KJS::NumberConstructor::construct): |
| 5314 | (KJS::NumberConstructor::callAsFunction): |
| 5315 | * kjs/RegExpObject.cpp: |
| 5316 | (KJS::RegExpPrototype::RegExpPrototype): |
| 5317 | (KJS::regExpProtoFuncToString): |
| 5318 | (KJS::RegExpObject::getValueProperty): |
| 5319 | (KJS::RegExpConstructor::RegExpConstructor): |
| 5320 | (KJS::RegExpMatchesArray::fillArrayInstance): |
| 5321 | (KJS::RegExpConstructor::arrayOfMatches): |
| 5322 | (KJS::RegExpConstructor::getBackref): |
| 5323 | (KJS::RegExpConstructor::getLastParen): |
| 5324 | (KJS::RegExpConstructor::getLeftContext): |
| 5325 | (KJS::RegExpConstructor::getRightContext): |
| 5326 | (KJS::RegExpConstructor::getValueProperty): |
| 5327 | (KJS::RegExpConstructor::construct): |
| 5328 | * kjs/RegExpObject.h: |
| 5329 | * kjs/Shell.cpp: |
| 5330 | (GlobalObject::GlobalObject): |
| 5331 | (functionGC): |
| 5332 | (functionRun): |
| 5333 | (functionReadline): |
| 5334 | (jscmain): |
| 5335 | * kjs/date_object.cpp: |
| 5336 | (KJS::formatLocaleDate): |
| 5337 | (KJS::DatePrototype::DatePrototype): |
| 5338 | (KJS::DateConstructor::DateConstructor): |
| 5339 | (KJS::DateConstructor::construct): |
| 5340 | (KJS::DateConstructor::callAsFunction): |
| 5341 | (KJS::DateFunction::DateFunction): |
| 5342 | (KJS::DateFunction::callAsFunction): |
| 5343 | (KJS::dateProtoFuncToString): |
| 5344 | (KJS::dateProtoFuncToUTCString): |
| 5345 | (KJS::dateProtoFuncToDateString): |
| 5346 | (KJS::dateProtoFuncToTimeString): |
| 5347 | (KJS::dateProtoFuncToLocaleString): |
| 5348 | (KJS::dateProtoFuncToLocaleDateString): |
| 5349 | (KJS::dateProtoFuncToLocaleTimeString): |
| 5350 | (KJS::dateProtoFuncValueOf): |
| 5351 | (KJS::dateProtoFuncGetTime): |
| 5352 | (KJS::dateProtoFuncGetFullYear): |
| 5353 | (KJS::dateProtoFuncGetUTCFullYear): |
| 5354 | (KJS::dateProtoFuncToGMTString): |
| 5355 | (KJS::dateProtoFuncGetMonth): |
| 5356 | (KJS::dateProtoFuncGetUTCMonth): |
| 5357 | (KJS::dateProtoFuncGetDate): |
| 5358 | (KJS::dateProtoFuncGetUTCDate): |
| 5359 | (KJS::dateProtoFuncGetDay): |
| 5360 | (KJS::dateProtoFuncGetUTCDay): |
| 5361 | (KJS::dateProtoFuncGetHours): |
| 5362 | (KJS::dateProtoFuncGetUTCHours): |
| 5363 | (KJS::dateProtoFuncGetMinutes): |
| 5364 | (KJS::dateProtoFuncGetUTCMinutes): |
| 5365 | (KJS::dateProtoFuncGetSeconds): |
| 5366 | (KJS::dateProtoFuncGetUTCSeconds): |
| 5367 | (KJS::dateProtoFuncGetMilliSeconds): |
| 5368 | (KJS::dateProtoFuncGetUTCMilliseconds): |
| 5369 | (KJS::dateProtoFuncGetTimezoneOffset): |
| 5370 | (KJS::dateProtoFuncSetTime): |
| 5371 | (KJS::setNewValueFromTimeArgs): |
| 5372 | (KJS::setNewValueFromDateArgs): |
| 5373 | (KJS::dateProtoFuncSetYear): |
| 5374 | (KJS::dateProtoFuncGetYear): |
| 5375 | * kjs/error_object.cpp: |
| 5376 | (KJS::ErrorPrototype::ErrorPrototype): |
| 5377 | (KJS::errorProtoFuncToString): |
| 5378 | (KJS::ErrorConstructor::ErrorConstructor): |
| 5379 | (KJS::ErrorConstructor::construct): |
| 5380 | (KJS::NativeErrorPrototype::NativeErrorPrototype): |
| 5381 | (KJS::NativeErrorConstructor::NativeErrorConstructor): |
| 5382 | (KJS::NativeErrorConstructor::construct): |
| 5383 | * kjs/identifier.h: |
| 5384 | * kjs/internal.cpp: |
| 5385 | (KJS::StringObject::create): |
| 5386 | (KJS::JSString::lengthGetter): |
| 5387 | (KJS::JSString::indexGetter): |
| 5388 | (KJS::JSString::indexNumericPropertyGetter): |
| 5389 | * kjs/interpreter.cpp: |
| 5390 | * kjs/list.cpp: |
| 5391 | (KJS::ArgList::slowAppend): |
| 5392 | * kjs/list.h: |
| 5393 | * kjs/lookup.h: |
| 5394 | (KJS::staticFunctionGetter): |
| 5395 | (KJS::cacheGlobalObject): |
| 5396 | * kjs/nodes.cpp: |
| 5397 | (KJS::Node::emitThrowError): |
| 5398 | (KJS::StringNode::emitCode): |
| 5399 | (KJS::ArrayNode::emitCode): |
| 5400 | (KJS::FuncDeclNode::makeFunction): |
| 5401 | (KJS::FuncExprNode::makeFunction): |
| 5402 | * kjs/nodes.h: |
| 5403 | * kjs/object_object.cpp: |
| 5404 | (KJS::ObjectPrototype::ObjectPrototype): |
| 5405 | (KJS::objectProtoFuncToLocaleString): |
| 5406 | (KJS::objectProtoFuncToString): |
| 5407 | (KJS::ObjectConstructor::ObjectConstructor): |
| 5408 | (KJS::ObjectConstructor::construct): |
| 5409 | * kjs/protect.h: |
| 5410 | (KJS::gcProtect): |
| 5411 | (KJS::gcUnprotect): |
| 5412 | * kjs/string_object.cpp: |
| 5413 | (KJS::StringObject::StringObject): |
| 5414 | (KJS::StringPrototype::StringPrototype): |
| 5415 | (KJS::replace): |
| 5416 | (KJS::stringProtoFuncCharAt): |
| 5417 | (KJS::stringProtoFuncCharCodeAt): |
| 5418 | (KJS::stringProtoFuncConcat): |
| 5419 | (KJS::stringProtoFuncIndexOf): |
| 5420 | (KJS::stringProtoFuncLastIndexOf): |
| 5421 | (KJS::stringProtoFuncMatch): |
| 5422 | (KJS::stringProtoFuncSearch): |
| 5423 | (KJS::stringProtoFuncReplace): |
| 5424 | (KJS::stringProtoFuncSlice): |
| 5425 | (KJS::stringProtoFuncSplit): |
| 5426 | (KJS::stringProtoFuncSubstr): |
| 5427 | (KJS::stringProtoFuncSubstring): |
| 5428 | (KJS::stringProtoFuncToLowerCase): |
| 5429 | (KJS::stringProtoFuncToUpperCase): |
| 5430 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 5431 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 5432 | (KJS::stringProtoFuncLocaleCompare): |
| 5433 | (KJS::stringProtoFuncBig): |
| 5434 | (KJS::stringProtoFuncSmall): |
| 5435 | (KJS::stringProtoFuncBlink): |
| 5436 | (KJS::stringProtoFuncBold): |
| 5437 | (KJS::stringProtoFuncFixed): |
| 5438 | (KJS::stringProtoFuncItalics): |
| 5439 | (KJS::stringProtoFuncStrike): |
| 5440 | (KJS::stringProtoFuncSub): |
| 5441 | (KJS::stringProtoFuncSup): |
| 5442 | (KJS::stringProtoFuncFontcolor): |
| 5443 | (KJS::stringProtoFuncFontsize): |
| 5444 | (KJS::stringProtoFuncAnchor): |
| 5445 | (KJS::stringProtoFuncLink): |
| 5446 | (KJS::StringConstructor::StringConstructor): |
| 5447 | (KJS::StringConstructor::construct): |
| 5448 | (KJS::StringConstructor::callAsFunction): |
| 5449 | (KJS::StringConstructorFunction::StringConstructorFunction): |
| 5450 | (KJS::StringConstructorFunction::callAsFunction): |
| 5451 | * kjs/string_object.h: |
| 5452 | (KJS::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): |
| 5453 | * kjs/ustring.h: |
| 5454 | Updated for the above changes. |
| 5455 | |
| 5456 | 2008-06-17 Timothy Hatcher <timothy@apple.com> |
| 5457 | |
| 5458 | Added a type to DebuggerCallFrame so the under interface can |
| 5459 | distinguish anonymous functions and program call frames. |
| 5460 | |
| 5461 | https://bugs.webkit.org/show_bug.cgi?id=19585 |
| 5462 | |
| 5463 | Reviewed by Geoff Garen. |
| 5464 | |
| 5465 | * JavaScriptCore.exp: Export the DebuggerCallFrame::type symbol. |
| 5466 | * kjs/DebuggerCallFrame.cpp: |
| 5467 | (KJS::DebuggerCallFrame::type): Added. |
| 5468 | * kjs/DebuggerCallFrame.h: |
| 5469 | |
| 5470 | 2008-06-17 Eric Seidel <eric@webkit.org> |
| 5471 | |
| 5472 | Reviewed by Tim H. |
| 5473 | |
| 5474 | Remove bogus ASSERT which tripped every time for those who use PAC files. |
| 5475 | |
| 5476 | * kjs/Parser.cpp: |
| 5477 | (KJS::Parser::parse): |
| 5478 | |
| 5479 | 2008-06-17 Kevin McCullough <kmccullough@apple.com> |
| 5480 | |
| 5481 | Reviewed by Geoff. |
| 5482 | |
| 5483 | <rdar://problem/5951534> JSProfiler: Don't profile console.profile() |
| 5484 | or console.profileEnd() |
| 5485 | |
| 5486 | * profiler/Profile.cpp: |
| 5487 | (KJS::Profile::stopProfiling): Moved the creation of the (idle) node to |
| 5488 | the Profile (not ProfileNode). This makes sense since the Profile |
| 5489 | should be the one to modify the profile tree. Also each stopProfiling() |
| 5490 | does not need to check if it's the head node anymore. Also fixed an |
| 5491 | oddity where I was using willExecute to create the node. |
| 5492 | (KJS::Profile::removeProfileStart): Removes the call to console.profile |
| 5493 | that started this profile. |
| 5494 | (KJS::Profile::removeProfileEnd): Removes the call to console.profileEnd |
| 5495 | that ended this profile. |
| 5496 | * profiler/Profile.h: |
| 5497 | * profiler/ProfileNode.cpp: Moved the creation of the (idle) node to |
| 5498 | the Profile object. |
| 5499 | (KJS::ProfileNode::stopProfiling): |
| 5500 | * profiler/ProfileNode.h: Added some helper functions and whitespace to |
| 5501 | facilitate readability and the removal of profile() and profileEnd() |
| 5502 | from the Profile tree. |
| 5503 | (KJS::CallIdentifier::operator const char* ): |
| 5504 | (KJS::ProfileNode::firstChild): |
| 5505 | (KJS::ProfileNode::lastChild): |
| 5506 | (KJS::ProfileNode::removeChild): |
| 5507 | (KJS::ProfileNode::toString): |
| 5508 | |
| 5509 | 2008-06-17 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 5510 | |
| 5511 | Rubber stamped by Adam Roben. |
| 5512 | |
| 5513 | Include JSGlobalObject.h to fix the build. |
| 5514 | |
| 5515 | * kjs/ScopeChain.cpp: |
| 5516 | |
| 5517 | 2008-06-17 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 5518 | |
| 5519 | Reviewed by Oliver. |
| 5520 | |
| 5521 | Reduce code duplication in emitReadModifyAssignment(). |
| 5522 | |
| 5523 | * kjs/nodes.cpp: |
| 5524 | (KJS::emitReadModifyAssignment): |
| 5525 | |
| 5526 | 2008-06-17 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 5527 | |
| 5528 | Reviewed by Oliver. |
| 5529 | |
| 5530 | Sort includes alphabetically. |
| 5531 | |
| 5532 | * kjs/nodes.cpp: |
| 5533 | |
| 5534 | 2008-06-16 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 5535 | |
| 5536 | Reviewed by Maciej. |
| 5537 | |
| 5538 | Bug 19596: LEAK: Gmail leaks SegmentedVector<RegisterID> |
| 5539 | <https://bugs.webkit.org/show_bug.cgi?id=19596> |
| 5540 | |
| 5541 | When growing SegmentedVector, we start adding segments at the position |
| 5542 | of the last segment, overwriting it. The destructor frees allocated |
| 5543 | segments starting at the segment of index 1, because the segment of |
| 5544 | index 0 is assumed to be the initial inline segment. This causes a leak |
| 5545 | of the segment that is referenced by index 0. Modifying grow() so that |
| 5546 | it starts adding segments at the position after the last segment fixes |
| 5547 | the leak. |
| 5548 | |
| 5549 | Since the initial segment is a special case in the lookup code, this |
| 5550 | bug never manifested itself via incorrect results. |
| 5551 | |
| 5552 | * VM/SegmentedVector.h: |
| 5553 | (KJS::SegmentedVector::grow): |
| 5554 | |
| 5555 | 2008-06-16 Maciej Stachowiak <mjs@apple.com> |
| 5556 | |
| 5557 | Reviewed by Alexey. |
| 5558 | |
| 5559 | - removed nearly unused types.h and LocalStorageEntry.h headers |
| 5560 | |
| 5561 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 5562 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 5563 | * kjs/ExecState.h: |
| 5564 | * kjs/LocalStorageEntry.h: Removed. |
| 5565 | * kjs/RegExpObject.cpp: |
| 5566 | * kjs/error_object.cpp: |
| 5567 | * kjs/grammar.y: |
| 5568 | * kjs/nodes.cpp: |
| 5569 | * kjs/types.h: Removed. |
| 5570 | |
| 5571 | 2008-06-16 Alp Toker <alp@nuanti.com> |
| 5572 | |
| 5573 | Rubber-stamped by Geoff. |
| 5574 | |
| 5575 | Change c++ to c in minidom and testapi emacs mode line comments. |
| 5576 | |
| 5577 | * API/Node.h: |
| 5578 | * API/NodeList.c: |
| 5579 | * API/NodeList.h: |
| 5580 | * API/testapi.c: |
| 5581 | |
| 5582 | 2008-06-16 Alexey Proskuryakov <ap@webkit.org> |
| 5583 | |
| 5584 | Trying to fix Windows build. |
| 5585 | |
| 5586 | * kjs/PropertyNameArray.h: |
| 5587 | * kjs/identifier.cpp: |
| 5588 | Include ExecState.h |
| 5589 | |
| 5590 | 2008-06-16 Geoffrey Garen <ggaren@apple.com> |
| 5591 | |
| 5592 | Reviewed by Oliver Hunt. |
| 5593 | |
| 5594 | Slight cleanup to the SymbolTableEntry class. |
| 5595 | |
| 5596 | Renamed isEmpty to isNull, since we usually use "empty" to mean "holds |
| 5597 | the valid, empty value", and "null" to mean "holds no value". |
| 5598 | |
| 5599 | Changed an "== 0" to a "!", to match our style guidelines. |
| 5600 | |
| 5601 | Added some ASSERTs to verify the (possibly questionable) assumption that |
| 5602 | all register indexes will have their high two bits set. Also clarified a |
| 5603 | comment to make that assumption clear. |
| 5604 | |
| 5605 | 2008-06-16 Alexey Proskuryakov <ap@webkit.org> |
| 5606 | |
| 5607 | Reviewed by Darin. |
| 5608 | |
| 5609 | Initialize functionQueueMutex in a safe manner. |
| 5610 | |
| 5611 | * wtf/MainThread.cpp: |
| 5612 | (WTF::functionQueueMutex): Made it an AtomicallyInitializedStatic. |
| 5613 | |
| 5614 | (WTF::dispatchFunctionsFromMainThread): |
| 5615 | (WTF::setMainThreadCallbacksPaused): |
| 5616 | Assert that the current thread is main, meaning that the callbacksPaused static can be |
| 5617 | accessed. |
| 5618 | |
| 5619 | 2008-06-16 Alexey Proskuryakov <ap@webkit.org> |
| 5620 | |
| 5621 | Reviewed by Geoff Garen. |
| 5622 | |
| 5623 | Make Identifier construction use an explicitly passed IdentifierTable. |
| 5624 | |
| 5625 | No change on SunSpider total. |
| 5626 | |
| 5627 | * API/JSCallbackObjectFunctions.h: |
| 5628 | (KJS::::getOwnPropertySlot): |
| 5629 | (KJS::::put): |
| 5630 | (KJS::::deleteProperty): |
| 5631 | (KJS::::getPropertyNames): |
| 5632 | * API/JSObjectRef.cpp: |
| 5633 | (JSObjectMakeFunctionWithCallback): |
| 5634 | (JSObjectMakeFunction): |
| 5635 | (JSObjectHasProperty): |
| 5636 | (JSObjectGetProperty): |
| 5637 | (JSObjectSetProperty): |
| 5638 | (JSObjectDeleteProperty): |
| 5639 | (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray): |
| 5640 | (JSObjectCopyPropertyNames): |
| 5641 | * JavaScriptCore.exp: |
| 5642 | * VM/CodeGenerator.cpp: |
| 5643 | (KJS::CodeGenerator::CodeGenerator): |
| 5644 | (KJS::CodeGenerator::registerForLocal): |
| 5645 | (KJS::CodeGenerator::isLocal): |
| 5646 | (KJS::CodeGenerator::addConstant): |
| 5647 | (KJS::CodeGenerator::findScopedProperty): |
| 5648 | * VM/CodeGenerator.h: |
| 5649 | (KJS::CodeGenerator::globalData): |
| 5650 | (KJS::CodeGenerator::propertyNames): |
| 5651 | * VM/JSPropertyNameIterator.cpp: |
| 5652 | (KJS::JSPropertyNameIterator::create): |
| 5653 | * VM/Machine.cpp: |
| 5654 | (KJS::Machine::throwException): |
| 5655 | (KJS::Machine::privateExecute): |
| 5656 | * kjs/ArrayPrototype.cpp: |
| 5657 | (KJS::ArrayConstructor::ArrayConstructor): |
| 5658 | * kjs/BooleanObject.cpp: |
| 5659 | (KJS::BooleanConstructor::BooleanConstructor): |
| 5660 | * kjs/FunctionPrototype.cpp: |
| 5661 | (KJS::FunctionConstructor::FunctionConstructor): |
| 5662 | (KJS::FunctionConstructor::construct): |
| 5663 | * kjs/JSArray.cpp: |
| 5664 | (KJS::JSArray::inlineGetOwnPropertySlot): |
| 5665 | (KJS::JSArray::put): |
| 5666 | (KJS::JSArray::deleteProperty): |
| 5667 | (KJS::JSArray::getPropertyNames): |
| 5668 | * kjs/JSFunction.cpp: |
| 5669 | (KJS::Arguments::Arguments): |
| 5670 | * kjs/JSGlobalData.cpp: |
| 5671 | (KJS::JSGlobalData::JSGlobalData): |
| 5672 | * kjs/JSGlobalObject.cpp: |
| 5673 | (KJS::JSGlobalObject::reset): |
| 5674 | * kjs/JSObject.cpp: |
| 5675 | (KJS::JSObject::getOwnPropertySlot): |
| 5676 | (KJS::JSObject::put): |
| 5677 | (KJS::JSObject::putWithAttributes): |
| 5678 | (KJS::JSObject::deleteProperty): |
| 5679 | (KJS::JSObject::findPropertyHashEntry): |
| 5680 | (KJS::JSObject::getPropertyNames): |
| 5681 | (KJS::Error::create): |
| 5682 | * kjs/JSVariableObject.cpp: |
| 5683 | (KJS::JSVariableObject::getPropertyNames): |
| 5684 | * kjs/NumberObject.cpp: |
| 5685 | (KJS::NumberConstructor::NumberConstructor): |
| 5686 | * kjs/PropertyNameArray.cpp: |
| 5687 | (KJS::PropertyNameArray::add): |
| 5688 | * kjs/PropertyNameArray.h: |
| 5689 | (KJS::PropertyNameArray::PropertyNameArray): |
| 5690 | (KJS::PropertyNameArray::addKnownUnique): |
| 5691 | * kjs/PropertySlot.h: |
| 5692 | (KJS::PropertySlot::getValue): |
| 5693 | * kjs/RegExpObject.cpp: |
| 5694 | (KJS::RegExpConstructor::RegExpConstructor): |
| 5695 | * kjs/ScopeChain.cpp: |
| 5696 | (KJS::ScopeChainNode::print): |
| 5697 | * kjs/Shell.cpp: |
| 5698 | (GlobalObject::GlobalObject): |
| 5699 | * kjs/date_object.cpp: |
| 5700 | (KJS::DateConstructor::DateConstructor): |
| 5701 | * kjs/error_object.cpp: |
| 5702 | (KJS::ErrorConstructor::ErrorConstructor): |
| 5703 | (KJS::NativeErrorConstructor::NativeErrorConstructor): |
| 5704 | * kjs/grammar.y: |
| 5705 | * kjs/identifier.cpp: |
| 5706 | (KJS::Identifier::add): |
| 5707 | (KJS::Identifier::addSlowCase): |
| 5708 | * kjs/identifier.h: |
| 5709 | (KJS::Identifier::Identifier): |
| 5710 | (KJS::Identifier::from): |
| 5711 | (KJS::Identifier::equal): |
| 5712 | (KJS::Identifier::add): |
| 5713 | (KJS::operator==): |
| 5714 | (KJS::operator!=): |
| 5715 | * kjs/internal.cpp: |
| 5716 | (KJS::JSString::getOwnPropertySlot): |
| 5717 | * kjs/lexer.cpp: |
| 5718 | (KJS::Lexer::Lexer): |
| 5719 | (KJS::Lexer::lex): |
| 5720 | (KJS::Lexer::makeIdentifier): |
| 5721 | * kjs/lexer.h: |
| 5722 | * kjs/lookup.cpp: |
| 5723 | (KJS::HashTable::createTable): |
| 5724 | * kjs/lookup.h: |
| 5725 | (KJS::HashTable::initializeIfNeeded): |
| 5726 | (KJS::HashTable::entry): |
| 5727 | (KJS::getStaticPropertySlot): |
| 5728 | (KJS::getStaticFunctionSlot): |
| 5729 | (KJS::getStaticValueSlot): |
| 5730 | (KJS::lookupPut): |
| 5731 | * kjs/object_object.cpp: |
| 5732 | (KJS::objectProtoFuncHasOwnProperty): |
| 5733 | (KJS::objectProtoFuncDefineGetter): |
| 5734 | (KJS::objectProtoFuncDefineSetter): |
| 5735 | (KJS::objectProtoFuncLookupGetter): |
| 5736 | (KJS::objectProtoFuncLookupSetter): |
| 5737 | (KJS::objectProtoFuncPropertyIsEnumerable): |
| 5738 | (KJS::ObjectConstructor::ObjectConstructor): |
| 5739 | * kjs/string_object.cpp: |
| 5740 | (KJS::StringObject::getOwnPropertySlot): |
| 5741 | (KJS::StringObject::getPropertyNames): |
| 5742 | (KJS::StringConstructor::StringConstructor): |
| 5743 | Just pass ExecState or JSGlobalData everywhere. Identifier construction is now always |
| 5744 | explicit. |
| 5745 | |
| 5746 | * kjs/nodes.cpp: (KJS::RegExpNode::emitCode): Here, Identifier was created from a non-literal |
| 5747 | char*, which was incorrect, as that uses the pointer value as a key. |
| 5748 | |
| 5749 | 2008-06-16 Thiago Macieira <tjmaciei@trolltech.com> |
| 5750 | |
| 5751 | Reviewed by Darin. |
| 5752 | |
| 5753 | https://bugs.webkit.org/show_bug.cgi?id=19577 |
| 5754 | |
| 5755 | Fix compilation in C++ environments where C99 headers are not present |
| 5756 | |
| 5757 | The stdbool.h header is a C99 feature, defining the "_Bool" type as well as the |
| 5758 | "true" and "false" constants. But it's completely unnecessary in C++ as the |
| 5759 | language already defines the "bool" type and its two values. |
| 5760 | |
| 5761 | * API/JSBase.h: |
| 5762 | * API/JSContextRef.h: |
| 5763 | * API/JSObjectRef.h: |
| 5764 | * API/JSStringRef.h: |
| 5765 | * API/JSValueRef.h: |
| 5766 | |
| 5767 | 2008-06-16 Kevin McCullough <kmccullough@apple.com> |
| 5768 | |
| 5769 | Reviewed by John. |
| 5770 | |
| 5771 | <rdar://problem/6012509> JSProfiler: %s are incorrect if you exclude a |
| 5772 | top level node like (idle) |
| 5773 | |
| 5774 | * profiler/Profile.cpp: |
| 5775 | (KJS::Profile::focus): |
| 5776 | (KJS::Profile::exclude): Subtract the selfTime from the totalTime of the |
| 5777 | head since its self time will only be non-zero when one of its children |
| 5778 | were excluded. Since the head's totalTime is used to calculate %s when |
| 5779 | its totalTime is the same as the sum of all its visible childrens' times |
| 5780 | their %s will sum to 100%. |
| 5781 | |
| 5782 | 2008-06-16 Kevin McCullough <kmccullough@apple.com> |
| 5783 | |
| 5784 | Reviewed by Sam Weinig. |
| 5785 | |
| 5786 | <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the profiler. |
| 5787 | |
| 5788 | * profiler/Profile.cpp: |
| 5789 | (KJS::Profile::willExecute): |
| 5790 | |
| 5791 | 2008-06-16 Kevin McCullough <kmccullough@apple.com> |
| 5792 | |
| 5793 | Reviewed by Sam. |
| 5794 | |
| 5795 | <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the |
| 5796 | profiler. |
| 5797 | - Remove the last of the uses of recursion in the profiler. |
| 5798 | |
| 5799 | * JavaScriptCore.exp: Export the new function's signature. |
| 5800 | * profiler/Profile.cpp: |
| 5801 | (KJS::calculateVisibleTotalTime): Added a new static method for |
| 5802 | recalculating the visibleTotalTime of methods after focus has changed |
| 5803 | which are visible. |
| 5804 | (KJS::stopProfiling): |
| 5805 | (KJS::Profile::focus): Implemented focus without recursion. |
| 5806 | * profiler/Profile.h: Moved implementation into the definition file. |
| 5807 | * profiler/ProfileNode.cpp: |
| 5808 | (KJS::ProfileNode::traverseNextNodePreOrder): Added an argument for |
| 5809 | whether or not to process the children nodes, this allows focus to skip |
| 5810 | sub trees which have been set as not visible. |
| 5811 | (KJS::ProfileNode::calculateVisibleTotalTime): This function set's a |
| 5812 | node's total visible time to the sum of its self time and its children's |
| 5813 | total times. |
| 5814 | (KJS::ProfileNode::focus): Implemented focus without recursion. |
| 5815 | * profiler/ProfileNode.h: |
| 5816 | (KJS::CallIdentifier::operator!= ): |
| 5817 | (KJS::ProfileNode::setActualTotalTime): Expanded setting the total time |
| 5818 | so that focus could modify only the visible total time. |
| 5819 | (KJS::ProfileNode::setVisibleTotalTime): |
| 5820 | |
| 5821 | 2008-06-16 Christian Dywan <christian@twotoasts.de> |
| 5822 | |
| 5823 | Reviewed by Sam. |
| 5824 | |
| 5825 | https://bugs.webkit.org/show_bug.cgi?id=19552 |
| 5826 | JavaScriptCore headers use C++ style comments |
| 5827 | |
| 5828 | Replace all C++ style comments with C style multiline |
| 5829 | comments and remove all "mode" lines. |
| 5830 | |
| 5831 | * API/JSBase.h: |
| 5832 | * API/JSClassRef.h: |
| 5833 | * API/JSContextRef.h: |
| 5834 | * API/JSObjectRef.h: |
| 5835 | * API/JSStringRef.h: |
| 5836 | * API/JSStringRefBSTR.h: |
| 5837 | * API/JSStringRefCF.h: |
| 5838 | * API/JSValueRef.h: |
| 5839 | * API/JavaScript.h: |
| 5840 | * API/JavaScriptCore.h: |
| 5841 | |
| 5842 | 2008-06-16 Christian Dywan <christian@twotoasts.de> |
| 5843 | |
| 5844 | Reviewed by Sam. |
| 5845 | |
| 5846 | https://bugs.webkit.org/show_bug.cgi?id=19557 |
| 5847 | (JavaScriptCore) minidom uses C++ style comments |
| 5848 | |
| 5849 | Use only C style comments in minidom sources |
| 5850 | |
| 5851 | * API/JSNode.c: |
| 5852 | (JSNode_appendChild): |
| 5853 | (JSNode_removeChild): |
| 5854 | * API/JSNode.h: |
| 5855 | * API/JSNodeList.c: |
| 5856 | (JSNodeList_getProperty): |
| 5857 | * API/JSNodeList.h: |
| 5858 | * API/Node.c: |
| 5859 | * API/Node.h: |
| 5860 | * API/NodeList.c: |
| 5861 | (NodeList_new): |
| 5862 | (NodeList_item): |
| 5863 | * API/NodeList.h: |
| 5864 | * API/minidom.c: |
| 5865 | (createStringWithContentsOfFile): |
| 5866 | * wtf/Assertions.h: |
| 5867 | * wtf/UnusedParam.h: |
| 5868 | |
| 5869 | 2008-06-16 Adriaan de Groot <groot@kde.org> |
| 5870 | |
| 5871 | Reviewed by Simon. |
| 5872 | |
| 5873 | Fix compilation on Solaris |
| 5874 | |
| 5875 | On some systems, munmap takes a char* instead of a void* (contrary to POSIX and |
| 5876 | Single Unix Specification). Since you can always convert from char* to void* |
| 5877 | but not vice-versa, do the casting to char*. |
| 5878 | |
| 5879 | * kjs/collector.cpp: |
| 5880 | (KJS::allocateBlock): |
| 5881 | (KJS::freeBlock): |
| 5882 | |
| 5883 | 2008-06-16 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 5884 | |
| 5885 | Reviewed by Maciej. |
| 5886 | |
| 5887 | Make a UnaryOpNode class to reduce boilerplate code for UnaryPlusNode, |
| 5888 | NegateNode, BitwiseNotNode, and LogicalNotNode. |
| 5889 | |
| 5890 | * VM/CodeGenerator.h: |
| 5891 | (KJS::CodeGenerator::emitToJSNumber): |
| 5892 | * kjs/nodes.cpp: |
| 5893 | (KJS::UnaryOpNode::emitCode): |
| 5894 | * kjs/nodes.h: |
| 5895 | (KJS::UnaryOpNode::UnaryOpNode): |
| 5896 | (KJS::UnaryPlusNode::): |
| 5897 | (KJS::NegateNode::): |
| 5898 | (KJS::NegateNode::precedence): |
| 5899 | (KJS::BitwiseNotNode::): |
| 5900 | (KJS::BitwiseNotNode::precedence): |
| 5901 | (KJS::LogicalNotNode::): |
| 5902 | (KJS::LogicalNotNode::precedence): |
| 5903 | |
| 5904 | 2008-06-16 Jan Michael Alonzo <jmalonzo@webkit.org> |
| 5905 | |
| 5906 | Gtk build fix |
| 5907 | |
| 5908 | * GNUmakefile.am: |
| 5909 | |
| 5910 | 2008-06-15 Darin Adler <darin@apple.com> |
| 5911 | |
| 5912 | - rename KJS::List to KJS::ArgList |
| 5913 | |
| 5914 | * API/JSCallbackConstructor.cpp: |
| 5915 | (KJS::JSCallbackConstructor::construct): |
| 5916 | * API/JSCallbackConstructor.h: |
| 5917 | * API/JSCallbackFunction.cpp: |
| 5918 | (KJS::JSCallbackFunction::callAsFunction): |
| 5919 | * API/JSCallbackFunction.h: |
| 5920 | * API/JSCallbackObject.h: |
| 5921 | * API/JSCallbackObjectFunctions.h: |
| 5922 | (KJS::::construct): |
| 5923 | (KJS::::callAsFunction): |
| 5924 | * API/JSObjectRef.cpp: |
| 5925 | (JSObjectMakeFunction): |
| 5926 | (JSObjectCallAsFunction): |
| 5927 | (JSObjectCallAsConstructor): |
| 5928 | * JavaScriptCore.exp: |
| 5929 | * VM/Machine.cpp: |
| 5930 | (KJS::Machine::execute): |
| 5931 | (KJS::Machine::privateExecute): |
| 5932 | * VM/Machine.h: |
| 5933 | * kjs/ArrayPrototype.cpp: |
| 5934 | (KJS::arrayProtoFuncToString): |
| 5935 | (KJS::arrayProtoFuncToLocaleString): |
| 5936 | (KJS::arrayProtoFuncJoin): |
| 5937 | (KJS::arrayProtoFuncConcat): |
| 5938 | (KJS::arrayProtoFuncPop): |
| 5939 | (KJS::arrayProtoFuncPush): |
| 5940 | (KJS::arrayProtoFuncReverse): |
| 5941 | (KJS::arrayProtoFuncShift): |
| 5942 | (KJS::arrayProtoFuncSlice): |
| 5943 | (KJS::arrayProtoFuncSort): |
| 5944 | (KJS::arrayProtoFuncSplice): |
| 5945 | (KJS::arrayProtoFuncUnShift): |
| 5946 | (KJS::arrayProtoFuncFilter): |
| 5947 | (KJS::arrayProtoFuncMap): |
| 5948 | (KJS::arrayProtoFuncEvery): |
| 5949 | (KJS::arrayProtoFuncForEach): |
| 5950 | (KJS::arrayProtoFuncSome): |
| 5951 | (KJS::arrayProtoFuncIndexOf): |
| 5952 | (KJS::arrayProtoFuncLastIndexOf): |
| 5953 | (KJS::ArrayConstructor::construct): |
| 5954 | (KJS::ArrayConstructor::callAsFunction): |
| 5955 | * kjs/ArrayPrototype.h: |
| 5956 | * kjs/BooleanObject.cpp: |
| 5957 | (KJS::booleanProtoFuncToString): |
| 5958 | (KJS::booleanProtoFuncValueOf): |
| 5959 | (KJS::BooleanConstructor::construct): |
| 5960 | (KJS::BooleanConstructor::callAsFunction): |
| 5961 | * kjs/BooleanObject.h: |
| 5962 | * kjs/CommonIdentifiers.h: |
| 5963 | * kjs/ExecState.h: |
| 5964 | (KJS::ExecState::emptyList): |
| 5965 | * kjs/FunctionPrototype.cpp: |
| 5966 | (KJS::FunctionPrototype::callAsFunction): |
| 5967 | (KJS::functionProtoFuncToString): |
| 5968 | (KJS::functionProtoFuncApply): |
| 5969 | (KJS::functionProtoFuncCall): |
| 5970 | (KJS::FunctionConstructor::construct): |
| 5971 | (KJS::FunctionConstructor::callAsFunction): |
| 5972 | * kjs/FunctionPrototype.h: |
| 5973 | * kjs/JSActivation.cpp: |
| 5974 | (KJS::JSActivation::createArgumentsObject): |
| 5975 | * kjs/JSArray.cpp: |
| 5976 | (KJS::JSArray::JSArray): |
| 5977 | (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key): |
| 5978 | * kjs/JSArray.h: |
| 5979 | * kjs/JSFunction.cpp: |
| 5980 | (KJS::JSFunction::callAsFunction): |
| 5981 | (KJS::JSFunction::construct): |
| 5982 | (KJS::IndexToNameMap::IndexToNameMap): |
| 5983 | (KJS::Arguments::Arguments): |
| 5984 | (KJS::encode): |
| 5985 | (KJS::decode): |
| 5986 | (KJS::globalFuncEval): |
| 5987 | (KJS::globalFuncParseInt): |
| 5988 | (KJS::globalFuncParseFloat): |
| 5989 | (KJS::globalFuncIsNaN): |
| 5990 | (KJS::globalFuncIsFinite): |
| 5991 | (KJS::globalFuncDecodeURI): |
| 5992 | (KJS::globalFuncDecodeURIComponent): |
| 5993 | (KJS::globalFuncEncodeURI): |
| 5994 | (KJS::globalFuncEncodeURIComponent): |
| 5995 | (KJS::globalFuncEscape): |
| 5996 | (KJS::globalFuncUnescape): |
| 5997 | (KJS::globalFuncKJSPrint): |
| 5998 | (KJS::PrototypeFunction::callAsFunction): |
| 5999 | (KJS::PrototypeReflexiveFunction::callAsFunction): |
| 6000 | * kjs/JSFunction.h: |
| 6001 | * kjs/JSGlobalData.h: |
| 6002 | * kjs/JSImmediate.cpp: |
| 6003 | (KJS::JSImmediate::toObject): |
| 6004 | * kjs/JSNotAnObject.cpp: |
| 6005 | (KJS::JSNotAnObject::construct): |
| 6006 | (KJS::JSNotAnObject::callAsFunction): |
| 6007 | * kjs/JSNotAnObject.h: |
| 6008 | * kjs/JSObject.cpp: |
| 6009 | (KJS::JSObject::put): |
| 6010 | (KJS::JSObject::construct): |
| 6011 | (KJS::JSObject::callAsFunction): |
| 6012 | (KJS::Error::create): |
| 6013 | * kjs/JSObject.h: |
| 6014 | * kjs/MathObject.cpp: |
| 6015 | (KJS::mathProtoFuncAbs): |
| 6016 | (KJS::mathProtoFuncACos): |
| 6017 | (KJS::mathProtoFuncASin): |
| 6018 | (KJS::mathProtoFuncATan): |
| 6019 | (KJS::mathProtoFuncATan2): |
| 6020 | (KJS::mathProtoFuncCeil): |
| 6021 | (KJS::mathProtoFuncCos): |
| 6022 | (KJS::mathProtoFuncExp): |
| 6023 | (KJS::mathProtoFuncFloor): |
| 6024 | (KJS::mathProtoFuncLog): |
| 6025 | (KJS::mathProtoFuncMax): |
| 6026 | (KJS::mathProtoFuncMin): |
| 6027 | (KJS::mathProtoFuncPow): |
| 6028 | (KJS::mathProtoFuncRandom): |
| 6029 | (KJS::mathProtoFuncRound): |
| 6030 | (KJS::mathProtoFuncSin): |
| 6031 | (KJS::mathProtoFuncSqrt): |
| 6032 | (KJS::mathProtoFuncTan): |
| 6033 | * kjs/MathObject.h: |
| 6034 | * kjs/NumberObject.cpp: |
| 6035 | (KJS::numberProtoFuncToString): |
| 6036 | (KJS::numberProtoFuncToLocaleString): |
| 6037 | (KJS::numberProtoFuncValueOf): |
| 6038 | (KJS::numberProtoFuncToFixed): |
| 6039 | (KJS::numberProtoFuncToExponential): |
| 6040 | (KJS::numberProtoFuncToPrecision): |
| 6041 | (KJS::NumberConstructor::construct): |
| 6042 | (KJS::NumberConstructor::callAsFunction): |
| 6043 | * kjs/NumberObject.h: |
| 6044 | * kjs/RegExpObject.cpp: |
| 6045 | (KJS::regExpProtoFuncTest): |
| 6046 | (KJS::regExpProtoFuncExec): |
| 6047 | (KJS::regExpProtoFuncCompile): |
| 6048 | (KJS::regExpProtoFuncToString): |
| 6049 | (KJS::RegExpObject::match): |
| 6050 | (KJS::RegExpObject::test): |
| 6051 | (KJS::RegExpObject::exec): |
| 6052 | (KJS::RegExpObject::callAsFunction): |
| 6053 | (KJS::RegExpConstructor::construct): |
| 6054 | (KJS::RegExpConstructor::callAsFunction): |
| 6055 | * kjs/RegExpObject.h: |
| 6056 | * kjs/Shell.cpp: |
| 6057 | (functionPrint): |
| 6058 | (functionDebug): |
| 6059 | (functionGC): |
| 6060 | (functionVersion): |
| 6061 | (functionRun): |
| 6062 | (functionLoad): |
| 6063 | (functionReadline): |
| 6064 | (functionQuit): |
| 6065 | * kjs/collector.cpp: |
| 6066 | (KJS::Collector::collect): |
| 6067 | * kjs/collector.h: |
| 6068 | (KJS::Collector::markListSet): |
| 6069 | * kjs/date_object.cpp: |
| 6070 | (KJS::formatLocaleDate): |
| 6071 | (KJS::fillStructuresUsingTimeArgs): |
| 6072 | (KJS::fillStructuresUsingDateArgs): |
| 6073 | (KJS::DateConstructor::construct): |
| 6074 | (KJS::DateConstructor::callAsFunction): |
| 6075 | (KJS::DateFunction::callAsFunction): |
| 6076 | (KJS::dateProtoFuncToString): |
| 6077 | (KJS::dateProtoFuncToUTCString): |
| 6078 | (KJS::dateProtoFuncToDateString): |
| 6079 | (KJS::dateProtoFuncToTimeString): |
| 6080 | (KJS::dateProtoFuncToLocaleString): |
| 6081 | (KJS::dateProtoFuncToLocaleDateString): |
| 6082 | (KJS::dateProtoFuncToLocaleTimeString): |
| 6083 | (KJS::dateProtoFuncValueOf): |
| 6084 | (KJS::dateProtoFuncGetTime): |
| 6085 | (KJS::dateProtoFuncGetFullYear): |
| 6086 | (KJS::dateProtoFuncGetUTCFullYear): |
| 6087 | (KJS::dateProtoFuncToGMTString): |
| 6088 | (KJS::dateProtoFuncGetMonth): |
| 6089 | (KJS::dateProtoFuncGetUTCMonth): |
| 6090 | (KJS::dateProtoFuncGetDate): |
| 6091 | (KJS::dateProtoFuncGetUTCDate): |
| 6092 | (KJS::dateProtoFuncGetDay): |
| 6093 | (KJS::dateProtoFuncGetUTCDay): |
| 6094 | (KJS::dateProtoFuncGetHours): |
| 6095 | (KJS::dateProtoFuncGetUTCHours): |
| 6096 | (KJS::dateProtoFuncGetMinutes): |
| 6097 | (KJS::dateProtoFuncGetUTCMinutes): |
| 6098 | (KJS::dateProtoFuncGetSeconds): |
| 6099 | (KJS::dateProtoFuncGetUTCSeconds): |
| 6100 | (KJS::dateProtoFuncGetMilliSeconds): |
| 6101 | (KJS::dateProtoFuncGetUTCMilliseconds): |
| 6102 | (KJS::dateProtoFuncGetTimezoneOffset): |
| 6103 | (KJS::dateProtoFuncSetTime): |
| 6104 | (KJS::setNewValueFromTimeArgs): |
| 6105 | (KJS::setNewValueFromDateArgs): |
| 6106 | (KJS::dateProtoFuncSetMilliSeconds): |
| 6107 | (KJS::dateProtoFuncSetUTCMilliseconds): |
| 6108 | (KJS::dateProtoFuncSetSeconds): |
| 6109 | (KJS::dateProtoFuncSetUTCSeconds): |
| 6110 | (KJS::dateProtoFuncSetMinutes): |
| 6111 | (KJS::dateProtoFuncSetUTCMinutes): |
| 6112 | (KJS::dateProtoFuncSetHours): |
| 6113 | (KJS::dateProtoFuncSetUTCHours): |
| 6114 | (KJS::dateProtoFuncSetDate): |
| 6115 | (KJS::dateProtoFuncSetUTCDate): |
| 6116 | (KJS::dateProtoFuncSetMonth): |
| 6117 | (KJS::dateProtoFuncSetUTCMonth): |
| 6118 | (KJS::dateProtoFuncSetFullYear): |
| 6119 | (KJS::dateProtoFuncSetUTCFullYear): |
| 6120 | (KJS::dateProtoFuncSetYear): |
| 6121 | (KJS::dateProtoFuncGetYear): |
| 6122 | * kjs/date_object.h: |
| 6123 | * kjs/debugger.h: |
| 6124 | * kjs/error_object.cpp: |
| 6125 | (KJS::errorProtoFuncToString): |
| 6126 | (KJS::ErrorConstructor::construct): |
| 6127 | (KJS::ErrorConstructor::callAsFunction): |
| 6128 | (KJS::NativeErrorConstructor::construct): |
| 6129 | (KJS::NativeErrorConstructor::callAsFunction): |
| 6130 | * kjs/error_object.h: |
| 6131 | * kjs/internal.cpp: |
| 6132 | (KJS::JSNumberCell::toObject): |
| 6133 | (KJS::JSNumberCell::toThisObject): |
| 6134 | * kjs/list.cpp: |
| 6135 | (KJS::ArgList::getSlice): |
| 6136 | (KJS::ArgList::markLists): |
| 6137 | (KJS::ArgList::slowAppend): |
| 6138 | * kjs/list.h: |
| 6139 | (KJS::ArgList::ArgList): |
| 6140 | (KJS::ArgList::~ArgList): |
| 6141 | * kjs/object_object.cpp: |
| 6142 | (KJS::objectProtoFuncValueOf): |
| 6143 | (KJS::objectProtoFuncHasOwnProperty): |
| 6144 | (KJS::objectProtoFuncIsPrototypeOf): |
| 6145 | (KJS::objectProtoFuncDefineGetter): |
| 6146 | (KJS::objectProtoFuncDefineSetter): |
| 6147 | (KJS::objectProtoFuncLookupGetter): |
| 6148 | (KJS::objectProtoFuncLookupSetter): |
| 6149 | (KJS::objectProtoFuncPropertyIsEnumerable): |
| 6150 | (KJS::objectProtoFuncToLocaleString): |
| 6151 | (KJS::objectProtoFuncToString): |
| 6152 | (KJS::ObjectConstructor::construct): |
| 6153 | (KJS::ObjectConstructor::callAsFunction): |
| 6154 | * kjs/object_object.h: |
| 6155 | * kjs/string_object.cpp: |
| 6156 | (KJS::replace): |
| 6157 | (KJS::stringProtoFuncToString): |
| 6158 | (KJS::stringProtoFuncValueOf): |
| 6159 | (KJS::stringProtoFuncCharAt): |
| 6160 | (KJS::stringProtoFuncCharCodeAt): |
| 6161 | (KJS::stringProtoFuncConcat): |
| 6162 | (KJS::stringProtoFuncIndexOf): |
| 6163 | (KJS::stringProtoFuncLastIndexOf): |
| 6164 | (KJS::stringProtoFuncMatch): |
| 6165 | (KJS::stringProtoFuncSearch): |
| 6166 | (KJS::stringProtoFuncReplace): |
| 6167 | (KJS::stringProtoFuncSlice): |
| 6168 | (KJS::stringProtoFuncSplit): |
| 6169 | (KJS::stringProtoFuncSubstr): |
| 6170 | (KJS::stringProtoFuncSubstring): |
| 6171 | (KJS::stringProtoFuncToLowerCase): |
| 6172 | (KJS::stringProtoFuncToUpperCase): |
| 6173 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 6174 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 6175 | (KJS::stringProtoFuncLocaleCompare): |
| 6176 | (KJS::stringProtoFuncBig): |
| 6177 | (KJS::stringProtoFuncSmall): |
| 6178 | (KJS::stringProtoFuncBlink): |
| 6179 | (KJS::stringProtoFuncBold): |
| 6180 | (KJS::stringProtoFuncFixed): |
| 6181 | (KJS::stringProtoFuncItalics): |
| 6182 | (KJS::stringProtoFuncStrike): |
| 6183 | (KJS::stringProtoFuncSub): |
| 6184 | (KJS::stringProtoFuncSup): |
| 6185 | (KJS::stringProtoFuncFontcolor): |
| 6186 | (KJS::stringProtoFuncFontsize): |
| 6187 | (KJS::stringProtoFuncAnchor): |
| 6188 | (KJS::stringProtoFuncLink): |
| 6189 | (KJS::StringConstructor::construct): |
| 6190 | (KJS::StringConstructor::callAsFunction): |
| 6191 | (KJS::StringConstructorFunction::callAsFunction): |
| 6192 | * kjs/string_object.h: |
| 6193 | |
| 6194 | 2008-06-15 Darin Adler <darin@apple.com> |
| 6195 | |
| 6196 | - new names for more JavaScriptCore files |
| 6197 | |
| 6198 | * API/JSCallbackFunction.cpp: |
| 6199 | * API/JSObjectRef.cpp: |
| 6200 | * DerivedSources.make: |
| 6201 | * GNUmakefile.am: |
| 6202 | * JavaScriptCore.exp: |
| 6203 | * JavaScriptCore.pri: |
| 6204 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 6205 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 6206 | * JavaScriptCoreSources.bkl: |
| 6207 | * VM/Machine.cpp: |
| 6208 | * kjs/AllInOneFile.cpp: |
| 6209 | * kjs/ArrayPrototype.cpp: Copied from JavaScriptCore/kjs/array_object.cpp. |
| 6210 | * kjs/ArrayPrototype.h: Copied from JavaScriptCore/kjs/array_object.h. |
| 6211 | * kjs/BooleanObject.cpp: Copied from JavaScriptCore/kjs/bool_object.cpp. |
| 6212 | * kjs/BooleanObject.h: Copied from JavaScriptCore/kjs/bool_object.h. |
| 6213 | * kjs/ExecState.cpp: |
| 6214 | * kjs/ExecState.h: |
| 6215 | * kjs/FunctionPrototype.cpp: Copied from JavaScriptCore/kjs/function_object.cpp. |
| 6216 | * kjs/FunctionPrototype.h: Copied from JavaScriptCore/kjs/function_object.h. |
| 6217 | * kjs/JSArray.cpp: Copied from JavaScriptCore/kjs/array_instance.cpp. |
| 6218 | * kjs/JSArray.h: Copied from JavaScriptCore/kjs/array_instance.h. |
| 6219 | * kjs/JSFunction.cpp: |
| 6220 | * kjs/JSFunction.h: |
| 6221 | * kjs/JSGlobalObject.cpp: |
| 6222 | * kjs/JSImmediate.cpp: |
| 6223 | * kjs/JSObject.h: |
| 6224 | * kjs/JSString.h: |
| 6225 | * kjs/JSValue.h: |
| 6226 | * kjs/JSVariableObject.cpp: |
| 6227 | * kjs/MathObject.cpp: Copied from JavaScriptCore/kjs/math_object.cpp. |
| 6228 | * kjs/MathObject.h: Copied from JavaScriptCore/kjs/math_object.h. |
| 6229 | * kjs/NumberObject.cpp: Copied from JavaScriptCore/kjs/number_object.cpp. |
| 6230 | * kjs/NumberObject.h: Copied from JavaScriptCore/kjs/number_object.h. |
| 6231 | * kjs/PropertyMap.cpp: Copied from JavaScriptCore/kjs/property_map.cpp. |
| 6232 | * kjs/PropertyMap.h: Copied from JavaScriptCore/kjs/property_map.h. |
| 6233 | * kjs/PropertySlot.cpp: Copied from JavaScriptCore/kjs/property_slot.cpp. |
| 6234 | * kjs/PropertySlot.h: Copied from JavaScriptCore/kjs/property_slot.h. |
| 6235 | * kjs/RegExpObject.cpp: Copied from JavaScriptCore/kjs/regexp_object.cpp. |
| 6236 | * kjs/RegExpObject.h: Copied from JavaScriptCore/kjs/regexp_object.h. |
| 6237 | * kjs/ScopeChain.cpp: Copied from JavaScriptCore/kjs/scope_chain.cpp. |
| 6238 | * kjs/ScopeChain.h: Copied from JavaScriptCore/kjs/scope_chain.h. |
| 6239 | * kjs/ScopeChainMark.h: Copied from JavaScriptCore/kjs/scope_chain_mark.h. |
| 6240 | * kjs/Shell.cpp: |
| 6241 | * kjs/array_instance.cpp: Removed. |
| 6242 | * kjs/array_instance.h: Removed. |
| 6243 | * kjs/array_object.cpp: Removed. |
| 6244 | * kjs/array_object.h: Removed. |
| 6245 | * kjs/bool_object.cpp: Removed. |
| 6246 | * kjs/bool_object.h: Removed. |
| 6247 | * kjs/error_object.h: |
| 6248 | * kjs/function_object.cpp: Removed. |
| 6249 | * kjs/function_object.h: Removed. |
| 6250 | * kjs/internal.cpp: |
| 6251 | * kjs/math_object.cpp: Removed. |
| 6252 | * kjs/math_object.h: Removed. |
| 6253 | * kjs/nodes.cpp: |
| 6254 | * kjs/number_object.cpp: Removed. |
| 6255 | * kjs/number_object.h: Removed. |
| 6256 | * kjs/object_object.cpp: |
| 6257 | * kjs/property_map.cpp: Removed. |
| 6258 | * kjs/property_map.h: Removed. |
| 6259 | * kjs/property_slot.cpp: Removed. |
| 6260 | * kjs/property_slot.h: Removed. |
| 6261 | * kjs/regexp_object.cpp: Removed. |
| 6262 | * kjs/regexp_object.h: Removed. |
| 6263 | * kjs/scope_chain.cpp: Removed. |
| 6264 | * kjs/scope_chain.h: Removed. |
| 6265 | * kjs/scope_chain_mark.h: Removed. |
| 6266 | * kjs/string_object.cpp: |
| 6267 | * kjs/string_object.h: |
| 6268 | |
| 6269 | 2008-06-15 Darin Adler <darin@apple.com> |
| 6270 | |
| 6271 | - new names for a few key JavaScriptCore files |
| 6272 | |
| 6273 | * API/JSBase.cpp: |
| 6274 | * API/JSCallbackConstructor.h: |
| 6275 | * API/JSCallbackFunction.cpp: |
| 6276 | * API/JSCallbackFunction.h: |
| 6277 | * API/JSCallbackObject.h: |
| 6278 | * API/JSCallbackObjectFunctions.h: |
| 6279 | * API/JSClassRef.h: |
| 6280 | * API/JSContextRef.cpp: |
| 6281 | * API/JSObjectRef.cpp: |
| 6282 | * API/JSStringRef.cpp: |
| 6283 | * API/JSStringRefCF.cpp: |
| 6284 | * API/JSValueRef.cpp: |
| 6285 | * GNUmakefile.am: |
| 6286 | * JavaScriptCore.pri: |
| 6287 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 6288 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 6289 | * JavaScriptCoreSources.bkl: |
| 6290 | * VM/CodeBlock.cpp: |
| 6291 | * VM/CodeGenerator.cpp: |
| 6292 | * VM/ExceptionHelpers.cpp: |
| 6293 | * VM/ExceptionHelpers.h: |
| 6294 | * VM/JSPropertyNameIterator.cpp: |
| 6295 | * VM/JSPropertyNameIterator.h: |
| 6296 | * VM/Machine.cpp: |
| 6297 | * kjs/AllInOneFile.cpp: |
| 6298 | * kjs/DateMath.cpp: |
| 6299 | * kjs/DebuggerCallFrame.cpp: |
| 6300 | * kjs/ExecState.cpp: |
| 6301 | * kjs/JSActivation.cpp: |
| 6302 | * kjs/JSFunction.cpp: Copied from JavaScriptCore/kjs/function.cpp. |
| 6303 | * kjs/JSFunction.h: Copied from JavaScriptCore/kjs/function.h. |
| 6304 | * kjs/JSImmediate.cpp: |
| 6305 | * kjs/JSNotAnObject.h: |
| 6306 | * kjs/JSObject.cpp: Copied from JavaScriptCore/kjs/object.cpp. |
| 6307 | * kjs/JSObject.h: Copied from JavaScriptCore/kjs/object.h. |
| 6308 | * kjs/JSString.h: Copied from JavaScriptCore/kjs/internal.h. |
| 6309 | * kjs/JSValue.cpp: Copied from JavaScriptCore/kjs/value.cpp. |
| 6310 | * kjs/JSValue.h: Copied from JavaScriptCore/kjs/value.h. |
| 6311 | * kjs/JSVariableObject.h: |
| 6312 | * kjs/JSWrapperObject.h: |
| 6313 | * kjs/Shell.cpp: |
| 6314 | * kjs/SymbolTable.h: |
| 6315 | * kjs/array_instance.h: |
| 6316 | * kjs/collector.cpp: |
| 6317 | * kjs/date_object.cpp: |
| 6318 | * kjs/date_object.h: |
| 6319 | * kjs/error_object.cpp: |
| 6320 | * kjs/function.cpp: Removed. |
| 6321 | * kjs/function.h: Removed. |
| 6322 | * kjs/function_object.cpp: |
| 6323 | * kjs/function_object.h: |
| 6324 | * kjs/grammar.y: |
| 6325 | * kjs/internal.cpp: |
| 6326 | * kjs/internal.h: Removed. |
| 6327 | * kjs/lexer.cpp: |
| 6328 | * kjs/list.h: |
| 6329 | * kjs/lookup.h: |
| 6330 | * kjs/nodes.h: |
| 6331 | * kjs/object.cpp: Removed. |
| 6332 | * kjs/object.h: Removed. |
| 6333 | * kjs/object_object.h: |
| 6334 | * kjs/operations.cpp: |
| 6335 | * kjs/property_map.cpp: |
| 6336 | * kjs/property_slot.cpp: |
| 6337 | * kjs/property_slot.h: |
| 6338 | * kjs/protect.h: |
| 6339 | * kjs/regexp_object.cpp: |
| 6340 | * kjs/scope_chain.cpp: |
| 6341 | * kjs/string_object.h: |
| 6342 | * kjs/ustring.cpp: |
| 6343 | * kjs/value.cpp: Removed. |
| 6344 | * kjs/value.h: Removed. |
| 6345 | * profiler/Profile.cpp: |
| 6346 | * profiler/Profiler.cpp: |
| 6347 | |
| 6348 | 2008-06-15 Darin Adler <darin@apple.com> |
| 6349 | |
| 6350 | Rubber stamped by Sam. |
| 6351 | |
| 6352 | - cut down on confusing uses of "Object" and "Imp" in |
| 6353 | JavaScriptCore class names |
| 6354 | |
| 6355 | * API/JSCallbackFunction.cpp: |
| 6356 | (KJS::JSCallbackFunction::JSCallbackFunction): |
| 6357 | * API/JSCallbackFunction.h: |
| 6358 | * VM/Machine.cpp: |
| 6359 | (KJS::Machine::privateExecute): |
| 6360 | * kjs/ExecState.h: |
| 6361 | (KJS::ExecState::regExpTable): |
| 6362 | (KJS::ExecState::regExpConstructorTable): |
| 6363 | * kjs/JSGlobalData.cpp: |
| 6364 | (KJS::JSGlobalData::JSGlobalData): |
| 6365 | (KJS::JSGlobalData::~JSGlobalData): |
| 6366 | * kjs/JSGlobalData.h: |
| 6367 | * kjs/JSGlobalObject.cpp: |
| 6368 | (KJS::JSGlobalObject::reset): |
| 6369 | * kjs/JSGlobalObject.h: |
| 6370 | (KJS::JSGlobalObject::objectConstructor): |
| 6371 | (KJS::JSGlobalObject::functionConstructor): |
| 6372 | (KJS::JSGlobalObject::arrayConstructor): |
| 6373 | (KJS::JSGlobalObject::booleanConstructor): |
| 6374 | (KJS::JSGlobalObject::stringConstructor): |
| 6375 | (KJS::JSGlobalObject::numberConstructor): |
| 6376 | (KJS::JSGlobalObject::dateConstructor): |
| 6377 | (KJS::JSGlobalObject::regExpConstructor): |
| 6378 | (KJS::JSGlobalObject::errorConstructor): |
| 6379 | (KJS::JSGlobalObject::evalErrorConstructor): |
| 6380 | (KJS::JSGlobalObject::rangeErrorConstructor): |
| 6381 | (KJS::JSGlobalObject::referenceErrorConstructor): |
| 6382 | (KJS::JSGlobalObject::syntaxErrorConstructor): |
| 6383 | (KJS::JSGlobalObject::typeErrorConstructor): |
| 6384 | (KJS::JSGlobalObject::URIErrorConstructor): |
| 6385 | * kjs/array_object.cpp: |
| 6386 | (KJS::ArrayConstructor::ArrayConstructor): |
| 6387 | (KJS::ArrayConstructor::getConstructData): |
| 6388 | (KJS::ArrayConstructor::construct): |
| 6389 | (KJS::ArrayConstructor::callAsFunction): |
| 6390 | * kjs/array_object.h: |
| 6391 | * kjs/bool_object.cpp: |
| 6392 | (KJS::BooleanObject::BooleanObject): |
| 6393 | (KJS::BooleanPrototype::BooleanPrototype): |
| 6394 | (KJS::booleanProtoFuncToString): |
| 6395 | (KJS::booleanProtoFuncValueOf): |
| 6396 | (KJS::BooleanConstructor::BooleanConstructor): |
| 6397 | (KJS::BooleanConstructor::getConstructData): |
| 6398 | (KJS::BooleanConstructor::construct): |
| 6399 | (KJS::BooleanConstructor::callAsFunction): |
| 6400 | * kjs/bool_object.h: |
| 6401 | * kjs/date_object.cpp: |
| 6402 | (KJS::DatePrototype::DatePrototype): |
| 6403 | (KJS::DateConstructor::DateConstructor): |
| 6404 | (KJS::DateConstructor::getConstructData): |
| 6405 | (KJS::DateConstructor::construct): |
| 6406 | (KJS::DateConstructor::callAsFunction): |
| 6407 | (KJS::DateFunction::DateFunction): |
| 6408 | (KJS::DateFunction::callAsFunction): |
| 6409 | * kjs/date_object.h: |
| 6410 | * kjs/error_object.cpp: |
| 6411 | (KJS::ErrorPrototype::ErrorPrototype): |
| 6412 | (KJS::ErrorConstructor::ErrorConstructor): |
| 6413 | (KJS::ErrorConstructor::getConstructData): |
| 6414 | (KJS::ErrorConstructor::construct): |
| 6415 | (KJS::ErrorConstructor::callAsFunction): |
| 6416 | (KJS::NativeErrorConstructor::NativeErrorConstructor): |
| 6417 | (KJS::NativeErrorConstructor::getConstructData): |
| 6418 | (KJS::NativeErrorConstructor::construct): |
| 6419 | (KJS::NativeErrorConstructor::callAsFunction): |
| 6420 | (KJS::NativeErrorConstructor::mark): |
| 6421 | * kjs/error_object.h: |
| 6422 | * kjs/function.cpp: |
| 6423 | (KJS::JSFunction::JSFunction): |
| 6424 | (KJS::JSFunction::mark): |
| 6425 | (KJS::JSFunction::getOwnPropertySlot): |
| 6426 | (KJS::JSFunction::put): |
| 6427 | (KJS::JSFunction::deleteProperty): |
| 6428 | (KJS::PrototypeFunction::PrototypeFunction): |
| 6429 | (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction): |
| 6430 | (KJS::PrototypeReflexiveFunction::mark): |
| 6431 | * kjs/function.h: |
| 6432 | * kjs/function_object.cpp: |
| 6433 | (KJS::functionProtoFuncToString): |
| 6434 | (KJS::FunctionConstructor::FunctionConstructor): |
| 6435 | (KJS::FunctionConstructor::getConstructData): |
| 6436 | (KJS::FunctionConstructor::construct): |
| 6437 | (KJS::FunctionConstructor::callAsFunction): |
| 6438 | * kjs/function_object.h: |
| 6439 | * kjs/internal.cpp: |
| 6440 | (KJS::StringObject::create): |
| 6441 | (KJS::JSString::toObject): |
| 6442 | (KJS::JSString::toThisObject): |
| 6443 | (KJS::JSString::getOwnPropertySlot): |
| 6444 | (KJS::InternalFunction::InternalFunction): |
| 6445 | (KJS::InternalFunction::getCallData): |
| 6446 | (KJS::InternalFunction::implementsHasInstance): |
| 6447 | * kjs/math_object.cpp: |
| 6448 | (KJS::MathObject::MathObject): |
| 6449 | (KJS::MathObject::getOwnPropertySlot): |
| 6450 | (KJS::MathObject::getValueProperty): |
| 6451 | * kjs/math_object.h: |
| 6452 | * kjs/number_object.cpp: |
| 6453 | (KJS::NumberObject::NumberObject): |
| 6454 | (KJS::NumberPrototype::NumberPrototype): |
| 6455 | (KJS::numberProtoFuncToString): |
| 6456 | (KJS::numberProtoFuncToLocaleString): |
| 6457 | (KJS::numberProtoFuncValueOf): |
| 6458 | (KJS::numberProtoFuncToFixed): |
| 6459 | (KJS::numberProtoFuncToExponential): |
| 6460 | (KJS::numberProtoFuncToPrecision): |
| 6461 | (KJS::NumberConstructor::NumberConstructor): |
| 6462 | (KJS::NumberConstructor::getOwnPropertySlot): |
| 6463 | (KJS::NumberConstructor::getValueProperty): |
| 6464 | (KJS::NumberConstructor::getConstructData): |
| 6465 | (KJS::NumberConstructor::construct): |
| 6466 | (KJS::NumberConstructor::callAsFunction): |
| 6467 | * kjs/number_object.h: |
| 6468 | * kjs/object.cpp: |
| 6469 | (KJS::JSObject::putDirectFunction): |
| 6470 | * kjs/object.h: |
| 6471 | * kjs/object_object.cpp: |
| 6472 | (KJS::ObjectConstructor::ObjectConstructor): |
| 6473 | (KJS::ObjectConstructor::getConstructData): |
| 6474 | (KJS::ObjectConstructor::construct): |
| 6475 | (KJS::ObjectConstructor::callAsFunction): |
| 6476 | * kjs/object_object.h: |
| 6477 | * kjs/regexp.cpp: |
| 6478 | (KJS::RegExp::RegExp): |
| 6479 | * kjs/regexp_object.cpp: |
| 6480 | (KJS::regExpProtoFuncTest): |
| 6481 | (KJS::regExpProtoFuncExec): |
| 6482 | (KJS::regExpProtoFuncCompile): |
| 6483 | (KJS::regExpProtoFuncToString): |
| 6484 | (KJS::RegExpObject::RegExpObject): |
| 6485 | (KJS::RegExpObject::~RegExpObject): |
| 6486 | (KJS::RegExpObject::getOwnPropertySlot): |
| 6487 | (KJS::RegExpObject::getValueProperty): |
| 6488 | (KJS::RegExpObject::put): |
| 6489 | (KJS::RegExpObject::putValueProperty): |
| 6490 | (KJS::RegExpObject::match): |
| 6491 | (KJS::RegExpObject::test): |
| 6492 | (KJS::RegExpObject::exec): |
| 6493 | (KJS::RegExpObject::getCallData): |
| 6494 | (KJS::RegExpObject::callAsFunction): |
| 6495 | (KJS::RegExpConstructorPrivate::RegExpConstructorPrivate): |
| 6496 | (KJS::RegExpConstructor::RegExpConstructor): |
| 6497 | (KJS::RegExpConstructor::performMatch): |
| 6498 | (KJS::RegExpMatchesArray::RegExpMatchesArray): |
| 6499 | (KJS::RegExpMatchesArray::~RegExpMatchesArray): |
| 6500 | (KJS::RegExpMatchesArray::fillArrayInstance): |
| 6501 | (KJS::RegExpConstructor::arrayOfMatches): |
| 6502 | (KJS::RegExpConstructor::getBackref): |
| 6503 | (KJS::RegExpConstructor::getLastParen): |
| 6504 | (KJS::RegExpConstructor::getLeftContext): |
| 6505 | (KJS::RegExpConstructor::getRightContext): |
| 6506 | (KJS::RegExpConstructor::getOwnPropertySlot): |
| 6507 | (KJS::RegExpConstructor::getValueProperty): |
| 6508 | (KJS::RegExpConstructor::put): |
| 6509 | (KJS::RegExpConstructor::putValueProperty): |
| 6510 | (KJS::RegExpConstructor::getConstructData): |
| 6511 | (KJS::RegExpConstructor::construct): |
| 6512 | (KJS::RegExpConstructor::callAsFunction): |
| 6513 | (KJS::RegExpConstructor::input): |
| 6514 | * kjs/regexp_object.h: |
| 6515 | * kjs/string_object.cpp: |
| 6516 | (KJS::StringObject::StringObject): |
| 6517 | (KJS::StringObject::getOwnPropertySlot): |
| 6518 | (KJS::StringObject::put): |
| 6519 | (KJS::StringObject::deleteProperty): |
| 6520 | (KJS::StringObject::getPropertyNames): |
| 6521 | (KJS::StringPrototype::StringPrototype): |
| 6522 | (KJS::StringPrototype::getOwnPropertySlot): |
| 6523 | (KJS::replace): |
| 6524 | (KJS::stringProtoFuncToString): |
| 6525 | (KJS::stringProtoFuncValueOf): |
| 6526 | (KJS::stringProtoFuncCharAt): |
| 6527 | (KJS::stringProtoFuncCharCodeAt): |
| 6528 | (KJS::stringProtoFuncConcat): |
| 6529 | (KJS::stringProtoFuncIndexOf): |
| 6530 | (KJS::stringProtoFuncLastIndexOf): |
| 6531 | (KJS::stringProtoFuncMatch): |
| 6532 | (KJS::stringProtoFuncSearch): |
| 6533 | (KJS::stringProtoFuncReplace): |
| 6534 | (KJS::stringProtoFuncSlice): |
| 6535 | (KJS::stringProtoFuncSplit): |
| 6536 | (KJS::stringProtoFuncSubstr): |
| 6537 | (KJS::stringProtoFuncSubstring): |
| 6538 | (KJS::stringProtoFuncToLowerCase): |
| 6539 | (KJS::stringProtoFuncToUpperCase): |
| 6540 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 6541 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 6542 | (KJS::stringProtoFuncLocaleCompare): |
| 6543 | (KJS::stringProtoFuncBig): |
| 6544 | (KJS::stringProtoFuncSmall): |
| 6545 | (KJS::stringProtoFuncBlink): |
| 6546 | (KJS::stringProtoFuncBold): |
| 6547 | (KJS::stringProtoFuncFixed): |
| 6548 | (KJS::stringProtoFuncItalics): |
| 6549 | (KJS::stringProtoFuncStrike): |
| 6550 | (KJS::stringProtoFuncSub): |
| 6551 | (KJS::stringProtoFuncSup): |
| 6552 | (KJS::stringProtoFuncFontcolor): |
| 6553 | (KJS::stringProtoFuncFontsize): |
| 6554 | (KJS::stringProtoFuncAnchor): |
| 6555 | (KJS::stringProtoFuncLink): |
| 6556 | (KJS::StringConstructor::StringConstructor): |
| 6557 | (KJS::StringConstructor::getConstructData): |
| 6558 | (KJS::StringConstructor::construct): |
| 6559 | (KJS::StringConstructor::callAsFunction): |
| 6560 | (KJS::StringConstructorFunction::StringConstructorFunction): |
| 6561 | (KJS::StringConstructorFunction::callAsFunction): |
| 6562 | * kjs/string_object.h: |
| 6563 | (KJS::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): |
| 6564 | * profiler/Profiler.cpp: |
| 6565 | (KJS::createCallIdentifier): |
| 6566 | |
| 6567 | 2008-06-15 Darin Adler <darin@apple.com> |
| 6568 | |
| 6569 | Rubber stamped by Sam. |
| 6570 | |
| 6571 | - use JS prefix and simpler names for basic JavaScriptCore types, |
| 6572 | to complement JSValue and JSObject |
| 6573 | |
| 6574 | * JavaScriptCore.exp: |
| 6575 | * VM/Machine.cpp: |
| 6576 | (KJS::jsLess): |
| 6577 | (KJS::jsLessEq): |
| 6578 | (KJS::jsAdd): |
| 6579 | (KJS::callEval): |
| 6580 | (KJS::Machine::execute): |
| 6581 | (KJS::Machine::retrieveArguments): |
| 6582 | (KJS::Machine::retrieveCaller): |
| 6583 | (KJS::Machine::getCallFrame): |
| 6584 | (KJS::Machine::getFunctionAndArguments): |
| 6585 | * VM/Machine.h: |
| 6586 | * VM/Register.h: |
| 6587 | * kjs/DebuggerCallFrame.cpp: |
| 6588 | (KJS::DebuggerCallFrame::functionName): |
| 6589 | * kjs/ExecState.h: |
| 6590 | * kjs/JSActivation.cpp: |
| 6591 | (KJS::JSActivation::createArgumentsObject): |
| 6592 | * kjs/array_instance.cpp: |
| 6593 | (KJS::JSArray::checkConsistency): |
| 6594 | (KJS::JSArray::JSArray): |
| 6595 | (KJS::JSArray::~JSArray): |
| 6596 | (KJS::JSArray::getItem): |
| 6597 | (KJS::JSArray::lengthGetter): |
| 6598 | (KJS::JSArray::inlineGetOwnPropertySlot): |
| 6599 | (KJS::JSArray::getOwnPropertySlot): |
| 6600 | (KJS::JSArray::put): |
| 6601 | (KJS::JSArray::deleteProperty): |
| 6602 | (KJS::JSArray::getPropertyNames): |
| 6603 | (KJS::JSArray::increaseVectorLength): |
| 6604 | (KJS::JSArray::setLength): |
| 6605 | (KJS::JSArray::mark): |
| 6606 | (KJS::JSArray::sort): |
| 6607 | (KJS::JSArray::compactForSorting): |
| 6608 | (KJS::JSArray::lazyCreationData): |
| 6609 | (KJS::JSArray::setLazyCreationData): |
| 6610 | * kjs/array_instance.h: |
| 6611 | * kjs/array_object.cpp: |
| 6612 | (KJS::ArrayPrototype::ArrayPrototype): |
| 6613 | (KJS::ArrayPrototype::getOwnPropertySlot): |
| 6614 | (KJS::arrayProtoFuncToString): |
| 6615 | (KJS::arrayProtoFuncToLocaleString): |
| 6616 | (KJS::arrayProtoFuncConcat): |
| 6617 | (KJS::arrayProtoFuncSort): |
| 6618 | (KJS::ArrayObjectImp::construct): |
| 6619 | * kjs/array_object.h: |
| 6620 | * kjs/completion.h: |
| 6621 | * kjs/function.cpp: |
| 6622 | (KJS::JSFunction::JSFunction): |
| 6623 | (KJS::JSFunction::mark): |
| 6624 | (KJS::JSFunction::getCallData): |
| 6625 | (KJS::JSFunction::callAsFunction): |
| 6626 | (KJS::JSFunction::argumentsGetter): |
| 6627 | (KJS::JSFunction::callerGetter): |
| 6628 | (KJS::JSFunction::lengthGetter): |
| 6629 | (KJS::JSFunction::getOwnPropertySlot): |
| 6630 | (KJS::JSFunction::put): |
| 6631 | (KJS::JSFunction::deleteProperty): |
| 6632 | (KJS::JSFunction::getParameterName): |
| 6633 | (KJS::JSFunction::getConstructData): |
| 6634 | (KJS::JSFunction::construct): |
| 6635 | (KJS::IndexToNameMap::IndexToNameMap): |
| 6636 | (KJS::Arguments::Arguments): |
| 6637 | * kjs/function.h: |
| 6638 | * kjs/function_object.cpp: |
| 6639 | (KJS::functionProtoFuncToString): |
| 6640 | (KJS::functionProtoFuncApply): |
| 6641 | (KJS::FunctionObjectImp::construct): |
| 6642 | * kjs/internal.cpp: |
| 6643 | (KJS::JSString::toPrimitive): |
| 6644 | (KJS::JSString::getPrimitiveNumber): |
| 6645 | (KJS::JSString::toBoolean): |
| 6646 | (KJS::JSString::toNumber): |
| 6647 | (KJS::JSString::toString): |
| 6648 | (KJS::StringInstance::create): |
| 6649 | (KJS::JSString::toObject): |
| 6650 | (KJS::JSString::toThisObject): |
| 6651 | (KJS::JSString::lengthGetter): |
| 6652 | (KJS::JSString::indexGetter): |
| 6653 | (KJS::JSString::indexNumericPropertyGetter): |
| 6654 | (KJS::JSString::getOwnPropertySlot): |
| 6655 | (KJS::JSNumberCell::type): |
| 6656 | (KJS::JSNumberCell::toPrimitive): |
| 6657 | (KJS::JSNumberCell::getPrimitiveNumber): |
| 6658 | (KJS::JSNumberCell::toBoolean): |
| 6659 | (KJS::JSNumberCell::toNumber): |
| 6660 | (KJS::JSNumberCell::toString): |
| 6661 | (KJS::JSNumberCell::toObject): |
| 6662 | (KJS::JSNumberCell::toThisObject): |
| 6663 | (KJS::JSNumberCell::getUInt32): |
| 6664 | (KJS::JSNumberCell::getTruncatedInt32): |
| 6665 | (KJS::JSNumberCell::getTruncatedUInt32): |
| 6666 | (KJS::GetterSetter::mark): |
| 6667 | (KJS::GetterSetter::toPrimitive): |
| 6668 | (KJS::GetterSetter::getPrimitiveNumber): |
| 6669 | (KJS::GetterSetter::toBoolean): |
| 6670 | (KJS::GetterSetter::toNumber): |
| 6671 | (KJS::GetterSetter::toString): |
| 6672 | (KJS::GetterSetter::toObject): |
| 6673 | (KJS::GetterSetter::getOwnPropertySlot): |
| 6674 | (KJS::GetterSetter::put): |
| 6675 | (KJS::GetterSetter::toThisObject): |
| 6676 | * kjs/internal.h: |
| 6677 | (KJS::JSString::JSString): |
| 6678 | (KJS::JSString::getStringPropertySlot): |
| 6679 | * kjs/nodes.cpp: |
| 6680 | (KJS::FuncDeclNode::makeFunction): |
| 6681 | (KJS::FuncExprNode::makeFunction): |
| 6682 | * kjs/nodes.h: |
| 6683 | * kjs/object.cpp: |
| 6684 | (KJS::JSObject::put): |
| 6685 | (KJS::JSObject::deleteProperty): |
| 6686 | (KJS::JSObject::defineGetter): |
| 6687 | (KJS::JSObject::defineSetter): |
| 6688 | (KJS::JSObject::lookupGetter): |
| 6689 | (KJS::JSObject::lookupSetter): |
| 6690 | (KJS::JSObject::fillGetterPropertySlot): |
| 6691 | * kjs/object.h: |
| 6692 | (KJS::GetterSetter::GetterSetter): |
| 6693 | * kjs/operations.cpp: |
| 6694 | (KJS::equal): |
| 6695 | (KJS::strictEqual): |
| 6696 | * kjs/property_map.cpp: |
| 6697 | (KJS::PropertyMap::containsGettersOrSetters): |
| 6698 | * kjs/regexp_object.cpp: |
| 6699 | (KJS::RegExpMatchesArray::getOwnPropertySlot): |
| 6700 | (KJS::RegExpMatchesArray::put): |
| 6701 | (KJS::RegExpMatchesArray::deleteProperty): |
| 6702 | (KJS::RegExpMatchesArray::getPropertyNames): |
| 6703 | (KJS::RegExpMatchesArray::RegExpMatchesArray): |
| 6704 | (KJS::RegExpMatchesArray::fillArrayInstance): |
| 6705 | * kjs/string_object.cpp: |
| 6706 | (KJS::StringInstance::StringInstance): |
| 6707 | (KJS::replace): |
| 6708 | (KJS::stringProtoFuncReplace): |
| 6709 | (KJS::stringProtoFuncToLowerCase): |
| 6710 | (KJS::stringProtoFuncToUpperCase): |
| 6711 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 6712 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 6713 | * kjs/string_object.h: |
| 6714 | (KJS::StringInstance::internalValue): |
| 6715 | * kjs/value.cpp: |
| 6716 | (KJS::JSCell::getNumber): |
| 6717 | (KJS::JSCell::getString): |
| 6718 | (KJS::JSCell::getObject): |
| 6719 | (KJS::jsString): |
| 6720 | (KJS::jsOwnedString): |
| 6721 | * kjs/value.h: |
| 6722 | (KJS::JSNumberCell::JSNumberCell): |
| 6723 | (KJS::jsNumberCell): |
| 6724 | (KJS::JSValue::uncheckedGetNumber): |
| 6725 | * profiler/Profiler.cpp: |
| 6726 | (KJS::createCallIdentifier): |
| 6727 | (KJS::createCallIdentifierFromFunctionImp): |
| 6728 | |
| 6729 | 2008-06-15 Maciej Stachowiak <mjs@apple.com> |
| 6730 | |
| 6731 | Reviewed by Alexey. |
| 6732 | |
| 6733 | - add emitUnaryOp, emitNullaryOp and emitUnaryOpNoDst; use them |
| 6734 | |
| 6735 | This removes some boilerplate code and also reduces the number of |
| 6736 | places that will need to be changed to do on-demand emit of |
| 6737 | loads (and thus support k operands). |
| 6738 | |
| 6739 | * VM/CodeGenerator.cpp: |
| 6740 | (KJS::CodeGenerator::emitUnaryOp): |
| 6741 | (KJS::CodeGenerator::emitNullaryOp): |
| 6742 | (KJS::CodeGenerator::emitUnaryOpNoDst): |
| 6743 | (KJS::CodeGenerator::emitPushScope): |
| 6744 | * VM/CodeGenerator.h: |
| 6745 | (KJS::CodeGenerator::emitNewObject): |
| 6746 | (KJS::CodeGenerator::emitNewArray): |
| 6747 | (KJS::CodeGenerator::emitNot): |
| 6748 | (KJS::CodeGenerator::emitBitNot): |
| 6749 | (KJS::CodeGenerator::emitToJSNumber): |
| 6750 | (KJS::CodeGenerator::emitNegate): |
| 6751 | (KJS::CodeGenerator::emitInstanceOf): |
| 6752 | (KJS::CodeGenerator::emitTypeOf): |
| 6753 | (KJS::CodeGenerator::emitIn): |
| 6754 | (KJS::CodeGenerator::emitReturn): |
| 6755 | (KJS::CodeGenerator::emitEnd): |
| 6756 | (KJS::CodeGenerator::emitGetPropertyNames): |
| 6757 | |
| 6758 | 2008-06-15 Alp Toker <alp@nuanti.com> |
| 6759 | |
| 6760 | Rubber-stamped by Maciej. |
| 6761 | |
| 6762 | Install 'jsc' application by default. |
| 6763 | |
| 6764 | * GNUmakefile.am: |
| 6765 | |
| 6766 | 2008-06-15 Maciej Stachowiak <mjs@apple.com> |
| 6767 | |
| 6768 | Reviewed by Oliver. |
| 6769 | |
| 6770 | - rename testkjs to jsc |
| 6771 | |
| 6772 | * GNUmakefile.am: |
| 6773 | * JavaScriptCore.vcproj/JavaScriptCore.sln: |
| 6774 | * JavaScriptCore.vcproj/jsc: Added. |
| 6775 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: Copied from JavaScriptCore.vcproj/testkjs/testkjs.vcproj. |
| 6776 | * JavaScriptCore.vcproj/testkjs: Removed. |
| 6777 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Removed. |
| 6778 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 6779 | * jscore.bkl: |
| 6780 | * kjs/Shell.cpp: Copied from kjs/testkjs.cpp. |
| 6781 | (main): |
| 6782 | (printUsageStatement): |
| 6783 | (jscmain): |
| 6784 | * kjs/jsc.pro: Copied from kjs/testkjs.pro. |
| 6785 | * kjs/testkjs.cpp: Removed. |
| 6786 | * kjs/testkjs.pro: Removed. |
| 6787 | * tests/mozilla/expected.html: |
| 6788 | * tests/mozilla/js1_2/Array/tostring_1.js: |
| 6789 | * tests/mozilla/js1_2/Array/tostring_2.js: |
| 6790 | * tests/mozilla/jsDriver.pl: |
| 6791 | |
| 6792 | 2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 6793 | |
| 6794 | Reviewed by Maciej. |
| 6795 | |
| 6796 | Mac build fix. |
| 6797 | |
| 6798 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 6799 | * kjs/nodes.h: |
| 6800 | |
| 6801 | 2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 6802 | |
| 6803 | Reviewed by Maciej. |
| 6804 | |
| 6805 | Change the spelling of PrecMultiplicitave to PrecMultiplicative. |
| 6806 | |
| 6807 | * kjs/nodes.h: |
| 6808 | (KJS::MultNode::precedence): |
| 6809 | (KJS::DivNode::precedence): |
| 6810 | (KJS::ModNode::precedence): |
| 6811 | |
| 6812 | 2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 6813 | |
| 6814 | Reviewed by Maciej. |
| 6815 | |
| 6816 | Remove unused preprocessor macros related to exceptions in the old |
| 6817 | interpreter. |
| 6818 | |
| 6819 | * kjs/nodes.cpp: |
| 6820 | |
| 6821 | 2008-06-15 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 6822 | |
| 6823 | Reviewed by Maciej. |
| 6824 | |
| 6825 | Bug 19484: More instructions needs to use temporary registers |
| 6826 | <https://bugs.webkit.org/show_bug.cgi?id=19484> |
| 6827 | |
| 6828 | Fix codegen for all binary operations so that temporaries are used if |
| 6829 | necessary. This was done by making BinaryOpNode and ReverseBinaryOpNode |
| 6830 | subclasses of ExpressionNode, and eliminating the custom emitCode() |
| 6831 | methods for the individual node classes. |
| 6832 | |
| 6833 | This only adds 3 new instructions to SunSpider code, and there is no |
| 6834 | difference in SunSpider execution time. |
| 6835 | |
| 6836 | * VM/CodeGenerator.cpp: |
| 6837 | (KJS::CodeGenerator::emitBitNot): |
| 6838 | (KJS::CodeGenerator::emitBinaryOp): |
| 6839 | * VM/CodeGenerator.h: |
| 6840 | * kjs/grammar.y: |
| 6841 | * kjs/nodes.cpp: |
| 6842 | (KJS::PreIncResolveNode::emitCode): |
| 6843 | (KJS::PreDecResolveNode::emitCode): |
| 6844 | (KJS::BinaryOpNode::emitCode): |
| 6845 | (KJS::ReverseBinaryOpNode::emitCode): |
| 6846 | (KJS::emitReadModifyAssignment): |
| 6847 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 6848 | * kjs/nodes.h: |
| 6849 | (KJS::BinaryOpNode::BinaryOpNode): |
| 6850 | (KJS::ReverseBinaryOpNode::ReverseBinaryOpNode): |
| 6851 | (KJS::MultNode::): |
| 6852 | (KJS::DivNode::): |
| 6853 | (KJS::DivNode::precedence): |
| 6854 | (KJS::ModNode::): |
| 6855 | (KJS::ModNode::precedence): |
| 6856 | (KJS::AddNode::): |
| 6857 | (KJS::AddNode::precedence): |
| 6858 | (KJS::SubNode::): |
| 6859 | (KJS::SubNode::precedence): |
| 6860 | (KJS::LeftShiftNode::): |
| 6861 | (KJS::LeftShiftNode::precedence): |
| 6862 | (KJS::RightShiftNode::): |
| 6863 | (KJS::RightShiftNode::precedence): |
| 6864 | (KJS::UnsignedRightShiftNode::): |
| 6865 | (KJS::UnsignedRightShiftNode::precedence): |
| 6866 | (KJS::LessNode::): |
| 6867 | (KJS::LessNode::precedence): |
| 6868 | (KJS::GreaterNode::): |
| 6869 | (KJS::GreaterNode::precedence): |
| 6870 | (KJS::LessEqNode::): |
| 6871 | (KJS::LessEqNode::precedence): |
| 6872 | (KJS::GreaterEqNode::): |
| 6873 | (KJS::GreaterEqNode::precedence): |
| 6874 | (KJS::InstanceOfNode::): |
| 6875 | (KJS::InstanceOfNode::precedence): |
| 6876 | (KJS::InNode::): |
| 6877 | (KJS::InNode::precedence): |
| 6878 | (KJS::EqualNode::): |
| 6879 | (KJS::EqualNode::precedence): |
| 6880 | (KJS::NotEqualNode::): |
| 6881 | (KJS::NotEqualNode::precedence): |
| 6882 | (KJS::StrictEqualNode::): |
| 6883 | (KJS::StrictEqualNode::precedence): |
| 6884 | (KJS::NotStrictEqualNode::): |
| 6885 | (KJS::NotStrictEqualNode::precedence): |
| 6886 | (KJS::BitAndNode::): |
| 6887 | (KJS::BitAndNode::precedence): |
| 6888 | (KJS::BitOrNode::): |
| 6889 | (KJS::BitOrNode::precedence): |
| 6890 | (KJS::BitXOrNode::): |
| 6891 | (KJS::BitXOrNode::precedence): |
| 6892 | * kjs/nodes2string.cpp: |
| 6893 | (KJS::LessNode::streamTo): |
| 6894 | (KJS::GreaterNode::streamTo): |
| 6895 | (KJS::LessEqNode::streamTo): |
| 6896 | (KJS::GreaterEqNode::streamTo): |
| 6897 | (KJS::InstanceOfNode::streamTo): |
| 6898 | (KJS::InNode::streamTo): |
| 6899 | (KJS::EqualNode::streamTo): |
| 6900 | (KJS::NotEqualNode::streamTo): |
| 6901 | (KJS::StrictEqualNode::streamTo): |
| 6902 | (KJS::NotStrictEqualNode::streamTo): |
| 6903 | (KJS::BitAndNode::streamTo): |
| 6904 | (KJS::BitXOrNode::streamTo): |
| 6905 | (KJS::BitOrNode::streamTo): |
| 6906 | |
| 6907 | 2008-06-14 Darin Adler <darin@apple.com> |
| 6908 | |
| 6909 | Rubber stamped by Sam. |
| 6910 | |
| 6911 | - rename a bunch of local symbols within the regular expression code to |
| 6912 | follow our usual coding style, and do a few other name tweaks |
| 6913 | |
| 6914 | * pcre/pcre_compile.cpp: |
| 6915 | (CompileData::CompileData): |
| 6916 | (checkEscape): |
| 6917 | (readRepeatCounts): |
| 6918 | (compileBranch): |
| 6919 | (compileBracket): |
| 6920 | (calculateCompiledPatternLength): |
| 6921 | (returnError): |
| 6922 | (jsRegExpCompile): |
| 6923 | * pcre/pcre_exec.cpp: |
| 6924 | (MatchStack::MatchStack): |
| 6925 | (MatchStack::canUseStackBufferForNextFrame): |
| 6926 | (MatchStack::popCurrentFrame): |
| 6927 | (match): |
| 6928 | (tryFirstByteOptimization): |
| 6929 | (tryRequiredByteOptimization): |
| 6930 | (jsRegExpExecute): |
| 6931 | * pcre/pcre_internal.h: |
| 6932 | |
| 6933 | 2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 6934 | |
| 6935 | Reviewed by Darin. |
| 6936 | |
| 6937 | Remove redundant uses of get(). |
| 6938 | |
| 6939 | * kjs/nodes.cpp: |
| 6940 | (KJS::BracketAccessorNode::emitCode): |
| 6941 | (KJS::AddNode::emitCode): |
| 6942 | (KJS::SubNode::emitCode): |
| 6943 | (KJS::ReadModifyResolveNode::emitCode): |
| 6944 | (KJS::AssignDotNode::emitCode): |
| 6945 | (KJS::ReadModifyDotNode::emitCode): |
| 6946 | (KJS::AssignBracketNode::emitCode): |
| 6947 | (KJS::ReadModifyBracketNode::emitCode): |
| 6948 | |
| 6949 | 2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 6950 | |
| 6951 | Reviewed by Maciej. |
| 6952 | |
| 6953 | Make code generation not use a temporary for the left-hand side of an |
| 6954 | expression if the right-hand side is a local variable. |
| 6955 | |
| 6956 | * VM/CodeGenerator.cpp: |
| 6957 | (KJS::CodeGenerator::isLocal): |
| 6958 | * VM/CodeGenerator.h: |
| 6959 | (KJS::CodeGenerator::leftHandSideNeedsCopy): |
| 6960 | (KJS::CodeGenerator::emitNodeForLeftHandSide): |
| 6961 | * kjs/nodes.cpp: |
| 6962 | (KJS::ResolveNode::isPure): |
| 6963 | (KJS::BracketAccessorNode::emitCode): |
| 6964 | (KJS::AddNode::emitCode): |
| 6965 | (KJS::SubNode::emitCode): |
| 6966 | (KJS::ReadModifyResolveNode::emitCode): |
| 6967 | (KJS::AssignDotNode::emitCode): |
| 6968 | (KJS::ReadModifyDotNode::emitCode): |
| 6969 | (KJS::AssignBracketNode::emitCode): |
| 6970 | (KJS::ReadModifyBracketNode::emitCode): |
| 6971 | * kjs/nodes.h: |
| 6972 | (KJS::ExpressionNode::): |
| 6973 | (KJS::BooleanNode::): |
| 6974 | (KJS::NumberNode::): |
| 6975 | (KJS::StringNode::): |
| 6976 | |
| 6977 | 2008-06-14 Darin Adler <darin@apple.com> |
| 6978 | |
| 6979 | Reviewed by Sam. |
| 6980 | |
| 6981 | - more of https://bugs.webkit.org/show_bug.cgi?id=17257 |
| 6982 | start ref counts at 1 instead of 0 for speed |
| 6983 | |
| 6984 | * kjs/nodes.cpp: |
| 6985 | (KJS::ParserRefCounted::hasOneRef): Added. Replaces refcount. |
| 6986 | * kjs/nodes.h: Replaced refcount with hasOneRef. |
| 6987 | |
| 6988 | * wtf/ListRefPtr.h: |
| 6989 | (WTF::ListRefPtr::~ListRefPtr): Changed to use hasOneRef instead of |
| 6990 | refcount, so this class can be used with the RefCounted template. |
| 6991 | |
| 6992 | * wtf/RefCounted.h: |
| 6993 | (WTF::RefCounted::hasOneRef): Made const, since there's no reason for |
| 6994 | it to be non-const. |
| 6995 | |
| 6996 | 2008-06-14 Maciej Stachowiak <mjs@apple.com> |
| 6997 | |
| 6998 | Reviewed by Oliver. |
| 6999 | |
| 7000 | - initialize local vars as side effect of call instead of in bytecode |
| 7001 | 1.004x speedup on SunSpider. |
| 7002 | |
| 7003 | This removes just the dispatch overhead for these loads - in the |
| 7004 | future, dead store elimination might be able to eliminate them |
| 7005 | entirely. |
| 7006 | |
| 7007 | * VM/CodeGenerator.cpp: |
| 7008 | (KJS::CodeGenerator::CodeGenerator): For function blocks, don't |
| 7009 | emit loads of undefined for var initialization. |
| 7010 | * VM/Machine.cpp: |
| 7011 | (KJS::slideRegisterWindowForCall): Instead, initialize locals |
| 7012 | as part of the call. |
| 7013 | |
| 7014 | 2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7015 | |
| 7016 | Reviewed by Oliver. |
| 7017 | |
| 7018 | Remove helper functions in the parser that are no longer needed. |
| 7019 | |
| 7020 | * kjs/grammar.y: |
| 7021 | |
| 7022 | 2008-06-14 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7023 | |
| 7024 | Reviewed by Oliver. |
| 7025 | |
| 7026 | Bug 19484: More instructions needs to use temporary registers |
| 7027 | <https://bugs.webkit.org/show_bug.cgi?id=19484> |
| 7028 | |
| 7029 | Make code generation for AddNode and SubNode use temporaries when |
| 7030 | necessary. |
| 7031 | |
| 7032 | * kjs/grammar.y: |
| 7033 | * kjs/nodes.cpp: |
| 7034 | (KJS::AddNode::emitCode): |
| 7035 | (KJS::SubNode::emitCode): |
| 7036 | * kjs/nodes.h: |
| 7037 | (KJS::AddNode::): |
| 7038 | (KJS::SubNode::): |
| 7039 | |
| 7040 | 2008-06-13 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7041 | |
| 7042 | Reviewed by Maciej. |
| 7043 | |
| 7044 | Combine TrueNode and FalseNode to make BooleanNode, and remove the |
| 7045 | unused class PlaceholderTrueNode. |
| 7046 | |
| 7047 | * kjs/grammar.y: |
| 7048 | * kjs/nodes.cpp: |
| 7049 | (KJS::BooleanNode::emitCode): |
| 7050 | * kjs/nodes.h: |
| 7051 | (KJS::BooleanNode::): |
| 7052 | (KJS::BooleanNode::precedence): |
| 7053 | * kjs/nodes2string.cpp: |
| 7054 | (KJS::BooleanNode::streamTo): |
| 7055 | |
| 7056 | 2008-06-13 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7057 | |
| 7058 | Reviewed by Maciej. |
| 7059 | |
| 7060 | Eliminate the use of temporaries to store the left hand side of an |
| 7061 | expression when the right hand side is a constant. This slightly |
| 7062 | improves the generated bytecode for a few SunSpider tests, but it is |
| 7063 | mostly in preparation for fixing |
| 7064 | |
| 7065 | Bug 19484: More instructions needs to use temporary registers |
| 7066 | <https://bugs.webkit.org/show_bug.cgi?id=19484> |
| 7067 | |
| 7068 | * VM/CodeGenerator.h: |
| 7069 | (KJS::CodeGenerator::leftHandSideNeedsCopy): |
| 7070 | (KJS::CodeGenerator::emitNodeForLeftHandSide): |
| 7071 | * kjs/nodes.cpp: |
| 7072 | (KJS::BracketAccessorNode::emitCode): |
| 7073 | (KJS::ReadModifyResolveNode::emitCode): |
| 7074 | (KJS::AssignDotNode::emitCode): |
| 7075 | (KJS::ReadModifyDotNode::emitCode): |
| 7076 | (KJS::AssignBracketNode::emitCode): |
| 7077 | (KJS::ReadModifyBracketNode::emitCode): |
| 7078 | * kjs/nodes.h: |
| 7079 | (KJS::ExpressionNode::): |
| 7080 | (KJS::FalseNode::): |
| 7081 | (KJS::TrueNode::): |
| 7082 | (KJS::NumberNode::): |
| 7083 | (KJS::StringNode::): |
| 7084 | |
| 7085 | 2008-06-13 Maciej Stachowiak <mjs@apple.com> |
| 7086 | |
| 7087 | Reviewed by Oliver. |
| 7088 | |
| 7089 | - prettify opcode stats output |
| 7090 | |
| 7091 | I changed things to be a bit more aligned, also there is a new |
| 7092 | section listing most common opcodes and most common sequences that |
| 7093 | include them. |
| 7094 | |
| 7095 | * VM/Opcode.cpp: |
| 7096 | (KJS::OpcodeStats::~OpcodeStats): |
| 7097 | * VM/Opcode.h: |
| 7098 | |
| 7099 | 2008-06-13 Kevin McCullough <kmccullough@apple.com> |
| 7100 | |
| 7101 | Reviewed by Geoff. |
| 7102 | |
| 7103 | <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the |
| 7104 | profiler. |
| 7105 | - Remove recursion from exclude(). This leaves only focus() to fix. |
| 7106 | |
| 7107 | * JavaScriptCore.exp: Change the signatures of the exported functions. |
| 7108 | * profiler/Profile.cpp: |
| 7109 | (KJS::Profile::forEach): I added a traverseNextNodePreOrder() function |
| 7110 | and so needed to distinguish the other function by labeling it |
| 7111 | traverseNextNodePostOrder(). |
| 7112 | (KJS::Profile::exclude): All new exclude that iteratively walks the tree |
| 7113 | * profiler/Profile.h: |
| 7114 | (KJS::Profile::focus): Add a null check for m_head. |
| 7115 | * profiler/ProfileNode.cpp: |
| 7116 | (KJS::ProfileNode::traverseNextNodePostOrder): Renamed |
| 7117 | (KJS::ProfileNode::traverseNextNodePreOrder): Walks the tree in pre- |
| 7118 | order, where the parent is processed before the children. |
| 7119 | (KJS::ProfileNode::setTreeVisible): Iterate over the sub-tree and set |
| 7120 | all of the nodes visible value. This changes another function that used |
| 7121 | recursion. |
| 7122 | (KJS::ProfileNode::exclude): Remove recursion from this function. |
| 7123 | Because we now check for m_visible and we are walking the tree in pre- |
| 7124 | order we do not need to check if an excluded node is in an excluded |
| 7125 | sub-tree. |
| 7126 | * profiler/ProfileNode.h: Added specific selfTime functions to |
| 7127 | facilitate exclude(). |
| 7128 | (KJS::ProfileNode::setSelfTime): |
| 7129 | (KJS::ProfileNode::setActualSelfTime): |
| 7130 | (KJS::ProfileNode::setVisibleSelfTime): |
| 7131 | |
| 7132 | 2008-06-12 Darin Adler <darin@apple.com> |
| 7133 | |
| 7134 | Reviewed by Maciej. |
| 7135 | |
| 7136 | - https://bugs.webkit.org/show_bug.cgi?id=19434 |
| 7137 | speed up SunSpider by avoiding some string boxing |
| 7138 | |
| 7139 | Speeds up SunSpider by 1.1%. |
| 7140 | |
| 7141 | Optimized code path for getting built-in properties from strings -- avoid |
| 7142 | boxing with a string object in that case. We can make further changes to avoid |
| 7143 | even more boxing, but this change alone is a win. |
| 7144 | |
| 7145 | * API/JSCallbackObjectFunctions.h: |
| 7146 | (KJS::JSCallbackObject::staticValueGetter): Use isObject instead of inherits |
| 7147 | in asssert, since the type of slotBase() is now JSValue, not JSObject. |
| 7148 | (KJS::JSCallbackObject::staticFunctionGetter): Ditto. |
| 7149 | (KJS::JSCallbackObject::callbackGetter): Ditto. |
| 7150 | |
| 7151 | * kjs/internal.cpp: |
| 7152 | (KJS::StringImp::getPrimitiveNumber): Updated for change of data member name. |
| 7153 | (KJS::StringImp::toBoolean): Ditto. |
| 7154 | (KJS::StringImp::toNumber): Ditto. |
| 7155 | (KJS::StringImp::toString): Ditto. |
| 7156 | (KJS::StringInstance::create): Added; avoids a bit of cut and paste code. |
| 7157 | (KJS::StringImp::toObject): Use StringInstance::create. |
| 7158 | (KJS::StringImp::toThisObject): Ditto. |
| 7159 | (KJS::StringImp::lengthGetter): Added. Replaces the getter that used to live in |
| 7160 | the StringInstance class. |
| 7161 | (KJS::StringImp::indexGetter): Ditto. |
| 7162 | (KJS::StringImp::indexNumericPropertyGetter): Ditto. |
| 7163 | (KJS::StringImp::getOwnPropertySlot): Added. Deals with built in properties of |
| 7164 | the string class without creating a StringInstance. |
| 7165 | |
| 7166 | * kjs/internal.h: |
| 7167 | (KJS::StringImp::getStringPropertySlot): Added. To be used by both the string |
| 7168 | and string object getOwnPropertySlot function. |
| 7169 | |
| 7170 | * kjs/lookup.h: |
| 7171 | (KJS::staticFunctionGetter): Updated since slotBase() is now a JSValue rather |
| 7172 | than a JSObject. |
| 7173 | |
| 7174 | * kjs/object.h: Removed PropertySlot::slotBase() function, which can now move |
| 7175 | back into property_slot.h where it belongs since it doesn't have to cast to |
| 7176 | JSObject*. |
| 7177 | |
| 7178 | * kjs/property_slot.cpp: |
| 7179 | (KJS::PropertySlot::functionGetter): Updated since slot.slotBase() is now a JSValue* |
| 7180 | instead of JSObject*. setGetterSlot still guarantees the base is a JSObject*. |
| 7181 | * kjs/property_slot.h: |
| 7182 | (KJS::PropertySlot::PropertySlot): Changed base to JSValue* intead of JSCell*. |
| 7183 | (KJS::PropertySlot::setStaticEntry): Ditto. |
| 7184 | (KJS::PropertySlot::setCustom): Ditto. |
| 7185 | (KJS::PropertySlot::setCustomIndex): Ditto. |
| 7186 | (KJS::PropertySlot::setCustomNumeric): Ditto. |
| 7187 | (KJS::PropertySlot::slotBase): Moved inline here since it no longer involves a |
| 7188 | downcast to JSObject*. |
| 7189 | (KJS::PropertySlot::setBase): Changed to JSValue*. |
| 7190 | |
| 7191 | * kjs/string_object.cpp: |
| 7192 | (KJS::StringInstance::getOwnPropertySlot): Changed to use getStringPropertySlot |
| 7193 | instead of coding the properties here. This allows sharing the code with StringImp. |
| 7194 | |
| 7195 | * kjs/string_object.h: Removed inlineGetOwnPropertySlot, lengthGetter, and indexGetter. |
| 7196 | Made one of the constructors protected. |
| 7197 | |
| 7198 | * kjs/value.h: Made getOwnPropertySlot private in the JSCell class -- this is better |
| 7199 | since it's not the real JSObject getOwnPropertySlot semantic and most callers shouldn't |
| 7200 | use it. |
| 7201 | |
| 7202 | 2008-06-12 Alexey Proskuryakov <ap@webkit.org> |
| 7203 | |
| 7204 | Reviewed by Maciej. |
| 7205 | |
| 7206 | Preparation to making JavaScript heap per-thread. |
| 7207 | |
| 7208 | * kjs/collector.cpp: |
| 7209 | (KJS::Collector::collect): |
| 7210 | * kjs/collector.h: |
| 7211 | (KJS::Collector::markListSet): |
| 7212 | The collector now holds the list of protected lists itself, to be made per-instance. |
| 7213 | |
| 7214 | * kjs/list.h: Changed to hold a pointer to a mark set this list is in, if any. |
| 7215 | (KJS::List::List): Explicitly initialize m_size with zero, as m_vector.size() is |
| 7216 | guaranteed to be such anyway. |
| 7217 | (KJS::List::append): Changed the fast case to only be executed as long as inline buffer |
| 7218 | is used, because otherwise, we now do more expensive checks. |
| 7219 | |
| 7220 | * kjs/list.cpp: |
| 7221 | (KJS::List::markLists): Renamed from markProtectedListsSlowCase, made it take the list set |
| 7222 | as a parameter. |
| 7223 | (KJS::List::slowAppend): If a non-immediate value is appended, the list needs to be added |
| 7224 | to an appropriate Heap's protected list. For now, a static Collector::markListSet() is |
| 7225 | used, but the code is layed out in preparation to making the switch to multiple heaps. |
| 7226 | |
| 7227 | * JavaScriptCore.exp: Updated export list. |
| 7228 | |
| 7229 | 2008-06-12 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7230 | |
| 7231 | Reviewed by Maciej. |
| 7232 | |
| 7233 | Bug 19510: CodeBlock::needsFullScopeChain not always set for global code |
| 7234 | <https://bugs.webkit.org/show_bug.cgi?id=19510> |
| 7235 | |
| 7236 | This fixes the symptoms by using CodeGenerator::m_codeType to determine |
| 7237 | when to use temporaries instead of CodeBlock::needsFullScopeChain, but |
| 7238 | it does not fix the problem itself. |
| 7239 | |
| 7240 | * VM/CodeGenerator.h: |
| 7241 | (KJS::CodeGenerator::leftHandSideNeedsCopy): |
| 7242 | |
| 7243 | 2008-06-11 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7244 | |
| 7245 | Reviewed by Maciej. |
| 7246 | |
| 7247 | Bug 19498: REGRESSION (r34497): crash while loading GMail |
| 7248 | <https://bugs.webkit.org/show_bug.cgi?id=19498> |
| 7249 | |
| 7250 | * VM/CodeGenerator.cpp: |
| 7251 | (KJS::CodeGenerator::emitJumpIfTrueMayCombine): |
| 7252 | (KJS::CodeGenerator::emitJumpIfTrue): |
| 7253 | * VM/CodeGenerator.h: |
| 7254 | * kjs/nodes.cpp: |
| 7255 | (KJS::DoWhileNode::emitCode): |
| 7256 | (KJS::WhileNode::emitCode): |
| 7257 | (KJS::ForNode::emitCode): |
| 7258 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 7259 | |
| 7260 | 2008-06-11 Darin Adler <darin@apple.com> |
| 7261 | |
| 7262 | Reviewed by Maciej. |
| 7263 | |
| 7264 | - a little bit of cleanup and prep for some upcoming optimizations |
| 7265 | |
| 7266 | * JavaScriptCore.exp: Re-sorted this file (with sort command line tool). |
| 7267 | * VM/CodeBlock.cpp: |
| 7268 | (KJS::CodeBlock::dump): Fixed printf to avoid warnings -- to use %lu we |
| 7269 | need to make sure the type is unsigned long. |
| 7270 | * kjs/object.cpp: |
| 7271 | (KJS::Error::create): Eliminated unused error names array, and also put |
| 7272 | the strings into the code since there was already a switch statment. |
| 7273 | This also avoids having to contemplate a hypothetical access past the |
| 7274 | end of the array. |
| 7275 | * kjs/object.h: Got rid of errorNames. |
| 7276 | * kjs/property_slot.cpp: Deleted unused ungettableGetter. |
| 7277 | * kjs/property_slot.h: Ditto. |
| 7278 | * wtf/AlwaysInline.h: Added LIKELY alongside UNLIKELY. |
| 7279 | |
| 7280 | 2008-06-11 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7281 | |
| 7282 | Reviewed by Darin. |
| 7283 | |
| 7284 | Bug 19457: Create fused opcodes for tests and conditional jumps |
| 7285 | <https://bugs.webkit.org/show_bug.cgi?id=19457> |
| 7286 | |
| 7287 | Add a new jless instruction, and modify the code generator to emit it |
| 7288 | instead of the pair (less, jtrue). |
| 7289 | |
| 7290 | Gives a 3.6% improvement on SunSpider. |
| 7291 | |
| 7292 | * VM/CodeBlock.cpp: |
| 7293 | (KJS::CodeBlock::dump): |
| 7294 | * VM/CodeGenerator.cpp: |
| 7295 | (KJS::CodeGenerator::CodeGenerator): |
| 7296 | (KJS::CodeGenerator::emitOpcode): |
| 7297 | (KJS::CodeGenerator::retrieveLastBinaryOp): |
| 7298 | (KJS::CodeGenerator::rewindBinaryOp): |
| 7299 | (KJS::CodeGenerator::emitJump): |
| 7300 | (KJS::CodeGenerator::emitJumpIfTrue): |
| 7301 | (KJS::CodeGenerator::emitJumpIfFalse): |
| 7302 | (KJS::CodeGenerator::emitMove): |
| 7303 | (KJS::CodeGenerator::emitNot): |
| 7304 | (KJS::CodeGenerator::emitEqual): |
| 7305 | (KJS::CodeGenerator::emitNotEqual): |
| 7306 | (KJS::CodeGenerator::emitStrictEqual): |
| 7307 | (KJS::CodeGenerator::emitNotStrictEqual): |
| 7308 | (KJS::CodeGenerator::emitLess): |
| 7309 | (KJS::CodeGenerator::emitLessEq): |
| 7310 | (KJS::CodeGenerator::emitPreInc): |
| 7311 | (KJS::CodeGenerator::emitPreDec): |
| 7312 | (KJS::CodeGenerator::emitPostInc): |
| 7313 | (KJS::CodeGenerator::emitPostDec): |
| 7314 | (KJS::CodeGenerator::emitToJSNumber): |
| 7315 | (KJS::CodeGenerator::emitNegate): |
| 7316 | (KJS::CodeGenerator::emitAdd): |
| 7317 | (KJS::CodeGenerator::emitMul): |
| 7318 | (KJS::CodeGenerator::emitDiv): |
| 7319 | (KJS::CodeGenerator::emitMod): |
| 7320 | (KJS::CodeGenerator::emitSub): |
| 7321 | (KJS::CodeGenerator::emitLeftShift): |
| 7322 | (KJS::CodeGenerator::emitRightShift): |
| 7323 | (KJS::CodeGenerator::emitUnsignedRightShift): |
| 7324 | (KJS::CodeGenerator::emitBitAnd): |
| 7325 | (KJS::CodeGenerator::emitBitXOr): |
| 7326 | (KJS::CodeGenerator::emitBitOr): |
| 7327 | (KJS::CodeGenerator::emitBitNot): |
| 7328 | (KJS::CodeGenerator::emitInstanceOf): |
| 7329 | (KJS::CodeGenerator::emitTypeOf): |
| 7330 | (KJS::CodeGenerator::emitIn): |
| 7331 | (KJS::CodeGenerator::emitLoad): |
| 7332 | (KJS::CodeGenerator::emitNewObject): |
| 7333 | (KJS::CodeGenerator::emitNewArray): |
| 7334 | (KJS::CodeGenerator::emitResolve): |
| 7335 | (KJS::CodeGenerator::emitGetScopedVar): |
| 7336 | (KJS::CodeGenerator::emitPutScopedVar): |
| 7337 | (KJS::CodeGenerator::emitResolveBase): |
| 7338 | (KJS::CodeGenerator::emitResolveWithBase): |
| 7339 | (KJS::CodeGenerator::emitResolveFunction): |
| 7340 | (KJS::CodeGenerator::emitGetById): |
| 7341 | (KJS::CodeGenerator::emitPutById): |
| 7342 | (KJS::CodeGenerator::emitPutGetter): |
| 7343 | (KJS::CodeGenerator::emitPutSetter): |
| 7344 | (KJS::CodeGenerator::emitDeleteById): |
| 7345 | (KJS::CodeGenerator::emitGetByVal): |
| 7346 | (KJS::CodeGenerator::emitPutByVal): |
| 7347 | (KJS::CodeGenerator::emitDeleteByVal): |
| 7348 | (KJS::CodeGenerator::emitPutByIndex): |
| 7349 | (KJS::CodeGenerator::emitNewFunction): |
| 7350 | (KJS::CodeGenerator::emitNewRegExp): |
| 7351 | (KJS::CodeGenerator::emitNewFunctionExpression): |
| 7352 | (KJS::CodeGenerator::emitCall): |
| 7353 | (KJS::CodeGenerator::emitReturn): |
| 7354 | (KJS::CodeGenerator::emitEnd): |
| 7355 | (KJS::CodeGenerator::emitConstruct): |
| 7356 | (KJS::CodeGenerator::emitPushScope): |
| 7357 | (KJS::CodeGenerator::emitPopScope): |
| 7358 | (KJS::CodeGenerator::emitDebugHook): |
| 7359 | (KJS::CodeGenerator::emitComplexJumpScopes): |
| 7360 | (KJS::CodeGenerator::emitJumpScopes): |
| 7361 | (KJS::CodeGenerator::emitNextPropertyName): |
| 7362 | (KJS::CodeGenerator::emitGetPropertyNames): |
| 7363 | (KJS::CodeGenerator::emitCatch): |
| 7364 | (KJS::CodeGenerator::emitThrow): |
| 7365 | (KJS::CodeGenerator::emitNewError): |
| 7366 | (KJS::CodeGenerator::emitJumpSubroutine): |
| 7367 | (KJS::CodeGenerator::emitSubroutineReturn): |
| 7368 | * VM/CodeGenerator.h: |
| 7369 | * VM/Machine.cpp: |
| 7370 | (KJS::Machine::privateExecute): |
| 7371 | * VM/Opcode.cpp: |
| 7372 | * VM/Opcode.h: |
| 7373 | |
| 7374 | 2008-06-11 Darin Adler <darin@apple.com> |
| 7375 | |
| 7376 | Reviewed by Alexey. |
| 7377 | |
| 7378 | - fix https://bugs.webkit.org/show_bug.cgi?id=19442 |
| 7379 | JavaScript array implementation doesn't maintain m_numValuesInVector when sorting |
| 7380 | |
| 7381 | * kjs/array_instance.cpp: |
| 7382 | (KJS::ArrayInstance::checkConsistency): Added. Empty inline version for when |
| 7383 | consistency checks are turned off. |
| 7384 | (KJS::ArrayInstance::ArrayInstance): Check consistency after construction. |
| 7385 | (KJS::ArrayInstance::~ArrayInstance): Check consistency before destruction. |
| 7386 | (KJS::ArrayInstance::put): Check consistency before and after. |
| 7387 | (KJS::ArrayInstance::deleteProperty): Ditto. |
| 7388 | (KJS::ArrayInstance::setLength): Ditto. |
| 7389 | (KJS::compareByStringPairForQSort): Use typedef for clarity. |
| 7390 | (KJS::ArrayInstance::sort): Check consistency before and after. Also broke the loop |
| 7391 | to set up sorting into two separate passes. Added FIXMEs about various exception |
| 7392 | safety issues. Added code to set m_numValuesInVector after sorting. |
| 7393 | (KJS::ArrayInstance::compactForSorting): Ditto. |
| 7394 | |
| 7395 | * kjs/array_instance.h: Added a definition of an enum for the types of consistency |
| 7396 | check and a declaration of the consistency checking function. |
| 7397 | |
| 7398 | 2008-06-10 Kevin Ollivier <kevino@theolliviers.com> |
| 7399 | |
| 7400 | wx build fix. Link against libedit on Mac since HAVE(READLINE) is defined there. |
| 7401 | |
| 7402 | * jscore.bkl: |
| 7403 | |
| 7404 | 2008-06-10 Alexey Proskuryakov <ap@webkit.org> |
| 7405 | |
| 7406 | Reviewed by Darin. |
| 7407 | |
| 7408 | https://bugs.webkit.org/show_bug.cgi?id=16503 |
| 7409 | match limit takes at least 13% of the time on the SunSpider regexp-dna test |
| 7410 | |
| 7411 | Make the limit test slightly more efficient. It is not clear how much of a win it is, |
| 7412 | as the improvement on regexp-dna varies from 2.3% to 0.6% depending on what revision I |
| 7413 | apply the patch to. Today, the win on regexp-dna was minimal, but the total win was whopping |
| 7414 | 0.5%, due to random code generation changes. |
| 7415 | |
| 7416 | * pcre/pcre_exec.cpp: (match): Avoid loading a constant on each iteration. |
| 7417 | |
| 7418 | 2008-06-09 Alp Toker <alp@nuanti.com> |
| 7419 | |
| 7420 | gcc3/autotools build fix. Add explicit -O2 -fno-strict-aliasing to |
| 7421 | each of the tools since these are no longer set globally. |
| 7422 | |
| 7423 | * GNUmakefile.am: |
| 7424 | |
| 7425 | 2008-06-09 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7426 | |
| 7427 | Reviewed by Sam. |
| 7428 | |
| 7429 | Add an include for readline/history.h to fix the build for Darwin users |
| 7430 | with the GNU readline library installed. Also, clean up the style of |
| 7431 | the HAVE(READLINE) check. |
| 7432 | |
| 7433 | * kjs/testkjs.cpp: |
| 7434 | (runInteractive): |
| 7435 | |
| 7436 | 2008-06-09 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7437 | |
| 7438 | Reviewed by Darin. |
| 7439 | |
| 7440 | Bug 17531: Add interactive mode to testkjs |
| 7441 | <https://bugs.webkit.org/show_bug.cgi?id=17531> |
| 7442 | |
| 7443 | This is a cleaned up version of Sam's earlier patch to add an |
| 7444 | interactive mode to testkjs. |
| 7445 | |
| 7446 | Readline support is only enabled on Darwin platforms for now, but |
| 7447 | other ports can enable it by defining HAVE_READLINE in kjs/config.h. |
| 7448 | |
| 7449 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 7450 | * kjs/config.h: |
| 7451 | * kjs/testkjs.cpp: |
| 7452 | (Options::Options): |
| 7453 | (runWithScripts): |
| 7454 | (runInteractive): |
| 7455 | (printUsageStatement): |
| 7456 | (parseArguments): |
| 7457 | (kjsmain): |
| 7458 | |
| 7459 | 2008-06-08 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7460 | |
| 7461 | Reviewed by Darin. |
| 7462 | |
| 7463 | Bug 19346: REGRESSION: Mootools 1.2 Class inheritance broken in post-SquirrelFish merge |
| 7464 | <https://bugs.webkit.org/show_bug.cgi?id=19346> |
| 7465 | |
| 7466 | A check for whether a function's caller is eval code accidentally included |
| 7467 | the case where the caller's caller is native code. Add a CodeType field to |
| 7468 | CodeBlock and use this for the eval caller test instead. |
| 7469 | |
| 7470 | * VM/CodeBlock.h: |
| 7471 | (KJS::CodeBlock::CodeBlock): |
| 7472 | (KJS::ProgramCodeBlock::ProgramCodeBlock): |
| 7473 | (KJS::EvalCodeBlock::EvalCodeBlock): |
| 7474 | * VM/Machine.cpp: |
| 7475 | (KJS::getCallerFunctionOffset): |
| 7476 | * kjs/nodes.cpp: |
| 7477 | (KJS::FunctionBodyNode::generateCode): |
| 7478 | (KJS::ProgramNode::generateCode): |
| 7479 | |
| 7480 | 2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7481 | |
| 7482 | Reviewed by Dan Bernstein. |
| 7483 | |
| 7484 | Bug 17928: testkjs shouldn't require "-f" |
| 7485 | <https://bugs.webkit.org/show_bug.cgi?id=17928> |
| 7486 | |
| 7487 | * kjs/testkjs.cpp: |
| 7488 | (printUsageStatement): |
| 7489 | (parseArguments): |
| 7490 | |
| 7491 | 2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7492 | |
| 7493 | Reviewed by Eric. |
| 7494 | |
| 7495 | Bug 17548: JavaScriptCore print(a, b) differs from Spidermonkey Behavior |
| 7496 | <https://bugs.webkit.org/show_bug.cgi?id=17548> |
| 7497 | |
| 7498 | * kjs/testkjs.cpp: |
| 7499 | (functionPrint): |
| 7500 | |
| 7501 | 2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7502 | |
| 7503 | Reviewed by Sam. |
| 7504 | |
| 7505 | Bug 17547: JavaScriptCore print() differs from Spidermonkey Behavior |
| 7506 | <https://bugs.webkit.org/show_bug.cgi?id=17547> |
| 7507 | |
| 7508 | * kjs/testkjs.cpp: |
| 7509 | (functionPrint): |
| 7510 | |
| 7511 | 2008-06-07 Alexey Proskuryakov <ap@webkit.org> |
| 7512 | |
| 7513 | More build fixes. |
| 7514 | |
| 7515 | * kjs/JSGlobalData.cpp: Fixed an included file name for case-sensitive file systems, fixed |
| 7516 | JSGlobalData::threadInstance() for non-multithreaded builds. |
| 7517 | |
| 7518 | 2008-06-07 Alexey Proskuryakov <ap@webkit.org> |
| 7519 | |
| 7520 | Build fix - actually adding JSGlobalData.cpp to non-Mac builds! |
| 7521 | |
| 7522 | * GNUmakefile.am: |
| 7523 | * JavaScriptCore.pri: |
| 7524 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 7525 | * JavaScriptCoreSources.bkl: |
| 7526 | |
| 7527 | 2008-06-07 Alexey Proskuryakov <ap@webkit.org> |
| 7528 | |
| 7529 | Try to fix Gtk/gcc 4.3 build. |
| 7530 | |
| 7531 | * kjs/JSGlobalData.h: Include ustring.h instead of forward-declaring UString::Rep. |
| 7532 | |
| 7533 | 2008-06-06 Alexey Proskuryakov <ap@webkit.org> |
| 7534 | |
| 7535 | Reviewed by Darin. |
| 7536 | |
| 7537 | Combine per-thread objects into one, to make it easier to support legacy clients (for |
| 7538 | which they shouldn't be really per-thread). |
| 7539 | |
| 7540 | No change on SunSpider total. |
| 7541 | |
| 7542 | * JavaScriptCore.xcodeproj/project.pbxproj: Added JSGlobalData.{h,cpp} |
| 7543 | |
| 7544 | * kjs/JSGlobalData.cpp: Added. |
| 7545 | (KJS::JSGlobalData::JSGlobalData): |
| 7546 | (KJS::JSGlobalData::~JSGlobalData): |
| 7547 | (KJS::JSGlobalData::threadInstance): |
| 7548 | * kjs/JSGlobalData.h: Added. |
| 7549 | This class encapsulates all data that should be per-thread (or shared between legacy clients). |
| 7550 | It will also keep a Heap pointer, but right now, Heap (Collector) methods are all static. |
| 7551 | |
| 7552 | * kjs/identifier.h: |
| 7553 | (KJS::Identifier::Identifier): |
| 7554 | Added a constructor explicitly taking JSGlobalData to access IdentifierTable. Actually, |
| 7555 | all of them should, but this will be a separate patch. |
| 7556 | |
| 7557 | * kjs/identifier.cpp: |
| 7558 | (KJS::IdentifierTable::literalTable): |
| 7559 | (KJS::createIdentifierTable): |
| 7560 | (KJS::deleteIdentifierTable): |
| 7561 | (KJS::Identifier::add): |
| 7562 | (KJS::Identifier::addSlowCase): |
| 7563 | Combined IdentifierTable and LiteralIdentifierTable into a single class for simplicity. |
| 7564 | |
| 7565 | * kjs/grammar.y: kjsyyparse now takes JSGlobalData, not just a Lexer. |
| 7566 | |
| 7567 | * kjs/nodes.cpp: |
| 7568 | (KJS::Node::Node): |
| 7569 | (KJS::EvalFunctionCallNode::emitCode): |
| 7570 | (KJS::ScopeNode::ScopeNode): |
| 7571 | Changed to access Lexer and Parser via JSGlobalData::threadInstance(). This is also a |
| 7572 | temporary measure, they will need to use JSGlobalData explicitly. |
| 7573 | |
| 7574 | * VM/CodeGenerator.cpp: |
| 7575 | (KJS::CodeGenerator::CodeGenerator): |
| 7576 | * VM/CodeGenerator.h: |
| 7577 | * VM/Machine.cpp: |
| 7578 | (KJS::callEval): |
| 7579 | * kjs/CommonIdentifiers.cpp: |
| 7580 | (KJS::CommonIdentifiers::CommonIdentifiers): |
| 7581 | * kjs/CommonIdentifiers.h: |
| 7582 | * kjs/DebuggerCallFrame.cpp: |
| 7583 | (KJS::DebuggerCallFrame::evaluate): |
| 7584 | * kjs/ExecState.cpp: |
| 7585 | (KJS::ExecState::ExecState): |
| 7586 | * kjs/ExecState.h: |
| 7587 | (KJS::ExecState::globalData): |
| 7588 | (KJS::ExecState::identifierTable): |
| 7589 | (KJS::ExecState::propertyNames): |
| 7590 | (KJS::ExecState::emptyList): |
| 7591 | (KJS::ExecState::lexer): |
| 7592 | (KJS::ExecState::parser): |
| 7593 | (KJS::ExecState::arrayTable): |
| 7594 | (KJS::ExecState::dateTable): |
| 7595 | (KJS::ExecState::mathTable): |
| 7596 | (KJS::ExecState::numberTable): |
| 7597 | (KJS::ExecState::RegExpImpTable): |
| 7598 | (KJS::ExecState::RegExpObjectImpTable): |
| 7599 | (KJS::ExecState::stringTable): |
| 7600 | * kjs/InitializeThreading.cpp: |
| 7601 | (KJS::initializeThreadingOnce): |
| 7602 | * kjs/JSGlobalObject.cpp: |
| 7603 | (KJS::JSGlobalObject::init): |
| 7604 | * kjs/JSGlobalObject.h: |
| 7605 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| 7606 | (KJS::JSGlobalObject::head): |
| 7607 | (KJS::JSGlobalObject::globalData): |
| 7608 | * kjs/Parser.cpp: |
| 7609 | (KJS::Parser::parse): |
| 7610 | * kjs/Parser.h: |
| 7611 | * kjs/function.cpp: |
| 7612 | (KJS::FunctionImp::getParameterName): |
| 7613 | (KJS::IndexToNameMap::unMap): |
| 7614 | (KJS::globalFuncEval): |
| 7615 | * kjs/function_object.cpp: |
| 7616 | (KJS::FunctionObjectImp::construct): |
| 7617 | * kjs/interpreter.cpp: |
| 7618 | (KJS::Interpreter::checkSyntax): |
| 7619 | (KJS::Interpreter::evaluate): |
| 7620 | * kjs/lexer.cpp: |
| 7621 | (kjsyylex): |
| 7622 | * kjs/lexer.h: |
| 7623 | * kjs/testkjs.cpp: |
| 7624 | (prettyPrintScript): |
| 7625 | Updated for the above changes. Most of threadInstance uses here will need to be replaced with |
| 7626 | explicitly passed pointers to support legacy JSC clients. |
| 7627 | |
| 7628 | * JavaScriptCore.exp: Removed KJS::parser(). |
| 7629 | |
| 7630 | 2008-06-06 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7631 | |
| 7632 | Reviewed by Oliver. |
| 7633 | |
| 7634 | Bug 19424: Add support for logging opcode pair counts |
| 7635 | <https://bugs.webkit.org/show_bug.cgi?id=19424> |
| 7636 | |
| 7637 | * VM/Machine.cpp: |
| 7638 | (KJS::Machine::privateExecute): |
| 7639 | * VM/Opcode.cpp: |
| 7640 | (KJS::OpcodeStats::OpcodeStats): |
| 7641 | (KJS::compareOpcodeIndices): |
| 7642 | (KJS::compareOpcodePairIndices): |
| 7643 | (KJS::OpcodeStats::~OpcodeStats): |
| 7644 | (KJS::OpcodeStats::recordInstruction): |
| 7645 | (KJS::OpcodeStats::resetLastInstruction): |
| 7646 | * VM/Opcode.h: |
| 7647 | |
| 7648 | 2008-06-06 Kevin McCullough <kmccullough@apple.com> |
| 7649 | |
| 7650 | Reviewed by Adam. |
| 7651 | |
| 7652 | <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the |
| 7653 | profiler. |
| 7654 | - Change the remaining functions that do not take arguments, from using |
| 7655 | recursion to using iteration. |
| 7656 | |
| 7657 | * JavaScriptCore.exp: |
| 7658 | * profiler/Profile.cpp: |
| 7659 | (KJS::stopProfiling): |
| 7660 | (KJS::restoreAll): |
| 7661 | (KJS::Profile::stopProfiling): Use foreach instead of recursion. |
| 7662 | (KJS::Profile::restoreAll): Ditto. |
| 7663 | * profiler/Profile.h: |
| 7664 | * profiler/ProfileNode.cpp: Remove recursion. |
| 7665 | (KJS::ProfileNode::stopProfiling): |
| 7666 | (KJS::ProfileNode::restore): |
| 7667 | * profiler/ProfileNode.h: |
| 7668 | |
| 7669 | 2008-06-05 Oliver Hunt <oliver@apple.com> |
| 7670 | |
| 7671 | Reviewed by Alexey. |
| 7672 | |
| 7673 | Fix Greater and GreaterEq nodes to emit code for the left |
| 7674 | and right sub-expressions in the correct order. |
| 7675 | |
| 7676 | * kjs/nodes.cpp: |
| 7677 | (KJS::GreaterNode::emitCode): |
| 7678 | (KJS::GreaterEqNode::emitCode): |
| 7679 | |
| 7680 | 2008-06-05 Antti Koivisto <antti@apple.com> |
| 7681 | |
| 7682 | Reviewed by Alp Toker. |
| 7683 | |
| 7684 | Fix whitespaces. |
| 7685 | |
| 7686 | * kjs/collector.cpp: |
| 7687 | (KJS::getPlatformThreadRegisters): |
| 7688 | |
| 7689 | 2008-06-05 Antti Koivisto <antti@apple.com> |
| 7690 | |
| 7691 | Reviewed by Darin. |
| 7692 | |
| 7693 | Support compiling JavaScriptCore for ARM. |
| 7694 | |
| 7695 | * kjs/collector.cpp: |
| 7696 | (KJS::getPlatformThreadRegisters): |
| 7697 | (KJS::otherThreadStackPointer): |
| 7698 | |
| 7699 | 2008-06-05 Kevin McCullough <kmccullough@apple.com> |
| 7700 | |
| 7701 | Reviewed by Jon. |
| 7702 | |
| 7703 | - Name changes. |
| 7704 | |
| 7705 | * JavaScriptCore.exp: |
| 7706 | * profiler/Profile.cpp: |
| 7707 | (KJS::Profile::Profile): |
| 7708 | (KJS::Profile::stopProfiling): |
| 7709 | (KJS::Profile::didExecute): |
| 7710 | (KJS::Profile::forEach): |
| 7711 | (KJS::Profile::debugPrintData): |
| 7712 | (KJS::Profile::debugPrintDataSampleStyle): |
| 7713 | * profiler/Profile.h: |
| 7714 | (KJS::Profile::callTree): |
| 7715 | (KJS::Profile::totalTime): |
| 7716 | (KJS::Profile::sortTotalTimeDescending): |
| 7717 | (KJS::Profile::sortTotalTimeAscending): |
| 7718 | (KJS::Profile::sortSelfTimeDescending): |
| 7719 | (KJS::Profile::sortSelfTimeAscending): |
| 7720 | (KJS::Profile::sortCallsDescending): |
| 7721 | (KJS::Profile::sortCallsAscending): |
| 7722 | (KJS::Profile::sortFunctionNameDescending): |
| 7723 | (KJS::Profile::sortFunctionNameAscending): |
| 7724 | (KJS::Profile::focus): |
| 7725 | (KJS::Profile::exclude): |
| 7726 | (KJS::Profile::restoreAll): |
| 7727 | |
| 7728 | 2008-06-05 Geoffrey Garen <ggaren@apple.com> |
| 7729 | |
| 7730 | Reviewed by Stephanie Lewis. |
| 7731 | |
| 7732 | Added the -fno-move-loop-invariants flag to the pcre_exec.cpp build, to |
| 7733 | tell GCC not to perform loop invariant motion, since GCC's loop |
| 7734 | invariant motion doesn't do very well with computed goto code. |
| 7735 | |
| 7736 | SunSpider reports no change. |
| 7737 | |
| 7738 | 2008-06-05 Geoffrey Garen <ggaren@apple.com> |
| 7739 | |
| 7740 | Reviewed by Stephanie Lewis. |
| 7741 | |
| 7742 | Added the -fno-tree-pre flag to the Machine.cpp build, to tell GCC not |
| 7743 | to perform Partial Redundancy Elimination (PRE) on trees in Machine.cpp, |
| 7744 | since GCC's PRE doesn't do very well with computed goto code. |
| 7745 | |
| 7746 | SunSpider reports a .7% speedup. |
| 7747 | |
| 7748 | 2008-06-05 Geoffrey Garen <ggaren@apple.com> |
| 7749 | |
| 7750 | Reviewed by Stephanie Lewis (or maybe the other way around). |
| 7751 | |
| 7752 | Minor change to PCRE to help out certain compilers. |
| 7753 | |
| 7754 | SunSpider reports no change, maybe a small speedup. |
| 7755 | |
| 7756 | * pcre/pcre_exec.cpp: |
| 7757 | (match): Use instructionPtr++ a little less, to avoid confusing the |
| 7758 | optimizer. |
| 7759 | |
| 7760 | 2008-06-05 Alexey Proskuryakov <ap@webkit.org> |
| 7761 | |
| 7762 | Re-landing an independent part of a previously rolled out threading patch. |
| 7763 | |
| 7764 | * wtf/ThreadSpecific.h: Make sure to initialize POD thread-specific varaibles, too |
| 7765 | (replaced "new T" with "new T()"). |
| 7766 | |
| 7767 | 2008-06-05 Maciej Stachowiak <mjs@apple.com> |
| 7768 | |
| 7769 | Reviewed by Hyatt. |
| 7770 | |
| 7771 | - force inlining of a template function that only has one call site per specialization |
| 7772 | 1.3% speedup on SunSpider |
| 7773 | |
| 7774 | * kjs/collector.cpp: |
| 7775 | (KJS::Collector::heapAllocate): This template function is only |
| 7776 | called from allocate() and allocateNumber() (once per |
| 7777 | specialization) and the extra call overhead for GC allocation |
| 7778 | shows up, so force inlining. |
| 7779 | |
| 7780 | 2008-06-05 Maciej Stachowiak <mjs@apple.com> |
| 7781 | |
| 7782 | Reviewed by Alexey and Oliver. |
| 7783 | |
| 7784 | - remove profiler fetch hack |
| 7785 | I measure an 0.5% progression from this, others show a wash. It seems not needed any more. |
| 7786 | |
| 7787 | * VM/Machine.cpp: |
| 7788 | (KJS::Machine::privateExecute): |
| 7789 | |
| 7790 | 2008-06-05 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7791 | |
| 7792 | Reviewed by Maciej. |
| 7793 | |
| 7794 | Bug 19400: subscript operator does not protect base when necessary |
| 7795 | <https://bugs.webkit.org/show_bug.cgi?id=19400> |
| 7796 | |
| 7797 | Use a temporary for the base in BracketAccessorNode if the subscript |
| 7798 | might possibly modify it. |
| 7799 | |
| 7800 | * kjs/grammar.y: |
| 7801 | * kjs/nodes.cpp: |
| 7802 | (KJS::BracketAccessorNode::emitCode): |
| 7803 | * kjs/nodes.h: |
| 7804 | (KJS::BracketAccessorNode::): |
| 7805 | |
| 7806 | 2008-06-04 Sam Weinig <sam@webkit.org> |
| 7807 | |
| 7808 | Reviewed by Maciej Stachowiak. |
| 7809 | |
| 7810 | Big cleanup of formatting and whitespace. |
| 7811 | |
| 7812 | 2008-06-04 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7813 | |
| 7814 | Reviewed by Oliver. |
| 7815 | |
| 7816 | Add an option to dump statistics on executed instructions. |
| 7817 | |
| 7818 | * VM/Machine.cpp: |
| 7819 | (KJS::Machine::privateExecute): |
| 7820 | * VM/Opcode.cpp: |
| 7821 | (KJS::OpcodeStats::~OpcodeStats): |
| 7822 | (KJS::OpcodeStats::recordInstruction): |
| 7823 | * VM/Opcode.h: |
| 7824 | |
| 7825 | 2008-06-04 Kevin McCullough <kmccullough@apple.com> |
| 7826 | |
| 7827 | Reviewed by Geoff. |
| 7828 | |
| 7829 | <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the |
| 7830 | profiler. |
| 7831 | - This patch removes the use of recursion for the sort functions. |
| 7832 | |
| 7833 | * JavaScriptCore.exp: Change the signatures of the functions being |
| 7834 | exported. |
| 7835 | * profiler/Profile.cpp: |
| 7836 | (KJS::Profile::sort): This generic function will accept any of the |
| 7837 | static sort functions and apply them to the whole tree. |
| 7838 | * profiler/Profile.h: All of the sorting functions now call the new |
| 7839 | sort() function. |
| 7840 | (KJS::Profile::sortTotalTimeDescending): |
| 7841 | (KJS::Profile::sortTotalTimeAscending): |
| 7842 | (KJS::Profile::sortSelfTimeDescending): |
| 7843 | (KJS::Profile::sortSelfTimeAscending): |
| 7844 | (KJS::Profile::sortCallsDescending): |
| 7845 | (KJS::Profile::sortCallsAscending): |
| 7846 | (KJS::Profile::sortFunctionNameDescending): |
| 7847 | (KJS::Profile::sortFunctionNameAscending): |
| 7848 | * profiler/ProfileNode.cpp: |
| 7849 | (KJS::ProfileNode::ProfileNode): m_head used to point to the head node |
| 7850 | if this was the head node. It now points to null to make iteration easy |
| 7851 | (KJS::ProfileNode::willExecute): Now must check if m_head is null, this |
| 7852 | check used to happend in the constructor. |
| 7853 | (KJS::ProfileNode::stopProfiling): Again the check is slightly different |
| 7854 | to determine if this is the head. |
| 7855 | (KJS::ProfileNode::traverseNextNode): This function returns the next |
| 7856 | node in post order. |
| 7857 | (KJS::ProfileNode::sort): This generic function will sort according to |
| 7858 | the comparator passed in, then reset the children pointers to macth the |
| 7859 | new order. |
| 7860 | * profiler/ProfileNode.h: The sorting function were removed from the |
| 7861 | definition file and instead use the new generic sort() function |
| 7862 | (KJS::ProfileNode::totalPercent): because the head can now be empty we |
| 7863 | need to check here too for the head node. |
| 7864 | (KJS::ProfileNode::selfPercent): Ditto |
| 7865 | (KJS::ProfileNode::firstChild): This function is necessary for the |
| 7866 | iterative algorithm in Profile.cpp. |
| 7867 | (KJS::ProfileNode::sortTotalTimeDescending): |
| 7868 | (KJS::ProfileNode::sortTotalTimeAscending): |
| 7869 | (KJS::ProfileNode::sortSelfTimeDescending): |
| 7870 | (KJS::ProfileNode::sortSelfTimeAscending): |
| 7871 | (KJS::ProfileNode::sortCallsDescending): |
| 7872 | (KJS::ProfileNode::sortCallsAscending): |
| 7873 | (KJS::ProfileNode::sortFunctionNameDescending): |
| 7874 | (KJS::ProfileNode::sortFunctionNameAscending): |
| 7875 | (KJS::ProfileNode::childrenBegin): |
| 7876 | (KJS::ProfileNode::childrenEnd): |
| 7877 | (KJS::ProfileNode::totalTimeDescendingComparator): |
| 7878 | (KJS::ProfileNode::totalTimeAscendingComparator): |
| 7879 | (KJS::ProfileNode::selfTimeDescendingComparator): |
| 7880 | (KJS::ProfileNode::selfTimeAscendingComparator): |
| 7881 | (KJS::ProfileNode::callsDescendingComparator): |
| 7882 | (KJS::ProfileNode::callsAscendingComparator): |
| 7883 | (KJS::ProfileNode::functionNameDescendingComparator): |
| 7884 | (KJS::ProfileNode::functionNameAscendingComparator): |
| 7885 | |
| 7886 | 2008-06-04 Alexey Proskuryakov <ap@webkit.org> |
| 7887 | |
| 7888 | Reviewed by Darin. |
| 7889 | |
| 7890 | Fix JSClassCreate to work with old JSCore API threading model. |
| 7891 | |
| 7892 | No change on SunSpider. |
| 7893 | |
| 7894 | * API/JSClassRef.cpp: (OpaqueJSClass::OpaqueJSClass): Since JSClass is constructed without |
| 7895 | a context, there is no way for it to create Identifiers. |
| 7896 | Also, added initializeThreading(), just for good measure. |
| 7897 | |
| 7898 | * API/JSCallbackObjectFunctions.h: (KJS::::getPropertyNames): Make an Identifier out of the |
| 7899 | string here, because propertyNames.add() needs that. |
| 7900 | |
| 7901 | * kjs/identifier.cpp: |
| 7902 | * kjs/identifier.h: |
| 7903 | (KJS::Identifier::equal): |
| 7904 | * kjs/ustring.cpp: |
| 7905 | (KJS::equal): |
| 7906 | Moved equal() from identifier.h to ustring.h, because it's not really about Identifiers, |
| 7907 | and to make it possible to use it from StrHash. |
| 7908 | Include StrHash.h from ustring.h to avoid having the behavior depend on headers that happen |
| 7909 | to be included. |
| 7910 | |
| 7911 | * wtf/StrHash.h: Removed. |
| 7912 | * kjs/ustring.h: Made RefPtr<UString::Rep> use the same default hash as UString::Rep* (it |
| 7913 | used to default to pointer equality). Moved the whole StrHash header into ustring.h. |
| 7914 | |
| 7915 | * JavaScriptCore.exp: Export equal() for WebCore use (this StrHash is used in c_class.cpp, |
| 7916 | jni_class.cpp, and npruntime.cpp). |
| 7917 | |
| 7918 | 2008-06-04 Alexey Proskuryakov <ap@webkit.org> |
| 7919 | |
| 7920 | Rubber-stamped by Darin. |
| 7921 | |
| 7922 | Fix spacing in collector.{h,cpp}. |
| 7923 | |
| 7924 | * kjs/collector.cpp: |
| 7925 | * kjs/collector.h: |
| 7926 | |
| 7927 | 2008-06-03 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 7928 | |
| 7929 | Reviewed by Maciej. |
| 7930 | |
| 7931 | Build fix. The cleanup in r34355 missed a method. |
| 7932 | |
| 7933 | * kjs/nodes.cpp: |
| 7934 | * kjs/nodes.h: |
| 7935 | |
| 7936 | 2008-06-03 Darin Adler <darin@apple.com> |
| 7937 | |
| 7938 | Reviewed by Geoff. |
| 7939 | |
| 7940 | - https://bugs.webkit.org/show_bug.cgi?id=19269 |
| 7941 | speed up SunSpider by eliminating the toObject call for most get/put/delete |
| 7942 | |
| 7943 | Makes standalone SunSpider 1.025x as fast as before. |
| 7944 | |
| 7945 | The getOwnPropertySlot virtual function now takes care of the toObject call |
| 7946 | for get. Similarly, the put function (and later deleteProperty) does the |
| 7947 | same for those operations. To do this, the virtual functions were moved from |
| 7948 | the JSObject class to the JSCell class. Also, since the caller no longer knows |
| 7949 | the identity of the "original object", which is used by JavaScript-function |
| 7950 | based getters, changed the PropertySlot class so the original object is |
| 7951 | already stored in the slot when getOwnPropertySlot is called, if the caller |
| 7952 | intends to call getValue. |
| 7953 | |
| 7954 | This affected the old interpreter code enough that the easiest thing for me |
| 7955 | was to just delete it. While I am not certain the mysterious slowdown is not |
| 7956 | still occurring, the net change is definitely a significant speedup. |
| 7957 | |
| 7958 | * JavaScriptCore.exp: Updated. |
| 7959 | |
| 7960 | * VM/Machine.cpp: Moved the UNLIKELY macro into AlwaysInline.h. |
| 7961 | (KJS::resolve): Set up the originalObject in the PropertySlot before |
| 7962 | calling getPropertySlot. Also removed the originalObject argument from |
| 7963 | getValue. |
| 7964 | (KJS::resolve_skip): Ditto. |
| 7965 | (KJS::resolveBaseAndProperty): Ditto. |
| 7966 | (KJS::resolveBaseAndFunc): Ditto. |
| 7967 | (KJS::Machine::privateExecute): Removed the toObject calls from the get and |
| 7968 | put functions where possible, instead calling directly with JSValue and letting |
| 7969 | the JSValue and JSCell calls handle toObject. Same for toThisObject. |
| 7970 | |
| 7971 | * kjs/ExecState.h: Removed OldInterpreterExecState. |
| 7972 | |
| 7973 | * API/JSBase.cpp: Updated includes. |
| 7974 | |
| 7975 | * kjs/LocalStorageEntry.h: Removed contents. Later we can remove the file too. |
| 7976 | |
| 7977 | * kjs/array_instance.cpp: |
| 7978 | (KJS::ArrayInstance::lengthGetter): Removed originalObject argumet. |
| 7979 | (KJS::ArrayInstance::inlineGetOwnPropertySlot): Don't pass a base value to |
| 7980 | setValueSlot. Also use UNLIKELY around the "getting elements past the end of |
| 7981 | the array" code path; less common than successfully getting an element. |
| 7982 | |
| 7983 | * kjs/array_object.cpp: |
| 7984 | (KJS::getProperty): Initialize the PropertySlot with the original object. |
| 7985 | Don't pass the original object to the get function. |
| 7986 | (KJS::arrayProtoFuncFilter): Ditto. |
| 7987 | (KJS::arrayProtoFuncMap): Ditto. |
| 7988 | (KJS::arrayProtoFuncEvery): Ditto. |
| 7989 | (KJS::arrayProtoFuncForEach): Ditto. |
| 7990 | (KJS::arrayProtoFuncSome): Ditto. |
| 7991 | |
| 7992 | * kjs/function_object.cpp: |
| 7993 | (KJS::FunctionObjectImp::construct): Removed an obsolete comment. |
| 7994 | |
| 7995 | * kjs/grammar.y: Eliminated support for some of the node types that were |
| 7996 | used to optimize executing from the syntax tree. |
| 7997 | |
| 7998 | * kjs/internal.cpp: |
| 7999 | (KJS::StringImp::toThisObject): Added. Same as toObject. |
| 8000 | (KJS::NumberImp::toThisObject): Ditto. |
| 8001 | (KJS::GetterSetterImp::getOwnPropertySlot): Added. Not reached. |
| 8002 | (KJS::GetterSetterImp::put): Ditto. |
| 8003 | (KJS::GetterSetterImp::toThisObject): Ditto. |
| 8004 | |
| 8005 | * kjs/internal.h: Added toThisObject to NumberImp for speed. |
| 8006 | |
| 8007 | * kjs/lexer.cpp: |
| 8008 | (KJS::Lexer::shift): Changed shift to just do a single character, to unroll |
| 8009 | the loop and especially to make the one character case faster. |
| 8010 | (KJS::Lexer::setCode): Call shift multiple times instead of passing a number. |
| 8011 | (KJS::Lexer::lex): Ditto. |
| 8012 | (KJS::Lexer::matchPunctuator): Ditto. Also removed unneeded elses after returns. |
| 8013 | (KJS::Lexer::scanRegExp): Ditto. |
| 8014 | * kjs/lexer.h: Removed the count argument from shift. |
| 8015 | |
| 8016 | * kjs/math_object.cpp: |
| 8017 | (KJS::mathProtoFuncPow): Call jsNaN instead of jsNumber(NaN). |
| 8018 | |
| 8019 | * kjs/nodes.cpp: Removed some of the things needed only for the pre-SquirrelFish |
| 8020 | execution model. |
| 8021 | (KJS::ForNode::emitCode): Handle cases where some expressions are missing by |
| 8022 | not emitting any code at all. The old way was to emit code for "true", but |
| 8023 | this is an unnecessary remnant of the old way of doing things. |
| 8024 | |
| 8025 | * kjs/nodes.h: Removed some of the things needed only for the pre-SquirrelFish |
| 8026 | execution model. |
| 8027 | |
| 8028 | * kjs/object.cpp: |
| 8029 | (KJS::JSObject::fillGetterPropertySlot): Changed to only pass in the getter |
| 8030 | function. The old code passed in a base, but it was never used when |
| 8031 | actually getting the property; the toThisObject call was pointless. Also |
| 8032 | changed to not pass a base for setUndefined. |
| 8033 | |
| 8034 | * kjs/object.h: Added the new JSCell operations to GetterSetterImp. |
| 8035 | Never called. |
| 8036 | (KJS::JSObject::get): Initialize the object in the PropertySlot and don't |
| 8037 | pass it in getValue. |
| 8038 | (KJS::JSObject::getOwnPropertySlotForWrite): Removed the base argument |
| 8039 | in calls to setValueSlot. |
| 8040 | (KJS::JSObject::getOwnPropertySlot): Ditto. |
| 8041 | (KJS::JSValue::get): Added. Here because it calls through to JSObject. |
| 8042 | A version of JSObject::get that also handles the other types of JSValue |
| 8043 | by creating the appropriate wrapper. Saves the virtual call to toObject. |
| 8044 | (KJS::JSValue::put): Ditto. |
| 8045 | (KJS::JSValue::deleteProperty): Ditto. |
| 8046 | |
| 8047 | * kjs/property_slot.cpp: |
| 8048 | (KJS::PropertySlot::undefinedGetter): Removed the originalObject argument. |
| 8049 | (KJS::PropertySlot::ungettableGetter): Ditto. |
| 8050 | (KJS::PropertySlot::functionGetter): Ditto. Use the value in the base |
| 8051 | as the "this" object, which will be set to the original object by the new |
| 8052 | PropertySlot initialization code. Also call toThisObject. The old code did |
| 8053 | not do this, but needed to so we can properly handle the activation object |
| 8054 | like the other similar code paths. |
| 8055 | |
| 8056 | * kjs/property_slot.h: |
| 8057 | (KJS::PropertySlot::PropertySlot): Added a constructor that takes a base |
| 8058 | object. In debug builds, set the base to 0 if you don't pass one. |
| 8059 | (KJS::PropertySlot::getValue): Don't take or pass the originalObject. |
| 8060 | (KJS::PropertySlot::setValueSlot): Don't take a base object, and clear the |
| 8061 | base object in debug builds. |
| 8062 | (KJS::PropertySlot::setGetterSlot): Ditto. |
| 8063 | (KJS::PropertySlot::setUndefined): Ditto. |
| 8064 | (KJS::PropertySlot::setUngettable): Ditto. |
| 8065 | (KJS::PropertySlot::slotBase): Assert that a base object is present. |
| 8066 | This will fire if someone actually calls the get function without having |
| 8067 | passed in a base object and the getter needs it. |
| 8068 | (KJS::PropertySlot::setBase): Added. Used by the code that implements |
| 8069 | toObject so it can supply the original object after the fact. |
| 8070 | (KJS::PropertySlot::clearBase): Added. Clears the base, but is debug-only |
| 8071 | code because it's an error to fetch the base if you don't have a guarantee |
| 8072 | it was set. |
| 8073 | |
| 8074 | * API/JSCallbackObject.h: |
| 8075 | * API/JSCallbackObjectFunctions.h: |
| 8076 | (KJS::JSCallbackObject::cachedValueGetter): |
| 8077 | (KJS::JSCallbackObject::staticValueGetter): |
| 8078 | (KJS::JSCallbackObject::staticFunctionGetter): |
| 8079 | (KJS::JSCallbackObject::callbackGetter): |
| 8080 | * kjs/JSActivation.cpp: |
| 8081 | (KJS::JSActivation::getOwnPropertySlot): |
| 8082 | (KJS::JSActivation::argumentsGetter): |
| 8083 | * kjs/JSActivation.h: |
| 8084 | * kjs/JSVariableObject.h: |
| 8085 | (KJS::JSVariableObject::symbolTableGet): |
| 8086 | * kjs/array_instance.h: |
| 8087 | * kjs/function.cpp: |
| 8088 | (KJS::FunctionImp::argumentsGetter): |
| 8089 | (KJS::FunctionImp::callerGetter): |
| 8090 | (KJS::FunctionImp::lengthGetter): |
| 8091 | (KJS::Arguments::mappedIndexGetter): |
| 8092 | * kjs/function.h: |
| 8093 | * kjs/lookup.h: |
| 8094 | (KJS::staticFunctionGetter): |
| 8095 | (KJS::staticValueGetter): |
| 8096 | * kjs/string_object.cpp: |
| 8097 | (KJS::StringInstance::lengthGetter): |
| 8098 | (KJS::StringInstance::indexGetter): |
| 8099 | (KJS::stringInstanceNumericPropertyGetter): |
| 8100 | * kjs/string_object.h: |
| 8101 | Removed originalObject arguments from getters. Don't pass base values to |
| 8102 | the various PropertySlot functions that no longer take them. |
| 8103 | |
| 8104 | * kjs/value.cpp: |
| 8105 | (KJS::JSCell::getOwnPropertySlot): Added. Calls toObject and then sets the slot. |
| 8106 | This function has to always return true, because the caller can't walk the prototype |
| 8107 | chain. Because of that, we do a getPropertySlot, not getOwnPropertySlot, which works |
| 8108 | for the caller. This is private, only called by getOwnPropertySlotInternal. |
| 8109 | (KJS::JSCell::put): Added. Calls toObject and then put. |
| 8110 | (KJS::JSCell::toThisObject): Added. Calls toObject. |
| 8111 | |
| 8112 | * kjs/value.h: Added get, put, and toThisObject to both JSValue |
| 8113 | and JSCell. These take care of the toObject operation without an additional virtual |
| 8114 | function call, and so make the common "already an object" case faster. |
| 8115 | |
| 8116 | * wtf/AlwaysInline.h: Moved the UNLIKELY macro here for now. Maybe we can find a |
| 8117 | better place later, or rename this header. |
| 8118 | |
| 8119 | 2008-06-03 Oliver Hunt <oliver@apple.com> |
| 8120 | |
| 8121 | Reviewed by Tim. |
| 8122 | |
| 8123 | Bug 12983: Web Inspector break on the debugger keyword |
| 8124 | <https://bugs.webkit.org/show_bug.cgi?id=12983> |
| 8125 | |
| 8126 | Added a DebuggerStatementNode to handle codegen, and added a new |
| 8127 | DidReachBreakPoint debug event (which will hopefully be useful |
| 8128 | if we ever move breakpoint management into JSC proper). Also |
| 8129 | added didReachBreakpoint to Debugger to allow us to actually respond |
| 8130 | to this event. |
| 8131 | |
| 8132 | * VM/CodeBlock.cpp: |
| 8133 | (KJS::debugHookName): |
| 8134 | * VM/Machine.cpp: |
| 8135 | (KJS::Machine::debug): |
| 8136 | * VM/Machine.h: |
| 8137 | * kjs/debugger.h: |
| 8138 | * kjs/grammar.y: |
| 8139 | * kjs/nodes.cpp: |
| 8140 | (KJS::DebuggerStatementNode::emitCode): |
| 8141 | (KJS::DebuggerStatementNode::execute): |
| 8142 | * kjs/nodes.h: |
| 8143 | (KJS::DebuggerStatementNode::): |
| 8144 | * kjs/nodes2string.cpp: |
| 8145 | (KJS::DebuggerStatementNode::streamTo): |
| 8146 | |
| 8147 | 2008-06-03 Maciej Stachowiak <mjs@apple.com> |
| 8148 | |
| 8149 | Reviewed by Oliver. |
| 8150 | |
| 8151 | - document remaining opcodes. |
| 8152 | |
| 8153 | * VM/Machine.cpp: |
| 8154 | (KJS::Machine::privateExecute): Document call, call_eval, |
| 8155 | construct, ret and end opcodes. |
| 8156 | |
| 8157 | 2008-06-03 Maciej Stachowiak <mjs@apple.com> |
| 8158 | |
| 8159 | Reviewed by Oliver. |
| 8160 | |
| 8161 | * VM/Machine.cpp: |
| 8162 | (KJS::Machine::privateExecute): Document throw and catch opcodes. |
| 8163 | |
| 8164 | 2008-06-02 Geoffrey Garen <ggaren@apple.com> |
| 8165 | |
| 8166 | Reviewed by Alexey Proskuryakov. |
| 8167 | |
| 8168 | Removed JSObject::call, since it just called JSObject::callAsFunction. |
| 8169 | |
| 8170 | SunSpider reports no change. |
| 8171 | |
| 8172 | 2008-06-02 Geoffrey Garen <ggaren@apple.com> |
| 8173 | |
| 8174 | Reviewed by Darin Adler. |
| 8175 | |
| 8176 | A little cleanup in the CodeGenerator. |
| 8177 | |
| 8178 | * VM/CodeGenerator.cpp: A few changes here. |
| 8179 | |
| 8180 | (1) Removed remaining cases of the old hack of putting "this" into the |
| 8181 | symbol table; replaced with explicit tracking of m_thisRegister. |
| 8182 | |
| 8183 | (2) Made m_thisRegister behave the same for function, eval, and program |
| 8184 | code, removing the static programCodeThis() function. |
| 8185 | |
| 8186 | (3) Added a feature to nix a ScopeNode's declaration stacks when done |
| 8187 | compiling, to save memory. |
| 8188 | |
| 8189 | (4) Removed code that copied eval declarations into special vectors: we |
| 8190 | just use the originals in the ScopeNode now. |
| 8191 | |
| 8192 | * VM/CodeGenerator.h: Removed unneded parameters from the CodeGenerator |
| 8193 | constructor: we just use get that data from the ScopeNode now. |
| 8194 | |
| 8195 | * VM/Machine.cpp: |
| 8196 | (KJS::Machine::execute): When executing an eval node, don't iterate a |
| 8197 | special copy of its declarations; iterate the originals, instead. |
| 8198 | |
| 8199 | * kjs/nodes.cpp: Moved responsibility for knowing what AST data to throw |
| 8200 | away into the CodeGenerator. Nodes no longer call shrinkCapacity on |
| 8201 | their data directly. |
| 8202 | |
| 8203 | * kjs/nodes.h: Changed FunctionStack to ref its contents, so declaration |
| 8204 | data stays around even after we've thrown away the AST, unless we explicitly |
| 8205 | throw away the declaration data, too. This is useful for eval code, which |
| 8206 | needs to reference its declaration data at execution time. (Soon, it will |
| 8207 | be useful for program code, too, since program code should do the same.) |
| 8208 | |
| 8209 | 2008-06-02 Adam Roben <aroben@apple.com> |
| 8210 | |
| 8211 | Build fix for non-AllInOne builds |
| 8212 | |
| 8213 | * kjs/array_object.cpp: Added a missing #include. |
| 8214 | |
| 8215 | 2008-06-02 Kevin McCullough <kmccullough@apple.com> |
| 8216 | |
| 8217 | Took out accidental confilct lines I checked in. |
| 8218 | |
| 8219 | * ChangeLog: |
| 8220 | |
| 8221 | 2008-06-02 Kevin McCullough <kmccullough@apple.com> |
| 8222 | |
| 8223 | Reviewed by Darin. |
| 8224 | |
| 8225 | <rdar://problem/5969992> JSProfiler: Remove the recursion limit in the |
| 8226 | profiler |
| 8227 | Implement Next Sibling pointers as groundwork for removing the recursion |
| 8228 | limit in the profiler. |
| 8229 | |
| 8230 | * profiler/ProfileNode.cpp: Also I renamed parentNode and headNode since |
| 8231 | 'node' is redundant. |
| 8232 | (KJS::ProfileNode::ProfileNode): Initialize the nextSibling. |
| 8233 | (KJS::ProfileNode::willExecute): If there are already children then the |
| 8234 | new child needs to be the nextSibling of the last child. |
| 8235 | (KJS::ProfileNode::didExecute): |
| 8236 | (KJS::ProfileNode::addChild): Ditto. |
| 8237 | (KJS::ProfileNode::stopProfiling): |
| 8238 | (KJS::ProfileNode::sortTotalTimeDescending): For all of the sorting |
| 8239 | algorithms once the children are sorted their nextSibling pointers need |
| 8240 | to be reset to reflect the new order. |
| 8241 | (KJS::ProfileNode::sortTotalTimeAscending): |
| 8242 | (KJS::ProfileNode::sortSelfTimeDescending): |
| 8243 | (KJS::ProfileNode::sortSelfTimeAscending): |
| 8244 | (KJS::ProfileNode::sortCallsDescending): |
| 8245 | (KJS::ProfileNode::sortCallsAscending): |
| 8246 | (KJS::ProfileNode::sortFunctionNameDescending): |
| 8247 | (KJS::ProfileNode::sortFunctionNameAscending): |
| 8248 | (KJS::ProfileNode::resetChildrensSiblings): This new function simply |
| 8249 | loops over all of the children and sets their nextSibling pointers to |
| 8250 | the next child in the Vector |
| 8251 | (KJS::ProfileNode::debugPrintData): |
| 8252 | * profiler/ProfileNode.h: |
| 8253 | (KJS::ProfileNode::parent): |
| 8254 | (KJS::ProfileNode::setParent): |
| 8255 | (KJS::ProfileNode::nextSibling): |
| 8256 | (KJS::ProfileNode::setNextSibling): |
| 8257 | (KJS::ProfileNode::totalPercent): |
| 8258 | (KJS::ProfileNode::selfPercent): |
| 8259 | |
| 8260 | 2008-06-02 Geoffrey Garen <ggaren@apple.com> |
| 8261 | |
| 8262 | Reviewed by Maciej Stachowiak. |
| 8263 | |
| 8264 | Removed the recursion limit from JSObject::call, since the VM does |
| 8265 | recursion checking now. |
| 8266 | |
| 8267 | This should allow us to remove JSObject::call entirely, netting a small |
| 8268 | speedup. |
| 8269 | |
| 8270 | * kjs/object.cpp: |
| 8271 | (KJS::JSObject::call): |
| 8272 | |
| 8273 | 2008-06-02 Geoffrey Garen <ggaren@apple.com> |
| 8274 | |
| 8275 | Reviewed by Adele Peterson. |
| 8276 | |
| 8277 | Added a specific affordance for avoiding stack overflow when converting |
| 8278 | recursive arrays to string, in preparation for removing generic stack |
| 8279 | overflow checking from JSObject::call. |
| 8280 | |
| 8281 | Tested by fast/js/toString-stack-overflow.html. |
| 8282 | |
| 8283 | 2008-06-02 Geoffrey Garen <ggaren@apple.com> |
| 8284 | |
| 8285 | Reviewed by Alice Liu. |
| 8286 | |
| 8287 | Refactored some hand-rolled code to call ScopeChain::globalObject instead. |
| 8288 | |
| 8289 | 2008-06-02 Geoffrey Garen <ggaren@apple.com> |
| 8290 | |
| 8291 | Reviewed by Darin Adler. |
| 8292 | |
| 8293 | Fixed ASSERT due to execution continuing after an exception is thrown |
| 8294 | during array sort. |
| 8295 | |
| 8296 | * kjs/array_instance.cpp: |
| 8297 | (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key): Don't call the |
| 8298 | custom comparator function if an exception has been thrown. Just return |
| 8299 | 1 for everything, so the sort completes quickly. (The result will be |
| 8300 | thrown away.) |
| 8301 | |
| 8302 | 2008-05-30 Timothy Hatcher <timothy@apple.com> |
| 8303 | |
| 8304 | Made the starting line number of scripts be 1-based throughout the engine. |
| 8305 | This cleans up script line numbers so they are all consistent now and fixes |
| 8306 | some cases where script execution was shown as off by one line in the debugger. |
| 8307 | |
| 8308 | No change in SunSpider. |
| 8309 | |
| 8310 | Reviewed by Oliver Hunt. |
| 8311 | |
| 8312 | * API/minidom.c: |
| 8313 | (main): Pass a line number of 1 instead of 0 to parser().parse(). |
| 8314 | * API/testapi.c: |
| 8315 | (main): Ditto. And removes a FIXME and changed an assertEqualsAsNumber |
| 8316 | to use 1 instead of 2 for the line number. |
| 8317 | * VM/Machine.cpp: |
| 8318 | (KJS::callEval): Pass a line number of 1 instead of 0. |
| 8319 | (KJS::Machine::debug): Use firstLine for WillExecuteProgram instead of |
| 8320 | lastLine. Use lastLine for DidExecuteProgram instead of firstLine. |
| 8321 | * kjs/DebuggerCallFrame.cpp: |
| 8322 | (KJS::DebuggerCallFrame::evaluate): Pass a line number of 1 instead of |
| 8323 | 0 to parser().parse(). |
| 8324 | * kjs/Parser.cpp: |
| 8325 | (KJS::Parser::parse): ASSERT startingLineNumber is greatter than 0. Change |
| 8326 | the startingLineNumber to be 1 if it was less than or equal to 0. This is needed |
| 8327 | for release builds to maintain compatibility with the JavaScriptCore API. |
| 8328 | * kjs/function.cpp: |
| 8329 | (KJS::globalFuncEval): Pass a line number of 1 instead of 0 to parser().parse(). |
| 8330 | * kjs/function_object.cpp: |
| 8331 | (FunctionObjectImp::construct): Pass a line number of 1 instead of 0 to construct(). |
| 8332 | * kjs/lexer.cpp: |
| 8333 | (Lexer::setCode): Made yylineno = startingLineNumber instead of adding 1. |
| 8334 | * kjs/testkjs.cpp: |
| 8335 | (functionRun): Pass a line number of 1 instead of 0 to Interpreter::evaluate(). |
| 8336 | (functionLoad): Ditto. |
| 8337 | (prettyPrintScript): Ditto. |
| 8338 | (runWithScripts): Ditto. |
| 8339 | * profiler/Profiler.cpp: |
| 8340 | (WebCore::createCallIdentifier): Removed a plus 1 of startingLineNumber. |
| 8341 | |
| 8342 | 2008-05-30 Alexey Proskuryakov <ap@webkit.org> |
| 8343 | |
| 8344 | Reviewed by Darin. |
| 8345 | |
| 8346 | https://bugs.webkit.org/show_bug.cgi?id=19180 |
| 8347 | speed up SunSpider by optimizing immediate number cases |
| 8348 | |
| 8349 | Also fixed a JavaScriptCore regression seen on PowerPC - we didn't clip left shift |
| 8350 | parameter to 0...31. |
| 8351 | |
| 8352 | 0.5% improvement on SunSpider overall, although a 8.5 regression on bitops-3bit-bits-in-byte. |
| 8353 | |
| 8354 | * VM/Machine.cpp: |
| 8355 | (KJS::Machine::privateExecute): |
| 8356 | |
| 8357 | * kjs/JSImmediate.h: |
| 8358 | (KJS::JSImmediate::toTruncatedUInt32): Added. Same as getTruncatedInt32, but casts the result |
| 8359 | to unsigned. |
| 8360 | |
| 8361 | 2008-05-30 Alexey Proskuryakov <ap@webkit.org> |
| 8362 | |
| 8363 | Reviewed by Oliver Hunt. |
| 8364 | |
| 8365 | https://bugs.webkit.org/show_bug.cgi?id=19180 |
| 8366 | speed up SunSpider by optimizing immediate number cases |
| 8367 | |
| 8368 | Also fixed two JavaScriptCore regressions seen on PowerPC - we didn't clip right shift |
| 8369 | parameter to 0...31. |
| 8370 | |
| 8371 | 1.6% improvement on SunSpider, without significant regressions on any tests. |
| 8372 | |
| 8373 | * VM/Machine.cpp: |
| 8374 | (KJS::Machine::privateExecute): |
| 8375 | Added fast paths for >>, ==, ===, !=, !==. Changed order of memory accesses in many |
| 8376 | cases, making them less dependent on gcc's ability to properly assign registers. With this, |
| 8377 | I could move exception checks back into slow code paths, and saw less randomness in general. |
| 8378 | |
| 8379 | * kjs/JSImmediate.h: |
| 8380 | (KJS::JSImmediate::rightShiftImmediateNumbers): |
| 8381 | Added. |
| 8382 | |
| 8383 | 2008-05-29 Maciej Stachowiak <mjs@apple.com> |
| 8384 | |
| 8385 | Reviewed by Oliver. |
| 8386 | |
| 8387 | - fixed <rdar://problem/5972943> REGRESSION(r33979): Flash clips do not play on cnn.com |
| 8388 | |
| 8389 | Finally blocks could clobber registers that had to remain live |
| 8390 | until they returned. This patch takes a conservative approach and |
| 8391 | makes sure that finally blocks do not reuse any registers that |
| 8392 | were previously allocated for the function. In the future this |
| 8393 | could probably be tightened up to be less profligate with the |
| 8394 | register allocation. |
| 8395 | |
| 8396 | * VM/CodeGenerator.cpp: |
| 8397 | (KJS::CodeGenerator::highestUsedRegister): |
| 8398 | * VM/CodeGenerator.h: |
| 8399 | * kjs/nodes.cpp: |
| 8400 | (KJS::TryNode::emitCode): |
| 8401 | |
| 8402 | 2008-05-29 Steve Falkenburg <sfalken@apple.com> |
| 8403 | |
| 8404 | Build fix. |
| 8405 | |
| 8406 | * kjs/array_instance.cpp: |
| 8407 | |
| 8408 | 2008-05-29 Alexey Proskuryakov <ap@webkit.org> |
| 8409 | |
| 8410 | Reviewed by Darin. |
| 8411 | |
| 8412 | https://bugs.webkit.org/show_bug.cgi?id=19294 |
| 8413 | <rdar://problem/5969062> A crash when iterating over a sparse array backwards. |
| 8414 | |
| 8415 | * kjs/array_instance.cpp: Turned sparseArrayCutoff into a macro, so that using max() on it |
| 8416 | doesn't cause a PIC branch. |
| 8417 | (KJS::ArrayInstance::increaseVectorLength): Added a comment about this function not |
| 8418 | preserving class invariants. |
| 8419 | (KJS::ArrayInstance::put): Update m_storage after reallocation. Move values that fit to |
| 8420 | the vector from the map in all code paths. |
| 8421 | |
| 8422 | 2008-05-29 Thiago Macieira <tjmaciei@trolltech.com> |
| 8423 | |
| 8424 | Reviewed by Simon. |
| 8425 | |
| 8426 | Fix compilation in Solaris with Sun CC |
| 8427 | |
| 8428 | Lots of WebKit code uses C99 functions that, strict as it |
| 8429 | is, the Solaris system doesn't provide in C++. So we must define them |
| 8430 | for both GCC and the Sun CC. |
| 8431 | |
| 8432 | * wtf/MathExtras.h: |
| 8433 | |
| 8434 | 2008-05-28 Oliver Hunt <oliver@apple.com> |
| 8435 | |
| 8436 | Reviewed by Anders. |
| 8437 | |
| 8438 | Fix codegen for assignment being used as a function. |
| 8439 | |
| 8440 | FunctionCallValueNode::emitCode failed to account for the |
| 8441 | potential of the function expression to allocate arbitrary |
| 8442 | registers. |
| 8443 | |
| 8444 | * kjs/nodes.cpp: |
| 8445 | (KJS::FunctionCallValueNode::emitCode): |
| 8446 | |
| 8447 | 2008-05-27 Geoffrey Garen <ggaren@apple.com> |
| 8448 | |
| 8449 | Reviewed by Tim Hatcher. |
| 8450 | |
| 8451 | Fixed https://bugs.webkit.org/show_bug.cgi?id=19183 |
| 8452 | REGRESSION (r33979): Crash in DebuggerCallFrame::functionName when |
| 8453 | clicking button in returnEvent-crash.html |
| 8454 | |
| 8455 | Added two new debugger hooks, willExecuteProgram and didExecuteProgram, |
| 8456 | along with code to generate them, code to invoke them when unwinding |
| 8457 | due to an exception, and code to dump them. |
| 8458 | |
| 8459 | SunSpider reports no change. |
| 8460 | |
| 8461 | * VM/CodeBlock.cpp: |
| 8462 | (KJS::debugHookName): I had to mark this function NEVER_INLINE to avoid |
| 8463 | a .4% performance regression. The mind boggles. |
| 8464 | |
| 8465 | 2008-05-28 Adam Roben <aroben@apple.com> |
| 8466 | |
| 8467 | Fix JavaScriptCore tests on OS X |
| 8468 | |
| 8469 | We were quoting the path to testkjs too late, after it had already |
| 8470 | been combined with spaces and other options. |
| 8471 | |
| 8472 | * tests/mozilla/jsDriver.pl: |
| 8473 | (top level): Move path quoting from here... |
| 8474 | (sub get_kjs_engine_command): ...to here. |
| 8475 | |
| 8476 | 2008-05-28 Anders Carlsson <andersca@apple.com> |
| 8477 | |
| 8478 | Reviewed by Oliver. |
| 8479 | |
| 8480 | <rdar://problem/5968071> "const f" crashes in JavaScriptCore |
| 8481 | |
| 8482 | Make sure to null check the initializer. |
| 8483 | |
| 8484 | * kjs/nodes.cpp: |
| 8485 | (KJS::ConstDeclNode::emitCodeSingle): |
| 8486 | |
| 8487 | 2008-05-28 Adam Roben <aroben@apple.com> |
| 8488 | |
| 8489 | Make run-javascriptcore-tests work with a space in the path to testkjs |
| 8490 | |
| 8491 | Reviewed by Alexey Proskuryakov. |
| 8492 | |
| 8493 | * tests/mozilla/jsDriver.pl: Quote the path to the engine so that |
| 8494 | spaces will be interpreted correctly. |
| 8495 | |
| 8496 | 2008-05-28 Alexey Proskuryakov <ap@webkit.org> |
| 8497 | |
| 8498 | Fixed a misguiding comment - my measurement for negative numbers only included cases |
| 8499 | where both operands were negative, which is not very interesting. |
| 8500 | |
| 8501 | * VM/Machine.cpp: |
| 8502 | |
| 8503 | 2008-05-28 Alexey Proskuryakov <ap@webkit.org> |
| 8504 | |
| 8505 | Reviewed by Maciej. |
| 8506 | |
| 8507 | Based on a patch by Oliver Hunt. |
| 8508 | |
| 8509 | https://bugs.webkit.org/show_bug.cgi?id=19180 |
| 8510 | speed up SunSpider by optimizing immediate number cases |
| 8511 | |
| 8512 | 1.4% speedup on SunSpider. |
| 8513 | |
| 8514 | * VM/Machine.cpp: |
| 8515 | (KJS::Machine::privateExecute): |
| 8516 | * kjs/JSImmediate.h: |
| 8517 | (KJS::JSImmediate::incImmediateNumber): |
| 8518 | (KJS::JSImmediate::decImmediateNumber): |
| 8519 | Added fast paths for ++ and --. |
| 8520 | |
| 8521 | (KJS::JSImmediate::canDoFastAdditiveOperations): Corrected a comment. |
| 8522 | |
| 8523 | 2008-05-28 Alexey Proskuryakov <ap@webkit.org> |
| 8524 | |
| 8525 | Reviewed by Darin. |
| 8526 | |
| 8527 | https://bugs.webkit.org/show_bug.cgi?id=19180 |
| 8528 | speed up SunSpider by optimizing immediate number cases |
| 8529 | |
| 8530 | 2% speedup overall, maximum 10% on controlflow-recursive and bitops-3bit-bits-in-byte, |
| 8531 | but a 4% regression on bitops-bits-in-byte and bitops-bitwise-and. |
| 8532 | |
| 8533 | * kjs/JSImmediate.h: |
| 8534 | (KJS::JSImmediate::canDoFastAdditiveOperations): |
| 8535 | (KJS::JSImmediate::addImmediateNumbers): |
| 8536 | (KJS::JSImmediate::subImmediateNumbers): |
| 8537 | Added fast cases that work with positive values less than 2^30. |
| 8538 | |
| 8539 | * VM/Machine.cpp: |
| 8540 | (KJS::Machine::privateExecute): Use the above operations. Also updated SunSpider frequencies |
| 8541 | with my results (looks like tag values have changed, not sure what caused the minor variation |
| 8542 | in actual frequencies). |
| 8543 | |
| 8544 | 2008-05-27 Adam Roben <aroben@apple.com> |
| 8545 | |
| 8546 | Windows build fix |
| 8547 | |
| 8548 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| 8549 | Remove code that appended Cygwin's /bin directory to PATH. |
| 8550 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: |
| 8551 | Prepend Cygwin's /bin directory to PATH. We prepend instead of append |
| 8552 | so that Cygwin's utilities will win out over Win32 versions of the |
| 8553 | same utilities (particularly perl). We do the prepend here instead of |
| 8554 | in the Makefile because nmake doesn't seem to like prepending to PATH |
| 8555 | inside the Makefile. This also matches the way WebCoreGenerated works. |
| 8556 | |
| 8557 | 2008-05-27 Adam Roben <aroben@apple.com> |
| 8558 | |
| 8559 | Roll out r34163 |
| 8560 | |
| 8561 | A better fix is on the way. |
| 8562 | |
| 8563 | * DerivedSources.make: |
| 8564 | * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: |
| 8565 | |
| 8566 | 2008-05-27 Adam Roben <aroben@apple.com> |
| 8567 | |
| 8568 | Windows build fix |
| 8569 | |
| 8570 | * DerivedSources.make: Don't generate the bytecode docs if |
| 8571 | OMIT_BYTECODE_DOCS is set to 1. |
| 8572 | * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Set |
| 8573 | OMIT_BYTECODE_DOCS for production builds. |
| 8574 | |
| 8575 | 2008-05-27 Anders Carlsson <andersca@apple.com> |
| 8576 | |
| 8577 | Reviewed by Geoff and Maciej. |
| 8578 | |
| 8579 | <rdar://problem/5806428> |
| 8580 | https://bugs.webkit.org/show_bug.cgi?id=17925 |
| 8581 | Crash in KJS::JSObject::put after setting this.__proto__ |
| 8582 | |
| 8583 | Set slotIsWriteable to false for __proto__, we want setting __proto__ to go through JSObject::put instead. |
| 8584 | |
| 8585 | * kjs/object.h: |
| 8586 | (KJS::JSObject::getOwnPropertySlotForWrite): |
| 8587 | |
| 8588 | 2008-05-27 Kevin Ollivier <kevino@theolliviers.com> |
| 8589 | |
| 8590 | wx build fixes to catch up with SquirrelFish, etc. |
| 8591 | |
| 8592 | * JavaScriptCoreSources.bkl: |
| 8593 | * jscore.bkl: |
| 8594 | * wtf/Platform.h: |
| 8595 | |
| 8596 | 2008-05-27 Darin Adler <darin@apple.com> |
| 8597 | |
| 8598 | Reviewed by Tim Hatcher. |
| 8599 | |
| 8600 | - https://bugs.webkit.org/show_bug.cgi?id=19180 |
| 8601 | speed up SunSpider by optimizing immediate number cases |
| 8602 | |
| 8603 | Add immediate number cases for the &, |, and ^ operators. |
| 8604 | Makes standalone SunSpider 1.010x faster. |
| 8605 | |
| 8606 | * VM/Machine.cpp: |
| 8607 | (KJS::Machine::privateExecute): Add areBothImmediateNumbers special cases |
| 8608 | for the &, |, and ^ operators. |
| 8609 | |
| 8610 | * kjs/JSImmediate.h: |
| 8611 | (KJS::JSImmediate::xorImmediateNumbers): Added. |
| 8612 | (KJS::JSImmediate::orImmediateNumbers): Added. |
| 8613 | |
| 8614 | 2008-05-26 Stephanie Lewis <slewis@apple.com> |
| 8615 | |
| 8616 | Windows build fix. |
| 8617 | |
| 8618 | * kjs/testkjs.cpp: |
| 8619 | |
| 8620 | 2008-05-26 Maciej Stachowiak <mjs@apple.com> |
| 8621 | |
| 8622 | Reviewed by Anders. |
| 8623 | |
| 8624 | - make addStaticGlobals protected instead of private so subclasses can use it |
| 8625 | |
| 8626 | * JavaScriptCore.exp: |
| 8627 | * kjs/JSGlobalObject.h: |
| 8628 | |
| 8629 | 2008-05-26 Geoffrey Garen <ggaren@apple.com> |
| 8630 | |
| 8631 | Reviewed by Darin Adler. |
| 8632 | |
| 8633 | Fixed <rdar://problem/5960859> After an eval of a non-string or a syntax |
| 8634 | error, all profile stack frames are incorrect |
| 8635 | |
| 8636 | SunSpider reports a .3% speedup, possibly because eval of a string is a |
| 8637 | little more efficient now. |
| 8638 | |
| 8639 | * VM/Machine.cpp: |
| 8640 | (KJS::callEval): Make sure to call didExecute when returning early. I |
| 8641 | simplified this function to remove one early return, making the job |
| 8642 | of adding special code to early returns easier. |
| 8643 | |
| 8644 | (KJS::Machine::execute): Use the new function ExecState when notifying |
| 8645 | the profiler. (This doesn't change behavior now, but it might prevent |
| 8646 | subtle errors in the future.) |
| 8647 | |
| 8648 | 2008-05-23 Tor Arne Vestbø <tavestbo@trolltech.com> |
| 8649 | |
| 8650 | Reviewed by Simon. |
| 8651 | |
| 8652 | Fixed toLower and toUpper implementations to allow being called |
| 8653 | with a null result pointer and resultLength, to determine the |
| 8654 | number of characters needed for the case conversion. |
| 8655 | |
| 8656 | * wtf/unicode/qt4/UnicodeQt4.h: |
| 8657 | (WTF::Unicode::toLower): |
| 8658 | (WTF::Unicode::toUpper): |
| 8659 | |
| 8660 | 2008-05-25 Alexey Proskuryakov <ap@webkit.org> |
| 8661 | |
| 8662 | Fixing a typo in the previous commit made as a last minute change. |
| 8663 | |
| 8664 | * kjs/regexp_object.cpp: |
| 8665 | |
| 8666 | 2008-05-24 Alexey Proskuryakov <ap@webkit.org> |
| 8667 | |
| 8668 | Reviewed by Darin. |
| 8669 | |
| 8670 | Changed regular expression matching result array to be lazily filled, because many callers |
| 8671 | only care about it being non-null. |
| 8672 | |
| 8673 | 2% improvement on Acid3 test 26. |
| 8674 | |
| 8675 | * kjs/array_instance.cpp: Added a void* member to ArrayStorage for ArrayInstance subclasses |
| 8676 | to use. |
| 8677 | * kjs/array_instance.h: |
| 8678 | (KJS::ArrayInstance::lazyCreationData): |
| 8679 | (KJS::ArrayInstance::setLazyCreationData): |
| 8680 | Added methods to access it from subclasses. |
| 8681 | |
| 8682 | * kjs/regexp_object.cpp: |
| 8683 | (KJS::RegExpMatchesArray::RegExpMatchesArray): |
| 8684 | (KJS::RegExpMatchesArray::getOwnPropertySlot): |
| 8685 | (KJS::RegExpMatchesArray::put): |
| 8686 | (KJS::RegExpMatchesArray::deleteProperty): |
| 8687 | (KJS::RegExpMatchesArray::getPropertyNames): |
| 8688 | (KJS::RegExpMatchesArray::fillArrayInstanceIfNeeded): |
| 8689 | (KJS::RegExpMatchesArray::~RegExpMatchesArray): |
| 8690 | (KJS::RegExpObjectImp::arrayOfMatches): |
| 8691 | RegExpMatchesArray is a subclass of ArrayInstance that isn't filled until |
| 8692 | accessed for the first time. |
| 8693 | |
| 8694 | 2008-05-24 Alp Toker <alp@nuanti.com> |
| 8695 | |
| 8696 | Win32/gcc build fix. Remove MSVC assumption. |
| 8697 | |
| 8698 | * wtf/TCSpinLock.h: |
| 8699 | (TCMalloc_SlowLock): |
| 8700 | |
| 8701 | 2008-05-24 Oleg Finkelshteyn <olegfink@gmail.com> |
| 8702 | |
| 8703 | Rubber-stamped, tweaked and landed by Alexey. |
| 8704 | |
| 8705 | Build fix for gcc 4.3. |
| 8706 | |
| 8707 | * JavaScriptCore/kjs/testkjs.cpp: |
| 8708 | * JavaScriptCore/VM/CodeBlock.cpp: |
| 8709 | Add missing standard includes. |
| 8710 | |
| 8711 | 2008-05-23 Anders Carlsson <andersca@apple.com> |
| 8712 | |
| 8713 | Reviewed by Geoff. |
| 8714 | |
| 8715 | <rdar://problem/5959886> REGRESSION: Assertion failure in JSImmediate::toString when loading GMail (19217) |
| 8716 | |
| 8717 | Change List to store a JSValue*** pointer + an offset instead of a JSValue** pointer to protect against the case where |
| 8718 | a register file changes while a list object points to its buffer. |
| 8719 | |
| 8720 | * VM/Machine.cpp: |
| 8721 | (KJS::Machine::privateExecute): |
| 8722 | * kjs/JSActivation.cpp: |
| 8723 | (KJS::JSActivation::createArgumentsObject): |
| 8724 | * kjs/list.cpp: |
| 8725 | (KJS::List::getSlice): |
| 8726 | * kjs/list.h: |
| 8727 | (KJS::List::List): |
| 8728 | (KJS::List::at): |
| 8729 | (KJS::List::append): |
| 8730 | (KJS::List::begin): |
| 8731 | (KJS::List::end): |
| 8732 | (KJS::List::buffer): |
| 8733 | |
| 8734 | 2008-05-23 Kevin McCullough <kmccullough@apple.com> |
| 8735 | |
| 8736 | Reviewed by Sam. |
| 8737 | |
| 8738 | <rdar://problem/5960012> JSProfiler: Stack overflow if recursion is |
| 8739 | too deep. |
| 8740 | -Use a simple depth limit to restrict too deep of recursion. |
| 8741 | |
| 8742 | * profiler/Profile.cpp: |
| 8743 | (KJS::Profile::willExecute): |
| 8744 | (KJS::Profile::didExecute): |
| 8745 | * profiler/Profile.h: |
| 8746 | |
| 8747 | 2008-05-23 Geoffrey Garen <ggaren@apple.com> |
| 8748 | |
| 8749 | Rolling back in r34085, with performance resolved. |
| 8750 | |
| 8751 | Apparently, passing the eval function to callEval gave GCC a hernia. |
| 8752 | |
| 8753 | Reviewed by Darin Adler, Kevin McCullough, and Oliver Hunt. |
| 8754 | |
| 8755 | Fixed <rdar://problem/5959447> Crashes and incorrect reporting in the |
| 8756 | JavaScript profiler |
| 8757 | |
| 8758 | * VM/Machine.cpp: |
| 8759 | (KJS::Machine::unwindCallFrame): Fixed incorrect reporting / a crash |
| 8760 | when unwinding from inside eval and/or program code: detect the |
| 8761 | difference, and do the right thing. Also, be sure to notify the profiler |
| 8762 | *before* deref'ing the scope chain, since the profiler uses the scope chain. |
| 8763 | |
| 8764 | (KJS::Machine::execute): Fixed incorrect reporting / crash when calling |
| 8765 | a JS function re-entrently: Machine::execute(FunctionBodyNode*...) |
| 8766 | should not invoke the didExecute hook, because op_ret already does that. |
| 8767 | Also, use the new function's ExecState when calling out to the profiler. |
| 8768 | (Not important now, but could have become a subtle bug later.) |
| 8769 | |
| 8770 | (KJS::Machine::privateExecute): Fixed a hard to reproduce crash when |
| 8771 | profiling JS functions: notify the profiler *before* deref'ing the scope |
| 8772 | chain, since the profiler uses the scope chain. |
| 8773 | |
| 8774 | * kjs/object.cpp: |
| 8775 | (KJS::JSObject::call): Removed these hooks, because they are now unnecessary. |
| 8776 | |
| 8777 | * profiler/Profile.cpp: Added a comment to explain a subtlety that only |
| 8778 | Kevin and I understood previously. (Now, the whole world can understand!) |
| 8779 | |
| 8780 | * profiler/Profiler.cpp: |
| 8781 | (KJS::shouldExcludeFunction): Don't exclude .call and .apply. That was |
| 8782 | a hack to fix bugs that no longer exist. |
| 8783 | |
| 8784 | Finally, sped things up a little bit by changing the "Is the profiler |
| 8785 | running?" check into an ASSERT, since we only call into the profiler |
| 8786 | when it's running: |
| 8787 | |
| 8788 | (KJS::Profiler::willExecute): |
| 8789 | (KJS::Profiler::didExecute): |
| 8790 | |
| 8791 | 2008-05-23 Geoffrey Garen <ggaren@apple.com> |
| 8792 | |
| 8793 | Reviewed by Oliver Hunt. |
| 8794 | |
| 8795 | - fixed <rdar://problem/5957662> REGRESSION(r33943-r33980): Can't send email , attach file or save as draft from hotmail.com |
| 8796 | |
| 8797 | SunSpider reports no change. |
| 8798 | |
| 8799 | This is a reworking of r34073, which I rolled out because it caused |
| 8800 | lots of crashes. |
| 8801 | |
| 8802 | * VM/CodeGenerator.cpp: |
| 8803 | (KJS::CodeGenerator::CodeGenerator): Use removeDirect to nix old |
| 8804 | properties whose names collide with new functions. (Don't use putWithAttributes |
| 8805 | because that tries to write to the register file, which hasn't grown to |
| 8806 | fit this program yet.) |
| 8807 | |
| 8808 | 2008-05-23 Darin Adler <darin@apple.com> |
| 8809 | |
| 8810 | Reviewed by Mark Rowe. |
| 8811 | |
| 8812 | As allocateNumber is used via jsNumberCell outside of JavaScriptCore, |
| 8813 | we need to provide a non-inlined version of it to avoid creating a |
| 8814 | weak external symbol. |
| 8815 | |
| 8816 | * JavaScriptCore.exp: |
| 8817 | * kjs/AllInOneFile.cpp: |
| 8818 | * kjs/collector.cpp: |
| 8819 | (KJS::Collector::allocate): |
| 8820 | (KJS::Collector::allocateNumber): |
| 8821 | * kjs/collector.h: |
| 8822 | (KJS::Collector::allocate): |
| 8823 | (KJS::Collector::inlineAllocateNumber): |
| 8824 | * kjs/value.h: |
| 8825 | (KJS::NumberImp::operator new): |
| 8826 | |
| 8827 | 2008-05-23 Geoffrey Garen <ggaren@apple.com> |
| 8828 | |
| 8829 | Rolled out r34073 because it caused lots of layout test crashes. |
| 8830 | |
| 8831 | 2008-05-23 Geoffrey Garen <ggaren@apple.com> |
| 8832 | |
| 8833 | Rolled out r34085 because it measured as a 7.6% performance regression. |
| 8834 | |
| 8835 | 2008-05-23 Adam Roben <aroben@apple.com> |
| 8836 | |
| 8837 | Windows build fix |
| 8838 | |
| 8839 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add the |
| 8840 | profiler directory to the include path. |
| 8841 | |
| 8842 | 2008-05-23 Oliver Hunt <oliver@apple.com> |
| 8843 | |
| 8844 | Reviewed by Anders. |
| 8845 | |
| 8846 | SQUIRRELFISH: JavaScript error messages are missing informative text |
| 8847 | |
| 8848 | Partial fix. |
| 8849 | Tidy up error messages, makes a couple of them provide slightly more info. |
| 8850 | Inexplicably leads to a 1% SunSpider Progression. |
| 8851 | |
| 8852 | * VM/ExceptionHelpers.cpp: |
| 8853 | (KJS::createError): |
| 8854 | (KJS::createInvalidParamError): |
| 8855 | (KJS::createNotAConstructorError): |
| 8856 | (KJS::createNotAFunctionError): |
| 8857 | * VM/ExceptionHelpers.h: |
| 8858 | * VM/Machine.cpp: |
| 8859 | (KJS::isNotObject): |
| 8860 | |
| 8861 | 2008-05-23 Oliver Hunt <oliver@apple.com> |
| 8862 | |
| 8863 | Reviewed by Tim H. |
| 8864 | |
| 8865 | Fix call stack reported by profiler when entering event handlers. |
| 8866 | |
| 8867 | JSObject::call was arbitrarily notifying the profiler when it was |
| 8868 | called, even if it was JS code, which notifies the profile on entry |
| 8869 | in any case. |
| 8870 | |
| 8871 | * kjs/object.cpp: |
| 8872 | (KJS::JSObject::call): |
| 8873 | |
| 8874 | 2008-05-16 Alp Toker <alp@nuanti.com> |
| 8875 | |
| 8876 | Build fix for gcc 3. Default constructor required in ExecState, |
| 8877 | used by OldInterpreterExecState. |
| 8878 | |
| 8879 | * kjs/ExecState.h: |
| 8880 | (KJS::ExecState::ExecState): |
| 8881 | |
| 8882 | 2008-05-23 Mark Rowe <mrowe@apple.com> |
| 8883 | |
| 8884 | Reviewed by Oliver Hunt. |
| 8885 | |
| 8886 | Fix <rdar://problem/5954997> global-recursion-on-full-stack.html crashes under guardmalloc. |
| 8887 | |
| 8888 | Growing the register file with uncheckedGrow from within Machine::execute is not safe as the |
| 8889 | register file may be too close to its maximum size to grow successfully. By using grow, |
| 8890 | checking the result and throwing a stack overflow error we can avoid crashing. |
| 8891 | |
| 8892 | * VM/Machine.cpp: |
| 8893 | (KJS::Machine::execute): |
| 8894 | * VM/RegisterFile.h: Remove the now-unused uncheckedGrow. |
| 8895 | |
| 8896 | 2008-05-23 Oliver Hunt <oliver@apple.com> |
| 8897 | |
| 8898 | RS=Kevin McCullough |
| 8899 | |
| 8900 | Remove JAVASCRIPT_PROFILER define |
| 8901 | |
| 8902 | * VM/Machine.cpp: |
| 8903 | (KJS::callEval): |
| 8904 | (KJS::Machine::unwindCallFrame): |
| 8905 | (KJS::Machine::execute): |
| 8906 | (KJS::Machine::privateExecute): |
| 8907 | * kjs/config.h: |
| 8908 | * kjs/object.cpp: |
| 8909 | (KJS::JSObject::call): |
| 8910 | |
| 8911 | 2008-05-23 Oliver Hunt <oliver@apple.com> |
| 8912 | |
| 8913 | <rdar://problem/5951561> Turn on JavaScript Profiler |
| 8914 | |
| 8915 | Reviewed by Kevin McCullough. |
| 8916 | |
| 8917 | Flipped the switch on the profiler, rearranged how we |
| 8918 | signal the the profiler is active so that calls aren't |
| 8919 | needed in the general case. |
| 8920 | |
| 8921 | Also fixed the entry point for Machine::execute(FunctionBodyNode..) |
| 8922 | to correctly indicate function exit. |
| 8923 | |
| 8924 | Results in a 0.7-1.0% regression in SunSpider :-( |
| 8925 | |
| 8926 | * VM/Machine.cpp: |
| 8927 | (KJS::callEval): |
| 8928 | (KJS::Machine::unwindCallFrame): |
| 8929 | (KJS::Machine::execute): |
| 8930 | (KJS::Machine::privateExecute): |
| 8931 | * kjs/config.h: |
| 8932 | * profiler/Profiler.cpp: |
| 8933 | (KJS::Profiler::profiler): |
| 8934 | (KJS::Profiler::startProfiling): |
| 8935 | (KJS::Profiler::stopProfiling): |
| 8936 | * profiler/Profiler.h: |
| 8937 | (KJS::Profiler::enabledProfilerReference): |
| 8938 | |
| 8939 | 2008-05-23 Simon Hausmann <hausmann@webkit.org> |
| 8940 | |
| 8941 | Fix the Qt build by adding profiler/ to the include search path. |
| 8942 | |
| 8943 | * JavaScriptCore.pri: |
| 8944 | |
| 8945 | 2008-05-22 Kevin McCullough <kmccullough@apple.com> |
| 8946 | |
| 8947 | Reviewed by Adam. |
| 8948 | |
| 8949 | Fix a bug in the profiler where time in the current function is given to |
| 8950 | (idle). |
| 8951 | |
| 8952 | * profiler/Profile.cpp: |
| 8953 | (KJS::Profile::didExecute): Set the start time and then call didExecute |
| 8954 | to calculate the time spent in this function. |
| 8955 | * profiler/ProfileNode.cpp: Remove confusing calculations that are no |
| 8956 | longer necessary. |
| 8957 | (KJS::ProfileNode::insertNode): |
| 8958 | * profiler/ProfileNode.h: Expose access to the start time to allow the |
| 8959 | simpler time calculations above. |
| 8960 | (KJS::ProfileNode::startTime): |
| 8961 | (KJS::ProfileNode::setStartTime): |
| 8962 | |
| 8963 | 2008-05-22 Adam Roben <aroben@apple.com> |
| 8964 | |
| 8965 | Show "(Function object)" instead of "(JSInpectorCallbackWrapper |
| 8966 | object)" in profiles |
| 8967 | |
| 8968 | Reviewed by Kevin McCullough. |
| 8969 | |
| 8970 | * profiler/Profiler.cpp: |
| 8971 | (KJS::createCallIdentifier): Use JSObject::className instead of |
| 8972 | getting the class name from the ClassInfo directly. JSObject |
| 8973 | subclasses can override className to provide a custom class name, and |
| 8974 | it seems like we should honor that. |
| 8975 | |
| 8976 | 2008-05-22 Timothy Hatcher <timothy@apple.com> |
| 8977 | |
| 8978 | Added Profile::restoreAll and added ProfileNode::restoreAll |
| 8979 | to the export file. |
| 8980 | |
| 8981 | Reviewed by Adam Roben. |
| 8982 | |
| 8983 | * JavaScriptCore.exp: |
| 8984 | * profiler/Profile.h: |
| 8985 | |
| 8986 | 2008-05-22 Alp Toker <alp@nuanti.com> |
| 8987 | |
| 8988 | GTK+ build fix. Add JavaScriptCore/profiler to include path. |
| 8989 | |
| 8990 | * GNUmakefile.am: |
| 8991 | |
| 8992 | 2008-05-22 Adam Roben <aroben@apple.com> |
| 8993 | |
| 8994 | Implement sub-millisecond profiling on Windows |
| 8995 | |
| 8996 | Reviewed by Kevin McCullough. |
| 8997 | |
| 8998 | * profiler/ProfileNode.cpp: |
| 8999 | (KJS::getCount): Added. On Windows, we use QueryPerformanceCounter. On |
| 9000 | other platforms, we use getCurrentUTCTimeWithMicroseconds. |
| 9001 | (KJS::ProfileNode::endAndRecordCall): Use getCount instead of |
| 9002 | getCurrentUTCTimeWithMicroseconds. |
| 9003 | (KJS::ProfileNode::startTimer): Ditto. |
| 9004 | |
| 9005 | 2008-05-22 Adam Roben <aroben@apple.com> |
| 9006 | |
| 9007 | Fix a profiler assertion when calling a NodeList as a function |
| 9008 | |
| 9009 | Reviewed by Kevin McCullough. |
| 9010 | |
| 9011 | * profiler/Profiler.cpp: |
| 9012 | (KJS::createCallIdentifier): Don't assert when a non-function object |
| 9013 | is called as a function. Instead, build up a CallIdentifier using the |
| 9014 | object's class name. |
| 9015 | |
| 9016 | 2008-05-22 Kevin McCullough <kmccullough@apple.com> |
| 9017 | |
| 9018 | Reviewed by Darin. |
| 9019 | |
| 9020 | <rdar://problem/5951529> JSProfiler: Allow the profiler to "Exclude" a |
| 9021 | profile node. |
| 9022 | -Implement 'exclude'; where the excluded node attributes its time to its |
| 9023 | parent's self time. |
| 9024 | |
| 9025 | * JavaScriptCore.exp: Export the exclude function. |
| 9026 | * profiler/Profile.h: |
| 9027 | (KJS::Profile::exclude): |
| 9028 | * profiler/ProfileNode.cpp: |
| 9029 | (KJS::ProfileNode::setTreeVisible): New function that allows a change in |
| 9030 | visiblitiy to be propogated to all the children of a node. |
| 9031 | (KJS::ProfileNode::exclude): If the node matches the callIdentifier then |
| 9032 | set the visiblity of this node and all of its children to false and |
| 9033 | attribute it's total time to it's caller's self time. |
| 9034 | * profiler/ProfileNode.h: |
| 9035 | |
| 9036 | 2008-05-22 Mark Rowe <mrowe@apple.com> |
| 9037 | |
| 9038 | Reviewed by Oliver Hunt. |
| 9039 | |
| 9040 | Fix access to static global variables in Windows release builds. |
| 9041 | |
| 9042 | * kjs/JSGlobalObject.h: Don't store a reference to an Identifier |
| 9043 | in GlobalPropertyInfo as the Identifier is likely to be a temporary |
| 9044 | and therefore may be destroyed before the GlobalPropertyInfo. |
| 9045 | |
| 9046 | 2008-05-22 Kevin McCullough <kmccullough@apple.com> |
| 9047 | |
| 9048 | Build fix. |
| 9049 | |
| 9050 | * VM/Machine.cpp: |
| 9051 | (KJS::callEval): |
| 9052 | |
| 9053 | 2008-05-22 Kevin McCullough <kmccullough@apple.com> |
| 9054 | |
| 9055 | Reviewed by Sam. |
| 9056 | |
| 9057 | <rdar://problem/5951561> Turn on JavaScript Profiler |
| 9058 | Get basic JS profiling working. |
| 9059 | Even with this patch the profiler will not be compiled in because we do |
| 9060 | not know the extend, if any, of the performance regression it would cause |
| 9061 | when it is not in use. However with these changes, if the profiler were |
| 9062 | on, it would not crash and show good profiling data. |
| 9063 | |
| 9064 | * VM/Machine.cpp: Instrument the calls sites that are needed for profiling. |
| 9065 | (KJS::callEval): |
| 9066 | (KJS::Machine::unwindCallFrame): |
| 9067 | (KJS::Machine::execute): |
| 9068 | (KJS::Machine::privateExecute): |
| 9069 | * kjs/function.cpp: Ditto. |
| 9070 | (KJS::globalFuncEval): |
| 9071 | * kjs/interpreter.cpp: Ditto. |
| 9072 | (KJS::Interpreter::evaluate): |
| 9073 | * profiler/Profile.cpp: |
| 9074 | (KJS::Profile::willExecute): |
| 9075 | (KJS::Profile::didExecute): Because we do not get a good context when |
| 9076 | startProfiling is called it is possible that m_currentNode will be at the |
| 9077 | top of the known stack when a didExecute() is called. What we then do is |
| 9078 | create a new node that represents the function being exited and insert |
| 9079 | it between the head and the currently known children, since they should |
| 9080 | be children of this new node. |
| 9081 | * profiler/ProfileNode.cpp: |
| 9082 | (KJS::ProfileNode::ProfileNode): |
| 9083 | (KJS::ProfileNode::willExecute): Rename the add function for consistency. |
| 9084 | (KJS::ProfileNode::addChild): Appends the child to this node but also |
| 9085 | sets the parent pointer of the children to this node. |
| 9086 | (KJS::ProfileNode::insertNode): Insert a node between this node and its |
| 9087 | children. Also set the time for the new node since it is now exiting |
| 9088 | and we don't really know when it started. |
| 9089 | (KJS::ProfileNode::stopProfiling): |
| 9090 | (KJS::ProfileNode::startTimer): |
| 9091 | * profiler/ProfileNode.h: |
| 9092 | (KJS::CallIdentifier::toString): Added for debugging. |
| 9093 | (KJS::ProfileNode::setParent): |
| 9094 | (KJS::ProfileNode::setSelfTime): Fixed an old bug where we set the |
| 9095 | visibleTotalTime not the visibleSelfTime. |
| 9096 | (KJS::ProfileNode::children): |
| 9097 | (KJS::ProfileNode::toString): Added for debugging. |
| 9098 | * profiler/Profiler.cpp: remove unecessary calls. |
| 9099 | (KJS::Profiler::startProfiling): |
| 9100 | |
| 9101 | 2008-05-22 Sam Weinig <sam@webkit.org> |
| 9102 | |
| 9103 | Reviewed by Oliver Hunt. |
| 9104 | |
| 9105 | Rename register arguments for op_call, op_call_eval, op_end, and op_construct |
| 9106 | to document what they are for. |
| 9107 | |
| 9108 | * VM/CodeGenerator.cpp: |
| 9109 | (KJS::CodeGenerator::emitCall): |
| 9110 | (KJS::CodeGenerator::emitCallEval): |
| 9111 | (KJS::CodeGenerator::emitEnd): |
| 9112 | (KJS::CodeGenerator::emitConstruct): |
| 9113 | * VM/CodeGenerator.h: |
| 9114 | * VM/Machine.cpp: |
| 9115 | (KJS::Machine::privateExecute): |
| 9116 | |
| 9117 | 2008-05-22 Oliver Hunt <oliver@apple.com> |
| 9118 | |
| 9119 | Reviewed by Darin. |
| 9120 | |
| 9121 | Bug 19116: SquirrelFish shouldn't regress on variable lookups |
| 9122 | <https://bugs.webkit.org/show_bug.cgi?id=19116> |
| 9123 | |
| 9124 | Last of the multiscope look up optimisations. This is a wash overall on SunSpider |
| 9125 | but is a factor of 5-10 improvement in multiscope read/write/modify (eg. ++, --, +=, |
| 9126 | ... applied to any non-local var). |
| 9127 | |
| 9128 | * kjs/nodes.cpp: |
| 9129 | (KJS::PostIncResolveNode::emitCode): |
| 9130 | (KJS::PostDecResolveNode::emitCode): |
| 9131 | (KJS::PreIncResolveNode::emitCode): |
| 9132 | (KJS::PreDecResolveNode::emitCode): |
| 9133 | (KJS::ReadModifyResolveNode::emitCode): |
| 9134 | |
| 9135 | 2008-05-22 David Kilzer <ddkilzer@apple.com> |
| 9136 | |
| 9137 | <rdar://problem/5954233> Add method to release free memory from FastMalloc |
| 9138 | |
| 9139 | Patch suggested by Mark Rowe. Rubber-stamped by Maciej. |
| 9140 | |
| 9141 | * JavaScriptCore.exp: Export _releaseFastMallocFreeMemory. |
| 9142 | * wtf/FastMalloc.cpp: |
| 9143 | (WTF::TCMallocStats::): Added releaseFastMallocFreeMemory() for both |
| 9144 | system malloc and FastMalloc code paths. |
| 9145 | * wtf/FastMalloc.h: Define releaseFastMallocFreeMemory(). |
| 9146 | |
| 9147 | 2008-05-22 Oliver Hunt <oliver@apple.com> |
| 9148 | |
| 9149 | RS=Maciej. |
| 9150 | |
| 9151 | Roll out r34020 as it causes recursion tests to fail. |
| 9152 | |
| 9153 | * kjs/object.cpp: |
| 9154 | (KJS::JSObject::call): |
| 9155 | |
| 9156 | 2008-05-22 Oliver Hunt <oliver@apple.com> |
| 9157 | |
| 9158 | Reviewed by Mark. |
| 9159 | |
| 9160 | Don't leak the SymbolTable when compiling eval code. |
| 9161 | |
| 9162 | * kjs/nodes.cpp: |
| 9163 | (KJS::EvalNode::generateCode): |
| 9164 | |
| 9165 | 2008-05-22 Simon Hausmann <hausmann@webkit.org> |
| 9166 | |
| 9167 | Reviewed by Oliver. |
| 9168 | |
| 9169 | Qt build fix. |
| 9170 | |
| 9171 | * JavaScriptCore.pri: Added DebuggerCallFrame to the build. |
| 9172 | * VM/LabelID.h: Include limits.h for UINT_MAX. |
| 9173 | * wtf/VectorTraits.h: Include memory for std::auto_ptr. |
| 9174 | |
| 9175 | 2008-05-22 Geoffrey Garen <ggaren@apple.com> |
| 9176 | |
| 9177 | Reviewed by Adam Roben. |
| 9178 | |
| 9179 | Removed the old recursion guard mechanism, since squirrelfish has its |
| 9180 | own mechanism. Also removed some old JS call tracing code, since we |
| 9181 | have other ways to do that, too. |
| 9182 | |
| 9183 | SunSpider reports no change. |
| 9184 | |
| 9185 | * kjs/object.cpp: |
| 9186 | (KJS::JSObject::call): |
| 9187 | |
| 9188 | 2008-05-22 Maciej Stachowiak <mjs@apple.com> |
| 9189 | |
| 9190 | Reviewed by Oliver. |
| 9191 | |
| 9192 | - fixed <rdar://problem/5954979> crash on celtic kane JS benchmark |
| 9193 | |
| 9194 | * kjs/nodes.cpp: |
| 9195 | (KJS::WithNode::emitCode): |
| 9196 | (KJS::TryNode::emitCode): |
| 9197 | |
| 9198 | 2008-05-21 Kevin McCullough <kmccullough@apple.com> |
| 9199 | |
| 9200 | Reviewed by Maciej and Geoff. |
| 9201 | |
| 9202 | <rdar://problem/5951561> Turn on JavaScript Profiler |
| 9203 | -As part of the effort to turn on the profiler it would be helpful if it |
| 9204 | did not need ExecStates to represent the stack location of the currently |
| 9205 | executing statement. |
| 9206 | -We now create each node as necessary with a reference to the current |
| 9207 | node and each node knows its parent so that the tree can be made without |
| 9208 | the entire stack. |
| 9209 | |
| 9210 | * profiler/Profile.cpp: |
| 9211 | (KJS::Profile::Profile): The current node starts at the head. |
| 9212 | (KJS::Profile::stopProfiling): The current node is cleared when profiling |
| 9213 | stops. |
| 9214 | (KJS::Profile::willExecute): The current node either adds a new child or |
| 9215 | starts and returns a reference to an already existing child if the call |
| 9216 | ID that is requested already exists. |
| 9217 | (KJS::Profile::didExecute): The current node finishes and returns its |
| 9218 | parent. |
| 9219 | * profiler/Profile.h: Use a single callIdentifier instead of a vector |
| 9220 | since we no longer use the whole stack. |
| 9221 | * profiler/ProfileNode.cpp: Now profile nodes keep a reference to their |
| 9222 | parent. |
| 9223 | (KJS::ProfileNode::ProfileNode): Initialize the parent. |
| 9224 | (KJS::ProfileNode::didExecute): Record the time and return the parent. |
| 9225 | (KJS::ProfileNode::addOrStartChild): If the given callIdentifier is |
| 9226 | already a child, start it and return it, otherwise create a new one and |
| 9227 | return that. |
| 9228 | (KJS::ProfileNode::stopProfiling): Same logic, just use the new function. |
| 9229 | * profiler/ProfileNode.h: Utilize the parent. |
| 9230 | (KJS::ProfileNode::create): |
| 9231 | (KJS::ProfileNode::parent): |
| 9232 | * profiler/Profiler.cpp: |
| 9233 | (KJS::Profiler::startProfiling): Here is the only place where the |
| 9234 | ExecState is used to figure out where in the stack the profiler is |
| 9235 | currently profiling. |
| 9236 | (KJS::dispatchFunctionToProfiles): Only send one CallIdentifier instead |
| 9237 | of a vector of them. |
| 9238 | (KJS::Profiler::willExecute): Ditto. |
| 9239 | (KJS::Profiler::didExecute): Ditto. |
| 9240 | (KJS::createCallIdentifier): Create only one CallIdentifier. |
| 9241 | (KJS::createCallIdentifierFromFunctionImp): Ditto. |
| 9242 | * profiler/Profiler.h: |
| 9243 | |
| 9244 | 2008-05-21 Darin Adler <darin@apple.com> |
| 9245 | |
| 9246 | Reviewed by Maciej. |
| 9247 | |
| 9248 | - https://bugs.webkit.org/show_bug.cgi?id=19180 |
| 9249 | speed up the < operator for the case when both values are integers |
| 9250 | |
| 9251 | Makes standalone SunSpider 1.022x faster. |
| 9252 | |
| 9253 | * VM/Machine.cpp: |
| 9254 | (KJS::jsLess): Add a special case for when both are numbers that fit in a JSImmediate. |
| 9255 | |
| 9256 | 2008-05-21 Maciej Stachowiak <mjs@apple.com> |
| 9257 | |
| 9258 | Reviewed by Oliver and Sam. |
| 9259 | |
| 9260 | - fixed <rdar://problem/5815631> REGRESSION (r31239): Multiscope optimisation of function calls results in incorrect this value (breaks tvtv.de) |
| 9261 | |
| 9262 | Track global this value in the scope chain so we can retrieve it |
| 9263 | efficiently but it follows lexical scope properly. |
| 9264 | |
| 9265 | * kjs/ExecState.h: |
| 9266 | (KJS::ExecState::globalThisValue): |
| 9267 | * kjs/JSGlobalObject.h: |
| 9268 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| 9269 | * kjs/function_object.cpp: |
| 9270 | (KJS::FunctionObjectImp::construct): |
| 9271 | * kjs/scope_chain.h: |
| 9272 | (KJS::ScopeChainNode::ScopeChainNode): |
| 9273 | (KJS::ScopeChainNode::globalThisObject): |
| 9274 | (KJS::ScopeChainNode::push): |
| 9275 | (KJS::ScopeChain::ScopeChain): |
| 9276 | |
| 9277 | 2008-05-21 Kevin McCullough <kmccullough@apple.com> |
| 9278 | |
| 9279 | Sadness :( |
| 9280 | |
| 9281 | * kjs/config.h: |
| 9282 | |
| 9283 | 2008-05-21 Kevin McCullough <kmccullough@apple.com> |
| 9284 | |
| 9285 | Reviewed by Maciej. |
| 9286 | |
| 9287 | <rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a |
| 9288 | profile node. |
| 9289 | - This patch updatest the times of the visible nodes correctly, but to do |
| 9290 | so, some of the design of the ProfileNode changed. |
| 9291 | |
| 9292 | * JavaScriptCore.exp: export focus' symbol. |
| 9293 | * profiler/Profile.cpp: ProfileNodes now take a reference to the head of |
| 9294 | the profile tree to get up-to-date accurate total profile time. |
| 9295 | (KJS::Profile::Profile): Pass 0 for the head node. |
| 9296 | (KJS::Profile::stopProfiling): stopProfiling no longer needs the time |
| 9297 | passed into it, since it can get it from the head and it does not need to |
| 9298 | be told it is the head because it can figure it out on it's own. |
| 9299 | (KJS::Profile::willExecute): Set the head node for each created node. |
| 9300 | * profiler/Profile.h: |
| 9301 | (KJS::Profile::focus): Instead of taking a CallIdentifier that the caller |
| 9302 | would have to create, now focus() takes a ProfileNode that they should |
| 9303 | already have a reference to and focus() can extract the CallIdentifier |
| 9304 | from it. |
| 9305 | * profiler/ProfileNode.cpp: Create actual and visible versions fo the |
| 9306 | total and self times for focus and exclude. Also add a head node |
| 9307 | reference so that nodes can get information from their head. |
| 9308 | (KJS::ProfileNode::ProfileNode): |
| 9309 | (KJS::ProfileNode::stopProfiling): Rename the total and self time |
| 9310 | variables and set the visual ones to the actual ones, so that without any |
| 9311 | changes to the visual versions of these variables, their times will match |
| 9312 | the actual times. |
| 9313 | (KJS::ProfileNode::focus): Now focus() has a bool to force it's children |
| 9314 | to be visible if this node is visible. If this node does not match the |
| 9315 | CallIdentifier being focused then the visibleTotalTime is only updated if |
| 9316 | one or more of it's children is the CallIdentifier being focused. |
| 9317 | (KJS::ProfileNode::restoreAll): Restores all variables with respect to |
| 9318 | the visible data in the ProfileNode. |
| 9319 | (KJS::ProfileNode::endAndRecordCall): Name change. |
| 9320 | (KJS::ProfileNode::debugPrintData): Dump the new variables. |
| 9321 | (KJS::ProfileNode::debugPrintDataSampleStyle): Name change. |
| 9322 | * profiler/ProfileNode.h: Use the new variables and reference to the head |
| 9323 | node. |
| 9324 | (KJS::ProfileNode::create): |
| 9325 | (KJS::ProfileNode::totalTime): |
| 9326 | (KJS::ProfileNode::setTotalTime): |
| 9327 | (KJS::ProfileNode::selfTime): |
| 9328 | (KJS::ProfileNode::setSelfTime): |
| 9329 | (KJS::ProfileNode::totalPercent): |
| 9330 | (KJS::ProfileNode::selfPercent): |
| 9331 | (KJS::ProfileNode::setVisible): |
| 9332 | |
| 9333 | 2008-05-21 Alp Toker <alp@nuanti.com> |
| 9334 | |
| 9335 | GTK+/UNIX testkjs build fix. Include signal.h. |
| 9336 | |
| 9337 | * kjs/testkjs.cpp: |
| 9338 | |
| 9339 | 2008-05-21 Oliver Hunt <oliver@apple.com> |
| 9340 | |
| 9341 | Yet more windows build fixes |
| 9342 | |
| 9343 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 9344 | |
| 9345 | 2008-05-21 Oliver Hunt <oliver@apple.com> |
| 9346 | |
| 9347 | Yet more windows build fixes |
| 9348 | |
| 9349 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 9350 | |
| 9351 | 2008-05-21 Alp Toker <alp@nuanti.com> |
| 9352 | |
| 9353 | GTK+ build fix. Add DebuggerCallFrame.cpp and take AllInOneFile.cpp |
| 9354 | changes into account. |
| 9355 | |
| 9356 | * GNUmakefile.am: |
| 9357 | |
| 9358 | 2008-05-21 Oliver Hunt <oliver@apple.com> |
| 9359 | |
| 9360 | Add DebuggerCallFrame.{h,cpp} to the project file |
| 9361 | |
| 9362 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 9363 | |
| 9364 | 2008-05-21 Alp Toker <alp@nuanti.com> |
| 9365 | |
| 9366 | GTK+ port build fixes following squirrelfish merge r33979. |
| 9367 | |
| 9368 | * GNUmakefile.am: |
| 9369 | |
| 9370 | 2008-05-21 Maciej Stachowiak <mjs@apple.com> |
| 9371 | |
| 9372 | Reviewed by Darin. |
| 9373 | |
| 9374 | - save a hash lookup wne writing to global properties |
| 9375 | 0.3% speedup on SunSpider, 7% on bitops-bitwise-and |
| 9376 | |
| 9377 | * VM/Machine.cpp: |
| 9378 | (KJS::resolveBase): Check for being a the end of the scope chain |
| 9379 | before hash lookup. |
| 9380 | |
| 9381 | 2008-05-21 Alp Toker <alp@nuanti.com> |
| 9382 | |
| 9383 | Rubber-stamped by Maciej. |
| 9384 | |
| 9385 | Replace non-standard #pragma marks with comments to avoid compiler |
| 9386 | warnings. |
| 9387 | |
| 9388 | * profiler/ProfileNode.cpp: |
| 9389 | |
| 9390 | 2008-05-21 Geoffrey Garen <ggaren@apple.com> |
| 9391 | |
| 9392 | Reviewed by Mark Rowe. |
| 9393 | |
| 9394 | Fix layout test failure in fast/dom/getter-on-window-object2 introduced in r33961. |
| 9395 | |
| 9396 | * JavaScriptCore.exp: |
| 9397 | * kjs/JSGlobalObject.cpp: |
| 9398 | (KJS::JSGlobalObject::defineGetter): |
| 9399 | (KJS::JSGlobalObject::defineSetter): |
| 9400 | * kjs/JSGlobalObject.h: |
| 9401 | |
| 9402 | === End merge of squirrelfish === |
| 9403 | |
| 9404 | 2008-05-21 Geoffrey Garen <ggaren@apple.com> |
| 9405 | |
| 9406 | Reviewed by Tim Hatcher. |
| 9407 | |
| 9408 | Merged with trunk WebCore's new debugger. |
| 9409 | |
| 9410 | * kjs/DebuggerCallFrame.cpp: |
| 9411 | (KJS::DebuggerCallFrame::evaluate): Changed this function to separate |
| 9412 | the exception value from the return value. The WebKit debugger treats |
| 9413 | them as one, but the WebCore debugger doesn't. |
| 9414 | |
| 9415 | * kjs/DebuggerCallFrame.h: |
| 9416 | (KJS::DebuggerCallFrame::dynamicGlobalObject): Added a new accessor for |
| 9417 | the dynamic global object, since the debugger doesn't want the lexical |
| 9418 | global object. |
| 9419 | |
| 9420 | 2008-05-21 Oliver Hunt <oliver@apple.com> |
| 9421 | |
| 9422 | Reviewed by Maciej. |
| 9423 | |
| 9424 | Bug 19116: SquirrelFish shouldn't regress on variable lookups |
| 9425 | <https://bugs.webkit.org/show_bug.cgi?id=19116> |
| 9426 | |
| 9427 | Optimise cross scope assignment, 0.4% progression in sunspider. |
| 9428 | |
| 9429 | * VM/CodeBlock.cpp: |
| 9430 | (KJS::CodeBlock::dump): |
| 9431 | * VM/CodeGenerator.cpp: |
| 9432 | (KJS::CodeGenerator::emitPutScopedVar): |
| 9433 | * VM/CodeGenerator.h: |
| 9434 | * VM/Machine.cpp: |
| 9435 | (KJS::Machine::privateExecute): |
| 9436 | * VM/Opcode.h: |
| 9437 | * kjs/nodes.cpp: |
| 9438 | (KJS::AssignResolveNode::emitCode): |
| 9439 | |
| 9440 | 2008-05-21 Maciej Stachowiak <mjs@apple.com> |
| 9441 | |
| 9442 | Reviewed by Oliver. |
| 9443 | |
| 9444 | - check property map before symbol table in JSGlobalObject::getOwnPropertySlot |
| 9445 | 0.5% speedup on SunSpider |
| 9446 | |
| 9447 | * kjs/JSGlobalObject.h: |
| 9448 | (KJS::JSGlobalObject::getOwnPropertySlot): Check property map before symbol table |
| 9449 | because symbol table access is likely to have been optimized. |
| 9450 | |
| 9451 | 2008-05-21 Oliver Hunt <oliver@apple.com> |
| 9452 | |
| 9453 | Reviewed by Maciej. |
| 9454 | |
| 9455 | Bug 19116: SquirrelFish shouldn't regress on variable lookups |
| 9456 | <https://bugs.webkit.org/show_bug.cgi?id=19116> |
| 9457 | |
| 9458 | Optimise multiscope lookup of statically resolvable function calls. |
| 9459 | SunSpider reports a 1.5% improvement, including 37% on |
| 9460 | controlflow-recursive for some reason :D |
| 9461 | |
| 9462 | * VM/CodeBlock.cpp: |
| 9463 | (KJS::CodeBlock::dump): |
| 9464 | * VM/CodeGenerator.cpp: |
| 9465 | (KJS::CodeGenerator::emitResolve): |
| 9466 | * VM/CodeGenerator.h: |
| 9467 | * kjs/nodes.cpp: |
| 9468 | (KJS::FunctionCallResolveNode::emitCode): |
| 9469 | |
| 9470 | 2008-05-21 Maciej Stachowiak <mjs@apple.com> |
| 9471 | |
| 9472 | Reviewed by Oliver. |
| 9473 | |
| 9474 | - give JSGlobalObject a special version of getOwnPropertySlot that tells you if the slot is directly writable |
| 9475 | (WebCore change using this is a 2.6% speedup on in-browser SunSpider). |
| 9476 | |
| 9477 | * JavaScriptCore.exp: |
| 9478 | * kjs/JSGlobalObject.h: |
| 9479 | (KJS::JSGlobalObject::getOwnPropertySlot): |
| 9480 | * kjs/JSVariableObject.h: |
| 9481 | (KJS::JSVariableObject::symbolTableGet): |
| 9482 | * kjs/object.h: |
| 9483 | (KJS::JSObject::getDirectLocation): |
| 9484 | (KJS::JSObject::getOwnPropertySlotForWrite): |
| 9485 | * kjs/property_map.cpp: |
| 9486 | (KJS::PropertyMap::getLocation): |
| 9487 | * kjs/property_map.h: |
| 9488 | * kjs/property_slot.h: |
| 9489 | (KJS::PropertySlot::putValue): |
| 9490 | |
| 9491 | 2008-05-20 Oliver Hunt <oliver@apple.com> |
| 9492 | |
| 9493 | Reviewed by Maciej. |
| 9494 | |
| 9495 | Bug 19116: SquirrelFish shouldn't regress on variable lookups |
| 9496 | <https://bugs.webkit.org/show_bug.cgi?id=19116> |
| 9497 | |
| 9498 | This restores multiscope optimisation to simple resolve, producing |
| 9499 | a 2.6% progression in SunSpider. Have verified that none of the |
| 9500 | sites broken by the multiscope optimisation in trunk were effected |
| 9501 | by this change. |
| 9502 | |
| 9503 | * VM/CodeBlock.cpp: |
| 9504 | (KJS::CodeBlock::dump): |
| 9505 | * VM/CodeBlock.h: |
| 9506 | (KJS::CodeBlock::CodeBlock): |
| 9507 | * VM/CodeGenerator.cpp: |
| 9508 | (KJS::CodeGenerator::findScopedProperty): |
| 9509 | (KJS::CodeGenerator::emitResolve): |
| 9510 | * VM/CodeGenerator.h: |
| 9511 | * VM/Machine.cpp: |
| 9512 | (KJS::resolve_n): |
| 9513 | (KJS::Machine::privateExecute): |
| 9514 | * VM/Opcode.h: |
| 9515 | * kjs/JSVariableObject.h: |
| 9516 | |
| 9517 | 2008-05-20 Oliver Hunt <oliver@apple.com> |
| 9518 | |
| 9519 | Fixerate the windows build. |
| 9520 | |
| 9521 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 9522 | * VM/CodeGenerator.cpp: |
| 9523 | * VM/RegisterFile.h: |
| 9524 | * kjs/JSGlobalObject.h: |
| 9525 | * kjs/Parser.cpp: |
| 9526 | * kjs/interpreter.h: |
| 9527 | |
| 9528 | 2008-05-20 Oliver Hunt <oliver@apple.com> |
| 9529 | |
| 9530 | Reviewed by Geoff. |
| 9531 | |
| 9532 | Bug 19110: SquirrelFish: Google Maps - no maps |
| 9533 | <https://bugs.webkit.org/show_bug.cgi?id=19110> |
| 9534 | |
| 9535 | Correct a comedy of errors present in my original patch to "fix" |
| 9536 | exceptions occurring midway through pre and post increment. This |
| 9537 | solution is cleaner than the original, doesn't need the additional |
| 9538 | opcodes, and as an added benefit does not break Google Maps. |
| 9539 | |
| 9540 | Sunspider reports a 0.4% progression. |
| 9541 | |
| 9542 | * VM/CodeBlock.cpp: |
| 9543 | (KJS::CodeBlock::dump): |
| 9544 | * VM/CodeGenerator.cpp: |
| 9545 | * VM/CodeGenerator.h: |
| 9546 | * VM/Machine.cpp: |
| 9547 | (KJS::Machine::privateExecute): |
| 9548 | * VM/Opcode.h: |
| 9549 | * kjs/nodes.cpp: |
| 9550 | (KJS::PreIncResolveNode::emitCode): |
| 9551 | (KJS::PreDecResolveNode::emitCode): |
| 9552 | (KJS::PreIncBracketNode::emitCode): |
| 9553 | (KJS::PreDecBracketNode::emitCode): |
| 9554 | (KJS::PreIncDotNode::emitCode): |
| 9555 | (KJS::PreDecDotNode::emitCode): |
| 9556 | |
| 9557 | 2008-05-20 Maciej Stachowiak <mjs@apple.com> |
| 9558 | |
| 9559 | Reviewed by Oliver. |
| 9560 | |
| 9561 | - inline JSGlobalObject::getOwnPropertySlot |
| 9562 | 1% improvement on in-browser SunSpider (a wash command-line) |
| 9563 | |
| 9564 | * kjs/JSGlobalObject.cpp: |
| 9565 | * kjs/JSGlobalObject.h: |
| 9566 | (KJS::JSGlobalObject::getOwnPropertySlot): |
| 9567 | |
| 9568 | 2008-05-18 Oliver Hunt <oliver@apple.com> |
| 9569 | |
| 9570 | Reviewed by Maciej. |
| 9571 | |
| 9572 | Bug 18752: SQUIRRELFISH: exceptions are not always handled by the vm |
| 9573 | <https://bugs.webkit.org/show_bug.cgi?id=18752> |
| 9574 | |
| 9575 | Handle exceptions thrown by toString conversion in subscript operators, |
| 9576 | this should basically complete exception handling in SquirrelFish. |
| 9577 | |
| 9578 | Sunspider reports no regression. |
| 9579 | |
| 9580 | * VM/Machine.cpp: |
| 9581 | (KJS::Machine::privateExecute): |
| 9582 | |
| 9583 | 2008-05-17 Geoffrey Garen <ggaren@apple.com> |
| 9584 | |
| 9585 | Reviewed by Oliver Hunt. |
| 9586 | |
| 9587 | [Reapplying patch with previously missing files from r33553 -- Oliver] |
| 9588 | |
| 9589 | Behold: debugging. |
| 9590 | |
| 9591 | SunSpider reports no change. |
| 9592 | |
| 9593 | * JavaScriptCore.xcodeproj/project.pbxproj: Added DebuggerCallFrame.h/.cpp, |
| 9594 | and created a debugger folder. |
| 9595 | |
| 9596 | * VM/CodeGenerator.cpp: |
| 9597 | (KJS::CodeGenerator::generate): If the debugger is attached, always |
| 9598 | generate full scope chains for its sake. |
| 9599 | |
| 9600 | * VM/Machine.cpp: |
| 9601 | (KJS::Machine::unwindCallFrame): Notify the debugger when unwinding |
| 9602 | due to an exception, so it doesn't keep stale call frames around. |
| 9603 | |
| 9604 | (KJS::Machine::execute): Set Callee to 0 in eval frames, so the |
| 9605 | debugger can distinguish them from function call frames. |
| 9606 | |
| 9607 | (KJS::Machine::debug): Simplified this function, since the debugger |
| 9608 | doesn't actually need all the information we used to provide. |
| 9609 | |
| 9610 | (KJS::Machine::privateExecute): Treat debugging hooks like other function |
| 9611 | calls, so the code we hook into (the debugger UI) can be optimized. |
| 9612 | |
| 9613 | * kjs/debugger.cpp: Nixed these default callback implementations and |
| 9614 | made the callbacks pure virtual instead, so the compiler could tell me |
| 9615 | if I made a mistake in one of the subclasses. |
| 9616 | |
| 9617 | * kjs/debugger.h: Removed a bunch of irrelevent data from the debugger |
| 9618 | callbacks. Changed from passing an ExecState* to passing a |
| 9619 | DebuggerCallFrame*, since an ExecState* doesn't contain sufficient |
| 9620 | information anymore. |
| 9621 | |
| 9622 | * kjs/function.cpp: |
| 9623 | (KJS::globalFuncEval): Easiest bug fix evar! |
| 9624 | |
| 9625 | [Previously missing files from r33553] |
| 9626 | * kjs/DebuggerCallFrame.cpp: Copied from JavaScriptCore/profiler/FunctionCallProfile.h. |
| 9627 | (KJS::DebuggerCallFrame::functionName): |
| 9628 | (KJS::DebuggerCallFrame::thisObject): |
| 9629 | (KJS::DebuggerCallFrame::evaluateScript): |
| 9630 | * kjs/DebuggerCallFrame.h: Copied from JavaScriptCore/VM/Register.h. |
| 9631 | (KJS::DebuggerCallFrame::DebuggerCallFrame): |
| 9632 | (KJS::DebuggerCallFrame::scopeChain): |
| 9633 | (KJS::DebuggerCallFrame::exception): |
| 9634 | |
| 9635 | 2008-05-17 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 9636 | |
| 9637 | Reviewed by Oliver. |
| 9638 | |
| 9639 | Bug 18991: SquirrelFish: Major codegen issue in a.b=expr, a[b]=expr |
| 9640 | <https://bugs.webkit.org/show_bug.cgi?id=18991> |
| 9641 | |
| 9642 | Fix the last remaining blocking cases of this bug. |
| 9643 | |
| 9644 | * kjs/grammar.y: |
| 9645 | * kjs/nodes.cpp: |
| 9646 | (KJS::ReadModifyResolveNode::emitCode): |
| 9647 | |
| 9648 | 2008-05-17 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 9649 | |
| 9650 | Reviewed by Oliver. |
| 9651 | |
| 9652 | Partial fix for: |
| 9653 | |
| 9654 | Bug 18991: SquirrelFish: Major codegen issue in a.b=expr, a[b]=expr |
| 9655 | <https://bugs.webkit.org/show_bug.cgi?id=18991> |
| 9656 | |
| 9657 | Ensure that the code generated for assignments uses temporaries whenever |
| 9658 | necessary. This patch covers the vast majority of situations, but there |
| 9659 | are still a few left. |
| 9660 | |
| 9661 | This patch also adds some missing cases to CodeBlock::dump(). |
| 9662 | |
| 9663 | * VM/CodeBlock.cpp: |
| 9664 | (KJS::CodeBlock::dump): |
| 9665 | * VM/CodeGenerator.h: |
| 9666 | (KJS::CodeGenerator::destinationForAssignResult): |
| 9667 | (KJS::CodeGenerator::leftHandSideNeedsCopy): |
| 9668 | (KJS::CodeGenerator::emitNodeForLeftHandSide): |
| 9669 | * kjs/NodeInfo.h: |
| 9670 | * kjs/grammar.y: |
| 9671 | * kjs/nodes.cpp: |
| 9672 | (KJS::AssignDotNode::emitCode): |
| 9673 | (KJS::ReadModifyDotNode::emitCode): |
| 9674 | (KJS::AssignBracketNode::emitCode): |
| 9675 | (KJS::ReadModifyBracketNode::emitCode): |
| 9676 | (KJS::ForInNode::ForInNode): |
| 9677 | * kjs/nodes.h: |
| 9678 | (KJS::ReadModifyResolveNode::): |
| 9679 | (KJS::AssignResolveNode::): |
| 9680 | (KJS::ReadModifyBracketNode::): |
| 9681 | (KJS::AssignBracketNode::): |
| 9682 | (KJS::AssignDotNode::): |
| 9683 | (KJS::ReadModifyDotNode::): |
| 9684 | |
| 9685 | 2008-05-17 Oliver Hunt <oliver@apple.com> |
| 9686 | |
| 9687 | Reviewed by Maciej. |
| 9688 | |
| 9689 | Bug 19106: SquirrelFish: Activation is not marked correctly |
| 9690 | <https://bugs.webkit.org/show_bug.cgi?id=19106> |
| 9691 | |
| 9692 | We can't rely on the symbol table for a count of the number of globals |
| 9693 | we need to mark as that misses duplicate parameters and 'this'. Now we |
| 9694 | use the actual local register count from the codeBlock. |
| 9695 | |
| 9696 | * kjs/JSActivation.cpp: |
| 9697 | (KJS::JSActivation::mark): |
| 9698 | |
| 9699 | 2008-05-16 Oliver Hunt <oliver@apple.com> |
| 9700 | |
| 9701 | Reviewed by Geoff. |
| 9702 | |
| 9703 | Bug 19076: SquirrelFish: RegisterFile can be corrupted if implictly reenter global scope with no declared vars |
| 9704 | <https://bugs.webkit.org/show_bug.cgi?id=19076> |
| 9705 | |
| 9706 | Don't delay allocation of initial global RegisterFile, as we can't guarantee we will be able |
| 9707 | to allocate the global 'this' register safely at any point after initialisation of the Global |
| 9708 | Object. |
| 9709 | |
| 9710 | Unfortunately this initial allocation caused a regression of 0.2-0.3%, however this patch adds |
| 9711 | support for the static slot optimisation for the global Math object which brings it to a 0.3% |
| 9712 | progression. |
| 9713 | |
| 9714 | * VM/CodeGenerator.cpp: |
| 9715 | (KJS::CodeGenerator::programCodeThis): |
| 9716 | (KJS::CodeGenerator::CodeGenerator): |
| 9717 | (KJS::CodeGenerator::addParameter): |
| 9718 | * VM/CodeGenerator.h: |
| 9719 | * VM/Machine.cpp: |
| 9720 | (KJS::Machine::execute): |
| 9721 | * kjs/ExecState.h: |
| 9722 | * kjs/JSGlobalObject.cpp: |
| 9723 | (KJS::JSGlobalObject::reset): |
| 9724 | * kjs/JSGlobalObject.h: |
| 9725 | (KJS::JSGlobalObject::GlobalPropertyInfo::GlobalPropertyInfo): |
| 9726 | (KJS::JSGlobalObject::addStaticGlobals): |
| 9727 | * kjs/nodes.cpp: |
| 9728 | |
| 9729 | 2008-05-16 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 9730 | |
| 9731 | Reviewed by Oliver Hunt. |
| 9732 | |
| 9733 | Bug 19098: SquirrelFish: Ref'd temporaries can be clobbered |
| 9734 | <https://bugs.webkit.org/show_bug.cgi?id=19098> |
| 9735 | |
| 9736 | When doing code generation for a statement list, increase the reference |
| 9737 | count on a register that might eventually be returned, so that it doesn't |
| 9738 | get clobbered by a request for a new temporary. |
| 9739 | |
| 9740 | * kjs/nodes.cpp: |
| 9741 | (KJS::statementListEmitCode): |
| 9742 | |
| 9743 | 2008-05-16 Maciej Stachowiak <mjs@apple.com> |
| 9744 | |
| 9745 | Reviewed by Oliver. |
| 9746 | |
| 9747 | - fixed Bug 19044: SquirrelFish: Bogus values enter evaluation when closing over scope with parameter and var with same name |
| 9748 | https://bugs.webkit.org/show_bug.cgi?id=19044 |
| 9749 | |
| 9750 | * kjs/JSActivation.cpp: |
| 9751 | (KJS::JSActivation::copyRegisters): Use numLocals from the code |
| 9752 | block rather than the size of the symbol table for the number of |
| 9753 | registers to copy, to account for duplicate parameters and vars |
| 9754 | with the same name as parameters (we still have potentially |
| 9755 | suboptimal codegen in that we allocate a local register for the |
| 9756 | var in the latter case but it is never used). |
| 9757 | |
| 9758 | 2008-05-15 Geoffrey Garen <ggaren@apple.com> |
| 9759 | |
| 9760 | Not reviewed. |
| 9761 | |
| 9762 | We regret to inform you that your program is crashing because you were |
| 9763 | stupid. |
| 9764 | |
| 9765 | * VM/Machine.cpp: |
| 9766 | (KJS::Machine::privateExecute): Math is hard. |
| 9767 | |
| 9768 | 2008-05-14 Geoffrey Garen <ggaren@apple.com> |
| 9769 | |
| 9770 | Reviewed by Oliver Hunt. |
| 9771 | |
| 9772 | A little more debugger action: filled in op_debug. All debugger control |
| 9773 | flow works now, but variable inspection and backtraces still don't. |
| 9774 | |
| 9775 | SunSpider reports no change. |
| 9776 | |
| 9777 | * VM/CodeGenerator.cpp: Changed op_debug to accept line number parameters. |
| 9778 | |
| 9779 | * VM/Machine.cpp: |
| 9780 | (KJS::Machine::getFunctionAndArguments): Moved op_debug into a |
| 9781 | NEVER_INLINE function to avoid a stunning 10% performance regression. |
| 9782 | Also factored out a common function for retrieving the function and |
| 9783 | arguments from a call frame. |
| 9784 | |
| 9785 | * kjs/JSActivation.cpp: |
| 9786 | (KJS::JSActivation::createArgumentsObject): Use the new factored out |
| 9787 | function mentioned above. |
| 9788 | |
| 9789 | * kjs/Parser.cpp: |
| 9790 | (KJS::Parser::parse): Increment m_sourceId before assigning it, so the |
| 9791 | sourceId we send to the debugger matches the sourceId recorded in the |
| 9792 | node. |
| 9793 | |
| 9794 | * kjs/nodes.cpp: Emit debugging hooks. |
| 9795 | |
| 9796 | 2008-05-14 Oliver Hunt <oliver@apple.com> |
| 9797 | |
| 9798 | Reviewed by Maciej. |
| 9799 | |
| 9800 | Bug 19024: SQUIRRELFISH: ASSERTION FAILED: activation->isActivationObject() in Machine::unwindCallFrame |
| 9801 | <https://bugs.webkit.org/show_bug.cgi?id=19024> |
| 9802 | |
| 9803 | This fixes a number of issues. The most important is that we now check every register |
| 9804 | file for tainting rather than just looking for function register files as that was |
| 9805 | insufficient. Additionally guarded against implicit re-entry into Eval code. |
| 9806 | |
| 9807 | Also added a few additional assertions to reduce the amout of time between something |
| 9808 | going wrong and us seeing the error. |
| 9809 | |
| 9810 | * VM/Machine.cpp: |
| 9811 | (KJS::Machine::execute): |
| 9812 | (KJS::Machine::privateExecute): |
| 9813 | * VM/RegisterFile.cpp: |
| 9814 | (KJS::RegisterFile::growBuffer): |
| 9815 | (KJS::RegisterFile::addGlobalSlots): |
| 9816 | * VM/RegisterFileStack.cpp: |
| 9817 | (KJS::RegisterFileStack::pushGlobalRegisterFile): |
| 9818 | (KJS::RegisterFileStack::pushFunctionRegisterFile): |
| 9819 | * VM/RegisterFileStack.h: |
| 9820 | (KJS::RegisterFileStack::inImplicitCall): |
| 9821 | |
| 9822 | 2008-05-14 Geoffrey Garen <ggaren@apple.com> |
| 9823 | |
| 9824 | Reviewed by Oliver Hunt. |
| 9825 | |
| 9826 | A little more debugger action: emit opcodes for debugger hooks. Right |
| 9827 | now, the opcode implementation is just a stub. |
| 9828 | |
| 9829 | SunSpider reports no change. |
| 9830 | |
| 9831 | Some example codegen for "function f() { 1; }": |
| 9832 | |
| 9833 | [ 0] dbg DidEnterCallFrame |
| 9834 | [ 2] dbg WillExecuteStatement |
| 9835 | [ 4] load tr0, 1(@k0) |
| 9836 | [ 7] load tr0, undefined(@k1) |
| 9837 | [ 10] dbg WillLeaveCallFrame |
| 9838 | [ 12] ret tr0 |
| 9839 | |
| 9840 | 2008-05-14 Oliver Hunt <oliver@apple.com> |
| 9841 | |
| 9842 | Reviewed by Geoff. |
| 9843 | |
| 9844 | Bug 19025: SQUIRRELFISH: malformed syntax in onload handler causes crash |
| 9845 | <https://bugs.webkit.org/show_bug.cgi?id=19025> |
| 9846 | |
| 9847 | Simple fix -- move the use of functionBodyNode to after the null check. |
| 9848 | |
| 9849 | * kjs/function_object.cpp: |
| 9850 | (KJS::FunctionObjectImp::construct): |
| 9851 | |
| 9852 | 2008-05-13 Geoffrey Garen <ggaren@apple.com> |
| 9853 | |
| 9854 | Reviewed by Oliver Hunt. |
| 9855 | |
| 9856 | Fixed a codegen crash with run-time parse errors. |
| 9857 | |
| 9858 | SunSpider reports no change. |
| 9859 | |
| 9860 | emitThrowError needs to return the temporary holding the error, not dst, |
| 9861 | since dst may be NULL. In fact, emitThrowError shouldn't take a dst |
| 9862 | parameter at all, since exceptions should not modify the destination |
| 9863 | register. |
| 9864 | |
| 9865 | 2008-05-13 Oliver Hunt <oliver@apple.com> |
| 9866 | |
| 9867 | Reviewed by Geoff. |
| 9868 | |
| 9869 | Bug 19027: SquirrelFish: Incorrect codegen for pre-increment |
| 9870 | <https://bugs.webkit.org/show_bug.cgi?id=19027> |
| 9871 | |
| 9872 | This fixes the codegen issues for the pre-inc/decrement operators |
| 9873 | to prevent incorrectly clobbering the destination in the event of |
| 9874 | an exception. |
| 9875 | |
| 9876 | * VM/CodeBlock.cpp: |
| 9877 | (KJS::CodeBlock::dump): |
| 9878 | * VM/CodeGenerator.cpp: |
| 9879 | (KJS::CodeGenerator::emitPreInc): |
| 9880 | (KJS::CodeGenerator::emitPreDec): |
| 9881 | * VM/CodeGenerator.h: |
| 9882 | * VM/Machine.cpp: |
| 9883 | (KJS::Machine::privateExecute): |
| 9884 | * VM/Opcode.h: |
| 9885 | * kjs/nodes.cpp: |
| 9886 | (KJS::PreIncResolveNode::emitCode): |
| 9887 | (KJS::PreDecResolveNode::emitCode): |
| 9888 | (KJS::PreIncBracketNode::emitCode): |
| 9889 | (KJS::PreDecBracketNode::emitCode): |
| 9890 | (KJS::PreIncDotNode::emitCode): |
| 9891 | (KJS::PreDecDotNode::emitCode): |
| 9892 | |
| 9893 | 2008-05-13 Geoffrey Garen <ggaren@apple.com> |
| 9894 | |
| 9895 | Reviewed by Oliver Hunt. |
| 9896 | |
| 9897 | A little more debugger action: supply a real line number, sourceId, |
| 9898 | and sourceURL in op_new_error. |
| 9899 | |
| 9900 | SunSpider reports a .2% speedup. Not sure what that's about. |
| 9901 | |
| 9902 | * VM/Machine.cpp: |
| 9903 | (KJS::Machine::privateExecute): Use the new good stuff in op_new_error. |
| 9904 | |
| 9905 | * kjs/nodes.cpp: |
| 9906 | (KJS::RegExpNode::emitCode): Use the shared emitThrowError instead of |
| 9907 | rolling our own. |
| 9908 | |
| 9909 | 2008-05-13 Geoffrey Garen <ggaren@apple.com> |
| 9910 | |
| 9911 | Reviewed by Oliver Hunt. |
| 9912 | |
| 9913 | A little more debugger action: implemented the exception callback. |
| 9914 | |
| 9915 | SunSpider reports a .2% speedup. Not sure what that's about. |
| 9916 | |
| 9917 | * VM/CodeBlock.h: A little refactoring here. Store a pointer to our |
| 9918 | owner ScopeNode so we can retrieve data from it. This allows us to |
| 9919 | stop storing copies of the data ourselves. Also, store a "this" register |
| 9920 | instead of a code type, since we were only using the code type to |
| 9921 | calculate the "this" register. |
| 9922 | |
| 9923 | * VM/CodeGenerator.cpp: |
| 9924 | (KJS::CodeGenerator::generate): Calculate the "this" register mentioned |
| 9925 | above. Also, take care of removing "this" from the symbol table after |
| 9926 | codegen is done, since relying on the timing of a destructor for correct |
| 9927 | behavior is not so good. |
| 9928 | |
| 9929 | * VM/Machine.cpp: |
| 9930 | (KJS::Machine::throwException): Invoke the debugger's exception callback. |
| 9931 | (KJS::Machine::privateExecute): Use the "this" register mentioned above. |
| 9932 | |
| 9933 | 2008-05-13 Geoffrey Garen <ggaren@apple.com> |
| 9934 | |
| 9935 | Reviewed by Oliver Hunt. |
| 9936 | |
| 9937 | Removed some unused exception machinery. |
| 9938 | |
| 9939 | SunSpider reports a .3% speedup. |
| 9940 | |
| 9941 | * API/JSCallbackObject.h: |
| 9942 | * API/JSCallbackObjectFunctions.h: |
| 9943 | * JavaScriptCore.exp: |
| 9944 | * VM/Machine.cpp: |
| 9945 | (KJS::Machine::privateExecute): |
| 9946 | * kjs/internal.cpp: |
| 9947 | * kjs/object.cpp: |
| 9948 | * kjs/object.h: |
| 9949 | * kjs/value.h: |
| 9950 | |
| 9951 | 2008-05-13 Geoffrey Garen <ggaren@apple.com> |
| 9952 | |
| 9953 | Reviewed by Oliver Hunt. |
| 9954 | |
| 9955 | A little more debugger action. |
| 9956 | |
| 9957 | * kjs/debugger.cpp: |
| 9958 | * kjs/debugger.h: Removed debuggersPresent because it was unused. |
| 9959 | Replaced AttachedGlobalObject linked list with a HashSet because HashSet |
| 9960 | is faster and simpler. Changed all functions to return void instead of |
| 9961 | bool, because no clients ever return false, and we don't want to support |
| 9962 | it. |
| 9963 | |
| 9964 | * kjs/nodes.cpp: Did some up-keep to avoid build bustage. |
| 9965 | (KJS::Node::handleException): |
| 9966 | (KJS::BreakpointCheckStatement::execute): |
| 9967 | (KJS::FunctionBodyNodeWithDebuggerHooks::execute): |
| 9968 | |
| 9969 | 2008-05-13 Oliver Hunt <oliver@apple.com> |
| 9970 | |
| 9971 | Reviewed by Darin. |
| 9972 | |
| 9973 | Bug 18752: SQUIRRELFISH: exceptions are not always handled by the vm |
| 9974 | <https://bugs.webkit.org/show_bug.cgi?id=18752> |
| 9975 | |
| 9976 | Replace old attempt at "branchless" exceptions as the extra information |
| 9977 | being passed made gcc an unhappy compiler, replacing these custom toNumber |
| 9978 | calls with ordinary toNumber logic (by relying on toNumber now preventing |
| 9979 | side effects after an exception has been thrown) provided sufficient leeway |
| 9980 | to add the additional checks for the remaining unchecked cases. |
| 9981 | |
| 9982 | This leaves only toString conversions in certain contexts as possibly |
| 9983 | misbehaving. |
| 9984 | |
| 9985 | * VM/Machine.cpp: |
| 9986 | (KJS::jsAdd): |
| 9987 | (KJS::resolve): |
| 9988 | (KJS::resolveBaseAndProperty): |
| 9989 | (KJS::resolveBaseAndFunc): |
| 9990 | (KJS::Machine::privateExecute): |
| 9991 | * VM/Opcode.h: |
| 9992 | * kjs/value.h: |
| 9993 | (KJS::JSValue::safeGetNumber): |
| 9994 | |
| 9995 | 2008-05-13 Geoffrey Garen <ggaren@apple.com> |
| 9996 | |
| 9997 | Reviewed by Oliver Hunt. |
| 9998 | |
| 9999 | First steps toward supporting the debugger API: support the sourceParsed |
| 10000 | callback; plus some minor fixups. |
| 10001 | |
| 10002 | SunSpider reports no regression. |
| 10003 | |
| 10004 | * VM/CodeGenerator.h: Removed a misleading comment. |
| 10005 | |
| 10006 | * kjs/Parser.h: Changed the parser to take an ExecState*, so it can |
| 10007 | implement the sourceParsed callback -- that way, we only have to |
| 10008 | implement the callback in one place. |
| 10009 | |
| 10010 | * kjs/debugger.cpp: Nixed DebuggerImp, because its sole purpose in life |
| 10011 | was to demonstrate the misapplication of design patterns. |
| 10012 | |
| 10013 | * kjs/debugger.h: Changed sourceParsed to take a SourceProvider, to |
| 10014 | reduce copying, and not to return a value, because pausing execution |
| 10015 | after parsing is complicated, and no clients needed that ability, anyway. |
| 10016 | |
| 10017 | * kjs/grammar.y: Make sure never to pass a NULL SourceElements* to |
| 10018 | didFinishParsing -- that simplifies some code down the road. |
| 10019 | |
| 10020 | * kjs/nodes.cpp: Don't generate special AST nodes just because the |
| 10021 | debugger is attached -- that's a relic of the old AST execution model, |
| 10022 | and those nodes haven't been maintained. |
| 10023 | |
| 10024 | 2008-05-13 Oliver Hunt <oliver@apple.com> |
| 10025 | |
| 10026 | Reviewed by Geoff. |
| 10027 | |
| 10028 | Bug 18752: SQUIRRELFISH: exceptions are not always handled by the vm |
| 10029 | <https://bugs.webkit.org/show_bug.cgi?id=18752> |
| 10030 | |
| 10031 | First step: prevent incorrect evaluation of valueOf/toString conversion |
| 10032 | in right hand side of expression after earlier conversion throws. |
| 10033 | |
| 10034 | * API/JSCallbackObjectFunctions.h: |
| 10035 | (KJS::::toNumber): |
| 10036 | * kjs/object.cpp: |
| 10037 | (KJS::JSObject::defaultValue): |
| 10038 | |
| 10039 | 2008-05-12 Oliver Hunt <oliver@apple.com> |
| 10040 | |
| 10041 | Reviewed by Geoff. |
| 10042 | |
| 10043 | Bug 18934: SQUIRRELFISH: ASSERT @ nytimes.com due to RegisterFile being clobbered |
| 10044 | <https://bugs.webkit.org/show_bug.cgi?id=18934> |
| 10045 | |
| 10046 | Unfortunately we cannot create new statically optimised globals if there are any |
| 10047 | tainted RegisterFiles on the RegisterFileStack. To handle this we re-introduce |
| 10048 | (in a slightly cleaner form) the inImplicitCall concept to the RegisterFileStack. |
| 10049 | |
| 10050 | * VM/Machine.cpp: |
| 10051 | (KJS::Machine::execute): |
| 10052 | * VM/RegisterFileStack.cpp: |
| 10053 | (KJS::RegisterFileStack::pushFunctionRegisterFile): |
| 10054 | * VM/RegisterFileStack.h: |
| 10055 | |
| 10056 | 2008-05-12 Geoffrey Garen <ggaren@apple.com> |
| 10057 | |
| 10058 | Reviewed by Maciej Stachowiak. |
| 10059 | |
| 10060 | Introduced support for function.caller. |
| 10061 | |
| 10062 | Improved support for walking interesting scopes for function introspection. |
| 10063 | |
| 10064 | This fixes all remaining layout tests not blocked by rebasing to trunk. |
| 10065 | |
| 10066 | SunSpider reports no change. |
| 10067 | |
| 10068 | * VM/Machine.cpp: |
| 10069 | (KJS::Machine::dumpRegisters): Fixed a spacing issue. |
| 10070 | |
| 10071 | 2008-05-11 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 10072 | |
| 10073 | Reviewed by Oliver. |
| 10074 | |
| 10075 | Bug 18961: SQUIRRELFISH: Gmail doesn't load |
| 10076 | <https://bugs.webkit.org/show_bug.cgi?id=18961> |
| 10077 | |
| 10078 | Fix codegen for logical nodes so that they don't use their destination |
| 10079 | as a temporary. |
| 10080 | |
| 10081 | * kjs/nodes.cpp: |
| 10082 | (KJS::LogicalAndNode::emitCode): |
| 10083 | (KJS::LogicalOrNode::emitCode): |
| 10084 | |
| 10085 | 2008-05-10 Maciej Stachowiak <mjs@apple.com> |
| 10086 | |
| 10087 | Reviewed by Oliver. |
| 10088 | |
| 10089 | - JavaScriptCore part of fix for: "SQUIRRELFISH: function toString broken after calling" |
| 10090 | https://bugs.webkit.org/show_bug.cgi?id=18869 |
| 10091 | |
| 10092 | Three layout tests are fixed: |
| 10093 | fast/js/toString-elision-trailing-comma.html |
| 10094 | fast/js/toString-prefix-postfix-preserve-parens.html |
| 10095 | fast/js/kde/lval-exceptions.html |
| 10096 | |
| 10097 | Functions now save a shared subrange of the original source used |
| 10098 | to make them (so in the common case this adds no storage above the |
| 10099 | memory cache). |
| 10100 | |
| 10101 | * kjs/SourceProvider.h: Added. |
| 10102 | (KJS::SourceProvider): New abstract base class for classes that provide on-demand access |
| 10103 | to the source for a JavaScript program. This allows function objects to have access to their |
| 10104 | original source without copying. |
| 10105 | (KJS::UStringSourceProvider): SourceProvider subclass backed by a KJS::UString. |
| 10106 | (KJS::UStringSourceProvider::create): |
| 10107 | (KJS::UStringSourceProvider::getRange): |
| 10108 | (KJS::UStringSourceProvider::data): |
| 10109 | (KJS::UStringSourceProvider::length): |
| 10110 | (KJS::UStringSourceProvider::UStringSourceProvider): |
| 10111 | * kjs/SourceRange.h: Added. |
| 10112 | (KJS::SourceRange::SourceRange): Class that holds a SourceProvider and a character range into |
| 10113 | the source, to encapsulate on-demand access to the source of a function. |
| 10114 | (KJS::SourceRange::toString): |
| 10115 | * VM/Machine.cpp: |
| 10116 | (KJS::eval): Pass a UStringSourceProvider to the parser. |
| 10117 | * kjs/Parser.cpp: |
| 10118 | (KJS::Parser::parse): Take a SourceProvider and pass it on to the lexer. |
| 10119 | * kjs/Parser.h: |
| 10120 | (KJS::Parser::parse): Take a SourceProvider. |
| 10121 | * kjs/lexer.cpp: |
| 10122 | (KJS::Lexer::setCode): Take a SourceProvider; keep it around, and |
| 10123 | use it to get the raw buffer and length. |
| 10124 | * kjs/lexer.h: |
| 10125 | (KJS::Lexer::sourceRange): Convenience function to get a source |
| 10126 | range based on the lexer's source provieder, and char offsets |
| 10127 | right before and after the desired range. |
| 10128 | * kjs/function.cpp: |
| 10129 | (KJS::globalFuncEval): Pass a UStringSourceProvider to the parser. |
| 10130 | * kjs/function_object.cpp: |
| 10131 | (KJS::functionProtoFuncToString): Use toSourceString to get the source. |
| 10132 | (KJS::FunctionObjectImp::construct): Give the parser a UStringSourceProvider. |
| 10133 | * kjs/grammar.y: When parsing a function declaration, function |
| 10134 | expression, or getter or setter, tell the function body about its |
| 10135 | SourceRange. |
| 10136 | * kjs/interpreter.cpp: |
| 10137 | (KJS::Interpreter::checkSyntax): Pass a SourceProvider to the parser. |
| 10138 | (KJS::Interpreter::evaluate): Pass a SourceProvider to the parser. |
| 10139 | * kjs/interpreter.h: |
| 10140 | * kjs/nodes.h: |
| 10141 | (KJS::FunctionBodyNode::setSource): Establish a SourceRange for this function. |
| 10142 | (KJS::FunctionBodyNode::toSourceString): Get the source string out |
| 10143 | of the SourceRange. |
| 10144 | (KJS::FuncExprNode::): Take a SourceRange and set it on the body. |
| 10145 | (KJS::FuncDeclNode::): ditto |
| 10146 | * kjs/testkjs.cpp: |
| 10147 | (prettyPrintScript): Use a SourceProvider appropriately. |
| 10148 | * JavaScriptCore.exp: Export new symbols. |
| 10149 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add new files. |
| 10150 | * JavaScriptCore.xcodeproj/project.pbxproj: Add new files. |
| 10151 | |
| 10152 | 2008-05-09 Oliver Hunt <oliver@apple.com> |
| 10153 | |
| 10154 | Reviewed by Maciej. |
| 10155 | |
| 10156 | Bring back RegisterFile tainting in order to correctly handle |
| 10157 | natively implemented getters and setters that re-enter JavaScript |
| 10158 | |
| 10159 | * VM/Machine.cpp: |
| 10160 | (KJS::Machine::privateExecute): |
| 10161 | * VM/RegisterFile.h: |
| 10162 | * kjs/function.cpp: |
| 10163 | (KJS::FunctionImp::callAsFunction): |
| 10164 | * kjs/object.cpp: |
| 10165 | (KJS::JSObject::put): |
| 10166 | (KJS::tryGetAndCallProperty): |
| 10167 | * kjs/property_slot.cpp: |
| 10168 | (KJS::PropertySlot::functionGetter): |
| 10169 | |
| 10170 | 2008-05-09 Maciej Stachowiak <mjs@apple.com> |
| 10171 | |
| 10172 | Reviewed by Oliver. |
| 10173 | |
| 10174 | - track character offsets of open and close braces, in preparation for saving function source |
| 10175 | |
| 10176 | I verified that there is no performance regression from this change. |
| 10177 | |
| 10178 | * kjs/grammar.y: |
| 10179 | * kjs/lexer.cpp: |
| 10180 | (KJS::Lexer::lex): |
| 10181 | (KJS::Lexer::matchPunctuator): |
| 10182 | * kjs/lexer.h: |
| 10183 | |
| 10184 | 2008-05-09 Oliver Hunt <oliver@apple.com> |
| 10185 | |
| 10186 | Debug build fix |
| 10187 | |
| 10188 | * kjs/JSGlobalObject.cpp: |
| 10189 | (KJS::JSGlobalObject::restoreLocalStorage): |
| 10190 | |
| 10191 | 2008-05-09 Oliver Hunt <oliver@apple.com> |
| 10192 | |
| 10193 | Reviewed by Geoff. |
| 10194 | |
| 10195 | Build fixes for SquirrelFish on windows. |
| 10196 | |
| 10197 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 10198 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: |
| 10199 | * VM/Register.h: |
| 10200 | * kjs/JSGlobalObject.cpp: |
| 10201 | (KJS::JSGlobalObject::restoreLocalStorage): |
| 10202 | * kjs/collector.cpp: |
| 10203 | (KJS::Collector::allocate): |
| 10204 | (KJS::Collector::allocateNumber): |
| 10205 | * kjs/collector.h: |
| 10206 | (KJS::Collector::allocate): |
| 10207 | (KJS::Collector::allocateNumber): |
| 10208 | * kjs/property_slot.cpp: |
| 10209 | |
| 10210 | 2008-05-08 Maciej Stachowiak <mjs@apple.com> |
| 10211 | |
| 10212 | Reviewed by Geoff. |
| 10213 | |
| 10214 | - fix activation tearoff in the case where functions are called with too many arguments |
| 10215 | |
| 10216 | Fixes: |
| 10217 | fast/canvas/patternfill-repeat.html |
| 10218 | fast/dom/SelectorAPI/bug-17313.html |
| 10219 | |
| 10220 | * VM/Machine.cpp: |
| 10221 | (KJS::slideRegisterWindowForCall): |
| 10222 | (KJS::scopeChainForCall): |
| 10223 | (KJS::Machine::execute): |
| 10224 | (KJS::Machine::privateExecute): |
| 10225 | |
| 10226 | 2008-05-08 Geoffrey Garen <ggaren@apple.com> |
| 10227 | |
| 10228 | Reviewed by Oliver Hunt. |
| 10229 | |
| 10230 | Fixed failure in fast/canvas/canvas-pattern-behaviour.html. |
| 10231 | |
| 10232 | SunSpider reports a small speedup. Not sure what that's about. |
| 10233 | |
| 10234 | * VM/CodeBlock.cpp: |
| 10235 | (KJS::CodeBlock::dump): Fixed op_call_eval to dump as "op_call_eval". |
| 10236 | This helped me while debugging. |
| 10237 | |
| 10238 | * VM/Machine.cpp: |
| 10239 | (KJS::Machine::unwindCallFrame): When looking for an activation to tear |
| 10240 | off, don't use the scope chain. Inside eval, the scope chain doesn't |
| 10241 | belong to us; it belongs to our calling function. |
| 10242 | |
| 10243 | Also, don't use the needsFullScopeChain flag to decide whether to tear |
| 10244 | off the activation. "function.arguments" can create an activation |
| 10245 | for a function whose needsFullScopeChain flag is set to false. |
| 10246 | |
| 10247 | 2008-05-08 Maciej Stachowiak <mjs@apple.com> |
| 10248 | |
| 10249 | Reviewed by Oliver. |
| 10250 | |
| 10251 | - fix function.call for calls of more than 8 arguments |
| 10252 | |
| 10253 | Fixes svg/carto.net/button.svg |
| 10254 | |
| 10255 | * kjs/list.cpp: |
| 10256 | (KJS::List::getSlice): properly set up the m_buffer of the target list. |
| 10257 | |
| 10258 | 2008-05-08 Maciej Stachowiak <mjs@apple.com> |
| 10259 | |
| 10260 | Reviewed by Oliver. |
| 10261 | |
| 10262 | - don't return a null RegisterID from RegExpNode in the exception case, since the caller may need a real register |
| 10263 | |
| 10264 | Fixes: |
| 10265 | - fast/regex/early-acid3-86.html |
| 10266 | - http/tests/misc/acid3.html |
| 10267 | |
| 10268 | * kjs/nodes.cpp: |
| 10269 | (KJS::RegExpNode::emitCode): |
| 10270 | |
| 10271 | 2008-05-07 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 10272 | |
| 10273 | Reviewed by Oliver. |
| 10274 | |
| 10275 | Fix a performance regression caused by the introduction of property |
| 10276 | attributes to SymbolTable in r32859 by encoding the attributes and the |
| 10277 | register index into a single field of SymbolTableEntry. |
| 10278 | |
| 10279 | This leaves Node::optimizeVariableAccess() definitely broken, although |
| 10280 | it was probably not entirely correct in SquirrelFish before this change. |
| 10281 | |
| 10282 | * VM/CodeBlock.h: |
| 10283 | (KJS::missingThisObjectMarker): |
| 10284 | * VM/CodeGenerator.cpp: |
| 10285 | (KJS::CodeGenerator::addVar): |
| 10286 | (KJS::CodeGenerator::CodeGenerator): |
| 10287 | (KJS::CodeGenerator::registerForLocal): |
| 10288 | (KJS::CodeGenerator::registerForLocalConstInit): |
| 10289 | (KJS::CodeGenerator::isLocalConstant): |
| 10290 | (KJS::CodeGenerator::addConstant): |
| 10291 | (KJS::CodeGenerator::emitCall): |
| 10292 | * VM/CodeGenerator.h: |
| 10293 | (KJS::CodeGenerator::IdentifierMapIndexHashTraits::emptyValue): |
| 10294 | * VM/Machine.cpp: |
| 10295 | (KJS::Machine::privateExecute): |
| 10296 | * kjs/JSGlobalObject.cpp: |
| 10297 | (KJS::JSGlobalObject::saveLocalStorage): |
| 10298 | * kjs/JSVariableObject.cpp: |
| 10299 | (KJS::JSVariableObject::getPropertyNames): |
| 10300 | (KJS::JSVariableObject::getPropertyAttributes): |
| 10301 | * kjs/JSVariableObject.h: |
| 10302 | (KJS::JSVariableObject::symbolTableGet): |
| 10303 | (KJS::JSVariableObject::symbolTablePut): |
| 10304 | (KJS::JSVariableObject::symbolTablePutWithAttributes): |
| 10305 | * kjs/SymbolTable.h: |
| 10306 | (KJS::SymbolTableEntry::SymbolTableEntry): |
| 10307 | (KJS::SymbolTableEntry::isEmpty): |
| 10308 | (KJS::SymbolTableEntry::getIndex): |
| 10309 | (KJS::SymbolTableEntry::getAttributes): |
| 10310 | (KJS::SymbolTableEntry::setAttributes): |
| 10311 | (KJS::SymbolTableEntry::isReadOnly): |
| 10312 | * kjs/nodes.cpp: |
| 10313 | (KJS::getSymbolTableEntry): |
| 10314 | (KJS::PostIncResolveNode::optimizeVariableAccess): |
| 10315 | (KJS::PostDecResolveNode::optimizeVariableAccess): |
| 10316 | (KJS::DeleteResolveNode::optimizeVariableAccess): |
| 10317 | (KJS::TypeOfResolveNode::optimizeVariableAccess): |
| 10318 | (KJS::PreIncResolveNode::optimizeVariableAccess): |
| 10319 | (KJS::PreDecResolveNode::optimizeVariableAccess): |
| 10320 | (KJS::ReadModifyResolveNode::optimizeVariableAccess): |
| 10321 | (KJS::AssignResolveNode::optimizeVariableAccess): |
| 10322 | (KJS::ProgramNode::initializeSymbolTable): |
| 10323 | |
| 10324 | 2008-05-06 Maciej Stachowiak <mjs@apple.com> |
| 10325 | |
| 10326 | Rubber stamped by Oliver. |
| 10327 | |
| 10328 | - add missing ! in an assert that I failed to reverse |
| 10329 | |
| 10330 | * VM/CodeGenerator.cpp: |
| 10331 | (KJS::CodeGenerator::CodeGenerator): |
| 10332 | |
| 10333 | 2008-05-06 Maciej Stachowiak <mjs@apple.com> |
| 10334 | |
| 10335 | Reviewed by Oliver. |
| 10336 | |
| 10337 | - fixed "SQUIRRELFISH: window.this shows up as a property, but it shouldn't" |
| 10338 | https://bugs.webkit.org/show_bug.cgi?id=18868 |
| 10339 | |
| 10340 | The basic approach is to have "this" only be present in the symbol |
| 10341 | table at compile time, not runtime. |
| 10342 | |
| 10343 | * VM/CodeGenerator.cpp: |
| 10344 | (KJS::CodeGenerator::~CodeGenerator): Remove "this" from symbol table. |
| 10345 | (KJS::CodeGenerator::CodeGenerator): Add "this" back when re-using |
| 10346 | a symbol table. |
| 10347 | * VM/CodeGenerator.h: |
| 10348 | * VM/Machine.cpp: |
| 10349 | (KJS::Machine::execute): Don't assert that "this" is in the symbol table. |
| 10350 | |
| 10351 | 2008-05-06 Geoffrey Garen <ggaren@apple.com> |
| 10352 | |
| 10353 | Reviewed by Oliver Hunt. |
| 10354 | |
| 10355 | Trivial support for function.arguments: Currently, we only support |
| 10356 | function.arguments from within the scope of function. |
| 10357 | |
| 10358 | This fixes the remaining Mozilla JS test failures. |
| 10359 | |
| 10360 | SunSpider reports no change. |
| 10361 | |
| 10362 | * JavaScriptCore.exp: |
| 10363 | |
| 10364 | * VM/Machine.cpp: |
| 10365 | (KJS::Machine::privateExecute): Separated scope chain deref from |
| 10366 | activation register copying: since it is now possible for client code |
| 10367 | to create an activation on behalf of a function that otherwise wouldn't |
| 10368 | need one, having an activation no longer necessarily means that you need |
| 10369 | to deref the scope chain. |
| 10370 | |
| 10371 | (KJS::Machine::getCallFrame): For now, this function only examines the |
| 10372 | current scope. Walking parent scopes requires some refactoring in the |
| 10373 | way we track execution stacks. |
| 10374 | |
| 10375 | * kjs/ExecState.cpp: |
| 10376 | (KJS::ExecState::ExecState): We use a negative call frame offset to |
| 10377 | indicate that a given scope is not a function call scope. |
| 10378 | |
| 10379 | 2008-05-05 Oliver Hunt <oliver@apple.com> |
| 10380 | |
| 10381 | Reviewed by Geoff. |
| 10382 | |
| 10383 | Fix call frame set up for native -> JS function calls. |
| 10384 | |
| 10385 | * VM/Machine.cpp: |
| 10386 | (KJS::Machine::execute): |
| 10387 | |
| 10388 | 2008-05-05 Geoffrey Garen <ggaren@apple.com> |
| 10389 | |
| 10390 | Reviewed by Maciej Stachowiak. |
| 10391 | |
| 10392 | Fixed ecma_3/Object/8.6.2.6-001.js, and similar bugs. |
| 10393 | |
| 10394 | SunSpider reports a .4% speedup. Not sure what that's about. |
| 10395 | |
| 10396 | * VM/Machine.cpp: |
| 10397 | (KJS::Machine::privateExecute): Check for exception return from equal, |
| 10398 | since toPrimitive can throw. |
| 10399 | |
| 10400 | * kjs/operations.cpp: |
| 10401 | (KJS::strictEqual): In response to an error I made in an earlier version |
| 10402 | of this patch, I changed strictEqual to make clear the fact that it |
| 10403 | performs no conversions and can't throw, making it slightly more efficient |
| 10404 | in the process. |
| 10405 | |
| 10406 | 2008-05-05 Maciej Stachowiak <mjs@apple.com> |
| 10407 | |
| 10408 | Reviewed by Oliver. |
| 10409 | |
| 10410 | - fix some dumb mistakes in my last patch |
| 10411 | |
| 10412 | * VM/CodeGenerator.cpp: |
| 10413 | (KJS::CodeGenerator::emitPushScope): |
| 10414 | (KJS::CodeGenerator::emitGetPropertyNames): |
| 10415 | * VM/Machine.cpp: |
| 10416 | (KJS::Machine::privateExecute): |
| 10417 | |
| 10418 | 2008-05-05 Maciej Stachowiak <mjs@apple.com> |
| 10419 | |
| 10420 | Reviewed by Oliver. |
| 10421 | |
| 10422 | - document opcodes relating to jumps, scopes, and property name iteration |
| 10423 | |
| 10424 | Documented jmp, jtrue, false, push_scope, pop_scope, get_pnames, |
| 10425 | next_pname and jmp_scopes. |
| 10426 | |
| 10427 | * VM/CodeGenerator.cpp: |
| 10428 | (KJS::CodeGenerator::emitJump): |
| 10429 | (KJS::CodeGenerator::emitJumpIfTrue): |
| 10430 | (KJS::CodeGenerator::emitJumpIfFalse): |
| 10431 | (KJS::CodeGenerator::emitPushScope): |
| 10432 | (KJS::CodeGenerator::emitNextPropertyName): |
| 10433 | (KJS::CodeGenerator::emitGetPropertyNames): |
| 10434 | * VM/CodeGenerator.h: |
| 10435 | * VM/Machine.cpp: |
| 10436 | (KJS::Machine::privateExecute): |
| 10437 | * kjs/nodes.cpp: |
| 10438 | (KJS::LogicalAndNode::emitCode): |
| 10439 | (KJS::LogicalOrNode::emitCode): |
| 10440 | (KJS::ConditionalNode::emitCode): |
| 10441 | (KJS::IfNode::emitCode): |
| 10442 | (KJS::IfElseNode::emitCode): |
| 10443 | (KJS::DoWhileNode::emitCode): |
| 10444 | (KJS::WhileNode::emitCode): |
| 10445 | (KJS::ForNode::emitCode): |
| 10446 | (KJS::ForInNode::emitCode): |
| 10447 | (KJS::WithNode::emitCode): |
| 10448 | |
| 10449 | 2008-05-05 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 10450 | |
| 10451 | Reviewed by Oliver. |
| 10452 | |
| 10453 | Bug 18749: SQUIRRELFISH: const support is broken |
| 10454 | <https://bugs.webkit.org/show_bug.cgi?id=18749> |
| 10455 | |
| 10456 | Adds support for const during code generation. |
| 10457 | |
| 10458 | Fixes 2 layout tests. |
| 10459 | |
| 10460 | * ChangeLog: |
| 10461 | * VM/CodeGenerator.cpp: |
| 10462 | (KJS::CodeGenerator::addVar): |
| 10463 | (KJS::CodeGenerator::CodeGenerator): |
| 10464 | (KJS::CodeGenerator::isLocalConstant): |
| 10465 | * VM/CodeGenerator.h: |
| 10466 | (KJS::CodeGenerator::addVar): |
| 10467 | * kjs/nodes.cpp: |
| 10468 | (KJS::PostIncResolveNode::emitCode): |
| 10469 | (KJS::PostDecResolveNode::emitCode): |
| 10470 | (KJS::PreIncResolveNode::emitCode): |
| 10471 | (KJS::PreDecResolveNode::emitCode): |
| 10472 | (KJS::ReadModifyResolveNode::emitCode): |
| 10473 | (KJS::AssignResolveNode::emitCode): |
| 10474 | |
| 10475 | 2008-05-04 Maciej Stachowiak <mjs@apple.com> |
| 10476 | |
| 10477 | Reviewed by Geoff. |
| 10478 | |
| 10479 | - document some more opcodes (and fix argument names) |
| 10480 | |
| 10481 | Added docs for eq, neq, stricteq, nstriceq, less and lesseq. |
| 10482 | |
| 10483 | * VM/CodeGenerator.cpp: |
| 10484 | (KJS::CodeGenerator::emitEqual): |
| 10485 | (KJS::CodeGenerator::emitNotEqual): |
| 10486 | (KJS::CodeGenerator::emitStrictEqual): |
| 10487 | (KJS::CodeGenerator::emitNotStrictEqual): |
| 10488 | (KJS::CodeGenerator::emitLess): |
| 10489 | (KJS::CodeGenerator::emitLessEq): |
| 10490 | * VM/CodeGenerator.h: |
| 10491 | * VM/Machine.cpp: |
| 10492 | (KJS::Machine::privateExecute): |
| 10493 | * kjs/nodes.cpp: |
| 10494 | (KJS::LessNode::emitCode): |
| 10495 | (KJS::GreaterNode::emitCode): |
| 10496 | (KJS::LessEqNode::emitCode): |
| 10497 | (KJS::GreaterEqNode::emitCode): |
| 10498 | (KJS::EqualNode::emitCode): |
| 10499 | (KJS::NotEqualNode::emitCode): |
| 10500 | (KJS::StrictEqualNode::emitCode): |
| 10501 | (KJS::NotStrictEqualNode::emitCode): |
| 10502 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 10503 | |
| 10504 | 2008-05-04 Geoffrey Garen <ggaren@apple.com> |
| 10505 | |
| 10506 | Reviewed by Maciej Stachowiak. |
| 10507 | |
| 10508 | More scaffolding for f.arguments. |
| 10509 | |
| 10510 | Track the offset of the last call frame in the ExecState, so we can |
| 10511 | produce a backtrace at any time. |
| 10512 | |
| 10513 | Also, record numLocals, the sum of numVars + numParameters, in each code |
| 10514 | block, to make updates to the ExecState a little cheaper than they |
| 10515 | would be otherwise. |
| 10516 | |
| 10517 | We now use numLocals in a bunch of places where we used to calculate |
| 10518 | numVars + numParameters or -numVars - numParameters. |
| 10519 | |
| 10520 | Reports are mixed, but all in all, this seems to be a wash on SunSpider. |
| 10521 | |
| 10522 | 2008-05-04 Oliver Hunt <oliver@apple.com> |
| 10523 | |
| 10524 | Reviewed by Geoff. |
| 10525 | |
| 10526 | Whoops, correctly handle properties that don't exist in the |
| 10527 | symbol table. |
| 10528 | |
| 10529 | * kjs/JSVariableObject.h: |
| 10530 | (KJS::JSVariableObject::symbolTablePutWithAttributes): |
| 10531 | |
| 10532 | 2008-05-04 Oliver Hunt <oliver@apple.com> |
| 10533 | |
| 10534 | Reviewed by Geoff. |
| 10535 | |
| 10536 | Add attribute information to SymbolTable as ground work for |
| 10537 | various DontEnum and ReadOnly issues. |
| 10538 | |
| 10539 | * VM/CodeGenerator.cpp: |
| 10540 | (KJS::CodeGenerator::addVar): |
| 10541 | (KJS::CodeGenerator::CodeGenerator): |
| 10542 | (KJS::CodeGenerator::registerForLocal): |
| 10543 | (KJS::CodeGenerator::registerForLocalConstInit): |
| 10544 | (KJS::CodeGenerator::addConstant): |
| 10545 | * VM/Machine.cpp: |
| 10546 | (KJS::Machine::execute): |
| 10547 | * kjs/JSGlobalObject.cpp: |
| 10548 | (KJS::JSGlobalObject::saveLocalStorage): |
| 10549 | * kjs/JSVariableObject.cpp: |
| 10550 | (KJS::JSVariableObject::getPropertyNames): |
| 10551 | (KJS::JSVariableObject::getPropertyAttributes): |
| 10552 | * kjs/JSVariableObject.h: |
| 10553 | (KJS::JSVariableObject::symbolTablePut): |
| 10554 | (KJS::JSVariableObject::symbolTablePutWithAttributes): |
| 10555 | * kjs/SymbolTable.h: |
| 10556 | (KJS::SymbolTableEntry::SymbolTableEntry): |
| 10557 | (KJS::SymbolTableIndexHashTraits::emptyValue): |
| 10558 | * kjs/nodes.cpp: |
| 10559 | (KJS::getSymbolTableEntry): |
| 10560 | (KJS::ReadModifyResolveNode::optimizeVariableAccess): |
| 10561 | (KJS::AssignResolveNode::optimizeVariableAccess): |
| 10562 | (KJS::ProgramNode::initializeSymbolTable): |
| 10563 | |
| 10564 | 2008-05-04 Geoffrey Garen <ggaren@apple.com> |
| 10565 | |
| 10566 | Reviewed by Oliver Hunt. |
| 10567 | |
| 10568 | More scaffolding for f.arguments. |
| 10569 | |
| 10570 | Store the register file associated with an ExecState in the ExecState. |
| 10571 | |
| 10572 | SunSpider reports no change. |
| 10573 | |
| 10574 | * kjs/JSGlobalObject.h: |
| 10575 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Moved |
| 10576 | registerFileStack above globalExec, so it gets initialized first. |
| 10577 | Removed remnants of old activation scheme. |
| 10578 | |
| 10579 | 2008-05-04 Maciej Stachowiak <mjs@apple.com> |
| 10580 | |
| 10581 | Rubber stamped by Oliver. |
| 10582 | |
| 10583 | - renamed a few opcodes and fixed assembly formatting to accomodate the longest opcode |
| 10584 | |
| 10585 | equal --> eq |
| 10586 | nequal --> neq |
| 10587 | resolve_base_and_property --> resolve_with_base |
| 10588 | resolve_base_and_func --> resolve_func |
| 10589 | get_prop_id --> get_by_id |
| 10590 | put_prop_id --> put_by_id |
| 10591 | delete_prop_id --> del_by_id |
| 10592 | get_prop_val --> get_by_val |
| 10593 | put_prop_val --> put_by_val |
| 10594 | delete_prop_val --> del_by_val |
| 10595 | put_prop_index --> put_by_index |
| 10596 | |
| 10597 | * VM/CodeBlock.cpp: |
| 10598 | (KJS::printUnaryOp): |
| 10599 | (KJS::printBinaryOp): |
| 10600 | (KJS::printConditionalJump): |
| 10601 | (KJS::CodeBlock::dump): |
| 10602 | * VM/CodeGenerator.cpp: |
| 10603 | (KJS::CodeGenerator::emitEqual): |
| 10604 | (KJS::CodeGenerator::emitNotEqual): |
| 10605 | (KJS::CodeGenerator::emitResolveWithBase): |
| 10606 | (KJS::CodeGenerator::emitResolveFunction): |
| 10607 | (KJS::CodeGenerator::emitGetById): |
| 10608 | (KJS::CodeGenerator::emitPutById): |
| 10609 | (KJS::CodeGenerator::emitDeleteById): |
| 10610 | (KJS::CodeGenerator::emitGetByVal): |
| 10611 | (KJS::CodeGenerator::emitPutByVal): |
| 10612 | (KJS::CodeGenerator::emitDeleteByVal): |
| 10613 | (KJS::CodeGenerator::emitPutByIndex): |
| 10614 | * VM/CodeGenerator.h: |
| 10615 | * VM/Machine.cpp: |
| 10616 | (KJS::Machine::privateExecute): |
| 10617 | * VM/Opcode.h: |
| 10618 | * kjs/nodes.cpp: |
| 10619 | (KJS::ArrayNode::emitCode): |
| 10620 | (KJS::PropertyListNode::emitCode): |
| 10621 | (KJS::BracketAccessorNode::emitCode): |
| 10622 | (KJS::DotAccessorNode::emitCode): |
| 10623 | (KJS::EvalFunctionCallNode::emitCode): |
| 10624 | (KJS::FunctionCallResolveNode::emitCode): |
| 10625 | (KJS::FunctionCallBracketNode::emitCode): |
| 10626 | (KJS::FunctionCallDotNode::emitCode): |
| 10627 | (KJS::PostIncResolveNode::emitCode): |
| 10628 | (KJS::PostDecResolveNode::emitCode): |
| 10629 | (KJS::PostIncBracketNode::emitCode): |
| 10630 | (KJS::PostDecBracketNode::emitCode): |
| 10631 | (KJS::PostIncDotNode::emitCode): |
| 10632 | (KJS::PostDecDotNode::emitCode): |
| 10633 | (KJS::DeleteResolveNode::emitCode): |
| 10634 | (KJS::DeleteBracketNode::emitCode): |
| 10635 | (KJS::DeleteDotNode::emitCode): |
| 10636 | (KJS::TypeOfResolveNode::emitCode): |
| 10637 | (KJS::PreIncResolveNode::emitCode): |
| 10638 | (KJS::PreDecResolveNode::emitCode): |
| 10639 | (KJS::PreIncBracketNode::emitCode): |
| 10640 | (KJS::PreDecBracketNode::emitCode): |
| 10641 | (KJS::PreIncDotNode::emitCode): |
| 10642 | (KJS::PreDecDotNode::emitCode): |
| 10643 | (KJS::ReadModifyResolveNode::emitCode): |
| 10644 | (KJS::AssignResolveNode::emitCode): |
| 10645 | (KJS::AssignDotNode::emitCode): |
| 10646 | (KJS::ReadModifyDotNode::emitCode): |
| 10647 | (KJS::AssignBracketNode::emitCode): |
| 10648 | (KJS::ReadModifyBracketNode::emitCode): |
| 10649 | (KJS::ConstDeclNode::emitCodeSingle): |
| 10650 | (KJS::ForInNode::emitCode): |
| 10651 | (KJS::TryNode::emitCode): |
| 10652 | |
| 10653 | 2008-05-04 Oliver Hunt <oliver@apple.com> |
| 10654 | |
| 10655 | Reviewed by Maciej. |
| 10656 | |
| 10657 | Fix assertion when accessing arguments object with too many arguments provided |
| 10658 | |
| 10659 | The arguments constructor was assuming that the register offset given for argv |
| 10660 | was an absolute offset into the registerfile, rather than the offset from the |
| 10661 | frame. This patches corrects that issue. |
| 10662 | |
| 10663 | * kjs/JSActivation.cpp: |
| 10664 | (KJS::JSActivation::createArgumentsObject): |
| 10665 | |
| 10666 | 2008-05-04 Geoffrey Garen <ggaren@apple.com> |
| 10667 | |
| 10668 | Rubber stamped by Sam Weinig. |
| 10669 | |
| 10670 | Cleaned up Machine.cpp according to our style guidelines: moved static |
| 10671 | data to the top of the file; moved stand-alone functions below that; |
| 10672 | moved the Machine constructor above other Machine member functions. |
| 10673 | |
| 10674 | 2008-05-03 Maciej Stachowiak <mjs@apple.com> |
| 10675 | |
| 10676 | Reviewed by Sam. |
| 10677 | |
| 10678 | - fix accidental breakage from last patch |
| 10679 | |
| 10680 | * VM/Machine.cpp: |
| 10681 | (KJS::Machine::privateExecute): |
| 10682 | |
| 10683 | 2008-05-03 Maciej Stachowiak <mjs@apple.com> |
| 10684 | |
| 10685 | Reviewed by Geoff. |
| 10686 | |
| 10687 | - a bunch more opcode documentation and corresponding parameter name fixes |
| 10688 | |
| 10689 | I renamed a few opcodes: |
| 10690 | |
| 10691 | type_of --> typeof (that's what the JS operator is named) |
| 10692 | instance_of --> instanceof (ditto) |
| 10693 | create_error --> new_error (for consistency with other new_* opcodes) |
| 10694 | |
| 10695 | I documented the following opcodes: |
| 10696 | |
| 10697 | - load |
| 10698 | - new_object |
| 10699 | - new_array |
| 10700 | - new_regexp |
| 10701 | - mov |
| 10702 | - pre_inc |
| 10703 | - pre_dec |
| 10704 | - post_inc |
| 10705 | - post_dec |
| 10706 | - to_jsnumber |
| 10707 | - negate |
| 10708 | - bitnot |
| 10709 | - not |
| 10710 | - instanceof |
| 10711 | - typeof |
| 10712 | - in |
| 10713 | - new_func |
| 10714 | - new_funcexp |
| 10715 | - new_error |
| 10716 | |
| 10717 | I also fixed formatting on some existing opcode docs. |
| 10718 | |
| 10719 | * VM/CodeBlock.cpp: |
| 10720 | (KJS::CodeBlock::dump): |
| 10721 | * VM/CodeGenerator.cpp: |
| 10722 | (KJS::CodeGenerator::emitMove): |
| 10723 | (KJS::CodeGenerator::emitNot): |
| 10724 | (KJS::CodeGenerator::emitPreInc): |
| 10725 | (KJS::CodeGenerator::emitPreDec): |
| 10726 | (KJS::CodeGenerator::emitPostInc): |
| 10727 | (KJS::CodeGenerator::emitPostDec): |
| 10728 | (KJS::CodeGenerator::emitToJSNumber): |
| 10729 | (KJS::CodeGenerator::emitNegate): |
| 10730 | (KJS::CodeGenerator::emitBitNot): |
| 10731 | (KJS::CodeGenerator::emitInstanceOf): |
| 10732 | (KJS::CodeGenerator::emitTypeOf): |
| 10733 | (KJS::CodeGenerator::emitIn): |
| 10734 | (KJS::CodeGenerator::emitLoad): |
| 10735 | (KJS::CodeGenerator::emitNewObject): |
| 10736 | (KJS::CodeGenerator::emitNewArray): |
| 10737 | (KJS::CodeGenerator::emitNewRegExp): |
| 10738 | (KJS::CodeGenerator::emitNewError): |
| 10739 | * VM/CodeGenerator.h: |
| 10740 | (KJS::CodeGenerator::scopeDepth): |
| 10741 | (KJS::CodeGenerator::addVar): |
| 10742 | * VM/Machine.cpp: |
| 10743 | (KJS::Machine::privateExecute): |
| 10744 | * VM/Opcode.h: |
| 10745 | * kjs/nodes.cpp: |
| 10746 | (KJS::Node::emitThrowError): |
| 10747 | (KJS::RegExpNode::emitCode): |
| 10748 | (KJS::TypeOfValueNode::emitCode): |
| 10749 | (KJS::UnaryPlusNode::emitCode): |
| 10750 | (KJS::NegateNode::emitCode): |
| 10751 | (KJS::BitwiseNotNode::emitCode): |
| 10752 | (KJS::LogicalNotNode::emitCode): |
| 10753 | (KJS::InstanceOfNode::emitCode): |
| 10754 | (KJS::InNode::emitCode): |
| 10755 | |
| 10756 | 2008-05-03 Maciej Stachowiak <mjs@apple.com> |
| 10757 | |
| 10758 | Reviewed by Geoff and Sam. |
| 10759 | |
| 10760 | - generate HTML bytecode docs at build time |
| 10761 | |
| 10762 | * DerivedSources.make: |
| 10763 | * docs: Added. |
| 10764 | * docs/make-bytecode-docs.pl: Added. |
| 10765 | |
| 10766 | 2008-05-03 Geoffrey Garen <ggaren@apple.com> |
| 10767 | |
| 10768 | Reviewed by Sam Weinig. |
| 10769 | |
| 10770 | Update ExecState::m_scopeChain when switching scope chains inside the |
| 10771 | machine. |
| 10772 | |
| 10773 | This fixes uses of lexicalGlobalObject, such as, in a subframe |
| 10774 | |
| 10775 | alert(top.makeArray() instanceof Array ? "FAIL" : "PASS"); |
| 10776 | |
| 10777 | and a bunch of the security failures listed in |
| 10778 | https://bugs.webkit.org/show_bug.cgi?id=18870. (Those tests still fail, |
| 10779 | seemingly because of regressions in exception messages). |
| 10780 | |
| 10781 | SunSpider reports no change. |
| 10782 | |
| 10783 | * VM/Machine.cpp: Factored out scope chain updating into a common |
| 10784 | function that takes care to update ExecState::m_scopeChain, too. |
| 10785 | |
| 10786 | * kjs/ExecState.h: I made Machine a friend of ExecState so that Machine |
| 10787 | could update ExecState::m_scopeChain, even though that value is |
| 10788 | read-only for everyone else. |
| 10789 | |
| 10790 | * kjs/JSGlobalObject.h: |
| 10791 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Changed |
| 10792 | this client to be a little friendlier to ExecState's internal |
| 10793 | storage type for scope chain data. |
| 10794 | |
| 10795 | 2008-05-03 Geoffrey Garen <ggaren@apple.com> |
| 10796 | |
| 10797 | Reviewed by Sam Weinig. |
| 10798 | |
| 10799 | Fixed https://bugs.webkit.org/show_bug.cgi?id=18876 |
| 10800 | Squirrelfish: ScopeChainNode leak in op_jmp_scopes. |
| 10801 | |
| 10802 | SunSpider reports no change. |
| 10803 | |
| 10804 | * VM/Machine.cpp: |
| 10805 | (KJS::Machine::privateExecute): Don't construct a ScopeChain object, |
| 10806 | since the direct threaded interpreter will goto across its destructor. |
| 10807 | |
| 10808 | 2008-05-03 Geoffrey Garen <ggaren@apple.com> |
| 10809 | |
| 10810 | Reviewed by Oliver Hunt. |
| 10811 | |
| 10812 | A bit more efficient fix than r32832: Don't copy globals into function |
| 10813 | register files; instead, have the RegisterFileStack track only the base |
| 10814 | of the last *global* register file, so the global object's register |
| 10815 | references stay good. |
| 10816 | |
| 10817 | SunSpider reports a .3% speedup. Not sure what that's about. |
| 10818 | |
| 10819 | 2008-05-03 Oliver Hunt <oliver@apple.com> |
| 10820 | |
| 10821 | Reviewed by Maciej. |
| 10822 | |
| 10823 | Bug 18864: SquirrelFish: Support getter and setter definition in object literals |
| 10824 | <https://bugs.webkit.org/show_bug.cgi?id=18864> |
| 10825 | |
| 10826 | Add new opcodes to allow us to add getters and setters to an object. These are |
| 10827 | only used by the codegen for object literals. |
| 10828 | |
| 10829 | * VM/CodeGenerator.cpp: |
| 10830 | (KJS::CodeGenerator::emitPutGetter): |
| 10831 | (KJS::CodeGenerator::emitPutSetter): |
| 10832 | * VM/CodeGenerator.h: |
| 10833 | * VM/Machine.cpp: |
| 10834 | (KJS::Machine::privateExecute): |
| 10835 | * VM/Opcode.h: |
| 10836 | * kjs/nodes.cpp: |
| 10837 | (KJS::PropertyListNode::emitCode): |
| 10838 | |
| 10839 | 2008-05-02 Maciej Stachowiak <mjs@apple.com> |
| 10840 | |
| 10841 | Reviewed by Oliver. |
| 10842 | |
| 10843 | - properly copy globals into and out of implicit call register |
| 10844 | files, otherwise they will fail at global lookup |
| 10845 | |
| 10846 | Fixes fast/js/array-tostring-and-join.html layout test. |
| 10847 | |
| 10848 | * VM/RegisterFileStack.cpp: |
| 10849 | (KJS::RegisterFileStack::pushGlobalRegisterFile): |
| 10850 | (KJS::RegisterFileStack::popGlobalRegisterFile): |
| 10851 | (KJS::RegisterFileStack::pushFunctionRegisterFile): |
| 10852 | (KJS::RegisterFileStack::popFunctionRegisterFile): |
| 10853 | |
| 10854 | 2008-05-02 Geoffrey Garen <ggaren@apple.com> |
| 10855 | |
| 10856 | Reviewed by Oliver Hunt. |
| 10857 | |
| 10858 | Fixed https://bugs.webkit.org/show_bug.cgi?id=18822 |
| 10859 | SQUIRRELFISH: incorrect eval used in some cases |
| 10860 | |
| 10861 | Changed all code inside the machine to fetch the lexical global object |
| 10862 | directly from the scope chain, instead of from the ExecState. |
| 10863 | |
| 10864 | Clients who fetch the lexical global object through the ExecState |
| 10865 | still don't work. |
| 10866 | |
| 10867 | SunSpider reports no change. |
| 10868 | |
| 10869 | * VM/Machine.cpp: |
| 10870 | (KJS::Machine::privateExecute): Fetch the lexical global object from |
| 10871 | the scope chain. |
| 10872 | |
| 10873 | * kjs/ExecState.h: |
| 10874 | (KJS::ExecState::ExecState::lexicalGlobalObject): Moved the logic for |
| 10875 | this function into ScopeChainNode, but kept this function around to |
| 10876 | support existing clients. |
| 10877 | |
| 10878 | 2008-05-02 Geoffrey Garen <ggaren@apple.com> |
| 10879 | |
| 10880 | Rubber stamped by Oliver Hunt. |
| 10881 | |
| 10882 | Removed ExecState.cpp from AllInOneFile.cpp, for a .2% speedup. |
| 10883 | |
| 10884 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 10885 | * kjs/AllInOneFile.cpp: |
| 10886 | |
| 10887 | 2008-05-01 Oliver Hunt <oliver@apple.com> |
| 10888 | |
| 10889 | Reviewed by Geoff and Maciej. |
| 10890 | |
| 10891 | Bug 18827: SquirrelFish: Prevent getters and setters from destroying the current RegisterFile |
| 10892 | <https://bugs.webkit.org/show_bug.cgi?id=18827> |
| 10893 | |
| 10894 | Remove safe/unsafe RegisterFile concept, and instead just add additional |
| 10895 | logic to ensure we always push/pop RegisterFiles when executing getters |
| 10896 | and setters, similar to the logic for valueOf and toString. |
| 10897 | |
| 10898 | * VM/Machine.cpp: |
| 10899 | (KJS::Machine::privateExecute): |
| 10900 | * VM/RegisterFile.h: |
| 10901 | * kjs/function.cpp: |
| 10902 | (KJS::FunctionImp::callAsFunction): |
| 10903 | * kjs/object.cpp: |
| 10904 | (KJS::JSObject::put): |
| 10905 | * kjs/property_slot.cpp: |
| 10906 | (KJS::PropertySlot::functionGetter): |
| 10907 | |
| 10908 | 2008-05-01 Oliver Hunt <oliver@apple.com> |
| 10909 | |
| 10910 | RS=Geoff |
| 10911 | |
| 10912 | Rename unsafeForReentry to safeForReentry to avoid double negatives. |
| 10913 | |
| 10914 | * VM/Machine.cpp: |
| 10915 | (KJS::Machine::privateExecute): |
| 10916 | * VM/RegisterFile.h: |
| 10917 | * kjs/function.cpp: |
| 10918 | (KJS::FunctionImp::callAsFunction): |
| 10919 | |
| 10920 | 2008-05-01 Oliver Hunt <oliver@apple.com> |
| 10921 | |
| 10922 | Reviewed by Maciej. |
| 10923 | |
| 10924 | Bug 18827: SquirrelFish: Prevent getters and setters from destroying the current RegisterFile |
| 10925 | <https://bugs.webkit.org/show_bug.cgi?id=18827> |
| 10926 | |
| 10927 | This patch makes getters and setters work. It does this by |
| 10928 | tracking whether the RegisterFile is "safe", that is whether |
| 10929 | the interpreter is in a state that in which it can handle |
| 10930 | the RegisterFile being reallocated. |
| 10931 | |
| 10932 | * VM/Machine.cpp: |
| 10933 | (KJS::resolve): |
| 10934 | (KJS::Machine::privateExecute): |
| 10935 | * VM/RegisterFile.h: |
| 10936 | * kjs/function.cpp: |
| 10937 | (KJS::FunctionImp::callAsFunction): |
| 10938 | |
| 10939 | 2008-04-30 Geoffrey Garen <ggaren@apple.com> |
| 10940 | |
| 10941 | Release build fix: Always compile in "isGlobalObject", since it's |
| 10942 | listed in our .exp file. |
| 10943 | |
| 10944 | * kjs/ExecState.cpp: |
| 10945 | (KJS::ExecState::isGlobalObject): |
| 10946 | * kjs/ExecState.h: |
| 10947 | |
| 10948 | 2008-04-30 Oliver Hunt <oliver@apple.com> |
| 10949 | |
| 10950 | Reviewed by Maciej. |
| 10951 | |
| 10952 | Minor code restructuring to prepare for getters and setters, |
| 10953 | also helps exception semantics a bit. |
| 10954 | |
| 10955 | * VM/Machine.cpp: |
| 10956 | (KJS::Machine::privateExecute): |
| 10957 | |
| 10958 | 2008-04-30 Geoffrey Garen <ggaren@apple.com> |
| 10959 | |
| 10960 | Fixed tyop. |
| 10961 | |
| 10962 | * kjs/ExecState.h: |
| 10963 | |
| 10964 | 2008-04-30 Geoffrey Garen <ggaren@apple.com> |
| 10965 | |
| 10966 | Debug build fix: export a missing symbol. |
| 10967 | |
| 10968 | * JavaScriptCore.exp: |
| 10969 | |
| 10970 | 2008-04-30 Geoffrey Garen <ggaren@apple.com> |
| 10971 | |
| 10972 | Reviewed by Oliver Hunt. |
| 10973 | |
| 10974 | A little more ExecState refactoring: Now, only the global object creates |
| 10975 | an ExecState. |
| 10976 | |
| 10977 | Also inlined ExecState::lexicalGlobalObject(). |
| 10978 | |
| 10979 | SunSpider reports no change. |
| 10980 | |
| 10981 | 2008-04-30 Geoffrey Garen <ggaren@apple.com> |
| 10982 | |
| 10983 | WebCore build fix: forward-declare ScopeChain. |
| 10984 | |
| 10985 | * kjs/interpreter.h: |
| 10986 | |
| 10987 | 2008-04-30 Geoffrey Garen <ggaren@apple.com> |
| 10988 | |
| 10989 | Build fix for JavaScriptGlue: export a missing symbol. |
| 10990 | |
| 10991 | * JavaScriptCore.exp: |
| 10992 | |
| 10993 | 2008-04-30 Geoffrey Garen <ggaren@apple.com> |
| 10994 | |
| 10995 | Reviewed by Oliver Hunt. |
| 10996 | |
| 10997 | Removed a lot of unused bits from ExecState, moving them into |
| 10998 | OldInterpreterExecState, the fake scaffolding class. |
| 10999 | |
| 11000 | The clutter was making it hard to see the forest from the trees. |
| 11001 | |
| 11002 | .4% SunSpider speedup, probably because ExecState::lexicalGlobalObject() |
| 11003 | is faster now. |
| 11004 | |
| 11005 | 2008-04-29 Oliver Hunt <oliver@apple.com> |
| 11006 | |
| 11007 | Reviewed by Maciej. |
| 11008 | |
| 11009 | Bug 18643: SQUIRRELFISH: need to support implicit function calls (valueOf, toString, getters/setters) |
| 11010 | <https://bugs.webkit.org/show_bug.cgi?id=18643> |
| 11011 | |
| 11012 | Prevent static slot optimisation for new variables and functions in |
| 11013 | globally re-entrant code called from an an implicit function call. |
| 11014 | |
| 11015 | This is necessary to prevent us from needing to resize the global |
| 11016 | slot portion of the root RegisterFile during an implicit (and hence |
| 11017 | unguarded) function call. |
| 11018 | |
| 11019 | * VM/CodeGenerator.cpp: |
| 11020 | (KJS::CodeGenerator::CodeGenerator): |
| 11021 | * VM/CodeGenerator.h: |
| 11022 | * VM/Machine.cpp: |
| 11023 | (KJS::Machine::execute): |
| 11024 | * VM/RegisterFile.h: |
| 11025 | * VM/RegisterFileStack.cpp: |
| 11026 | (KJS::RegisterFileStack::pushGlobalRegisterFile): |
| 11027 | (KJS::RegisterFileStack::popGlobalRegisterFile): |
| 11028 | (KJS::RegisterFileStack::pushFunctionRegisterFile): |
| 11029 | (KJS::RegisterFileStack::popFunctionRegisterFile): |
| 11030 | * VM/RegisterFileStack.h: |
| 11031 | (KJS::RegisterFileStack::inImplicitFunctionCall): |
| 11032 | (KJS::RegisterFileStack::lastGlobal): |
| 11033 | * kjs/nodes.cpp: |
| 11034 | (KJS::ProgramNode::generateCode): |
| 11035 | * kjs/nodes.h: |
| 11036 | (KJS::ProgramNode::): |
| 11037 | |
| 11038 | 2008-04-29 Geoffrey Garen <ggaren@apple.com> |
| 11039 | |
| 11040 | Reviewed by Oliver Hunt. |
| 11041 | |
| 11042 | In nested program code, don't propogate "this" back to the parent |
| 11043 | register file. ("this" should remain constant in the parent register |
| 11044 | file, regardless of the scripts it invokes.) |
| 11045 | |
| 11046 | * VM/RegisterFile.cpp: |
| 11047 | (KJS::RegisterFile::copyGlobals): |
| 11048 | |
| 11049 | 2008-04-28 Oliver Hunt <oliver@apple.com> |
| 11050 | |
| 11051 | Reviewed by Geoff. |
| 11052 | |
| 11053 | Restore base pointer when popping a global RegisterFile |
| 11054 | |
| 11055 | * VM/RegisterFileStack.cpp: |
| 11056 | (KJS::RegisterFileStack::popGlobalRegisterFile): |
| 11057 | |
| 11058 | 2008-04-28 Oliver Hunt <oliver@apple.com> |
| 11059 | |
| 11060 | Reviewed by Geoff. |
| 11061 | |
| 11062 | Bug 18643: SQUIRRELFISH: need to support implicit function calls (valueOf, toString, getters/setters) |
| 11063 | <https://bugs.webkit.org/show_bug.cgi?id=18643> |
| 11064 | |
| 11065 | Partial fix. This results in all implicit calls to toString or valueOf |
| 11066 | executing in a separate RegisterFile, so ensuring that the the pointers |
| 11067 | in the triggering interpreter don't get trashed. This still leaves the |
| 11068 | task of preventing new global re-entry from toString and valueOf from |
| 11069 | clobbering the RegisterFile. |
| 11070 | |
| 11071 | * VM/Machine.cpp: |
| 11072 | (KJS::Machine::execute): |
| 11073 | * VM/RegisterFileStack.cpp: |
| 11074 | (KJS::RegisterFileStack::pushFunctionRegisterFile): |
| 11075 | (KJS::RegisterFileStack::popFunctionRegisterFile): |
| 11076 | * VM/RegisterFileStack.h: |
| 11077 | * kjs/object.cpp: |
| 11078 | (KJS::tryGetAndCallProperty): |
| 11079 | |
| 11080 | 2008-04-28 Geoffrey Garen <ggaren@apple.com> |
| 11081 | |
| 11082 | Reviewed by Maciej Stachowiak. |
| 11083 | |
| 11084 | Simplified activation object a bit: No need to store the callee |
| 11085 | in the activation object -- we can pull it out of the call frame |
| 11086 | when needed, instead. |
| 11087 | |
| 11088 | SunSpider reports no change. |
| 11089 | |
| 11090 | 2008-04-28 Geoffrey Garen <ggaren@apple.com> |
| 11091 | |
| 11092 | Reviewed by Maciej Stachowiak. |
| 11093 | |
| 11094 | RS by Oliver Hunt on moving JSArguments.cpp out of AllInOneFile.cpp. |
| 11095 | |
| 11096 | Substantially more handling of "arguments": "arguments" works fully |
| 11097 | now, but "f.arguments" still doesn't work. |
| 11098 | |
| 11099 | Fixes 10 regression tests. |
| 11100 | |
| 11101 | SunSpider reports no regression. |
| 11102 | |
| 11103 | * kjs/JSActivation.cpp: |
| 11104 | (KJS::JSActivation::createArgumentsObject): Reconstruct an arguments |
| 11105 | List to pass to the arguments object constructor. |
| 11106 | |
| 11107 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 11108 | * kjs/AllInOneFile.cpp: Removed JSActivation.cpp from AllInOneFile.cpp |
| 11109 | because that seems to make GCC happy. (Previously, I had added |
| 11110 | JSActivation.cpp to AllInOneFile.cpp because *that* seemed to make GCC |
| 11111 | happy. So it goes.) |
| 11112 | |
| 11113 | 2008-04-28 Geoffrey Garen <ggaren@apple.com> |
| 11114 | |
| 11115 | Reviewed by Maciej Stachowiak. |
| 11116 | |
| 11117 | Groundwork for more handling of "arguments". I'm not checking in the |
| 11118 | actual handling of "arguments" yet, because it still needs a little |
| 11119 | fiddling to avoid a performance regression. |
| 11120 | |
| 11121 | SunSpider reports no change. |
| 11122 | |
| 11123 | * VM/Machine.cpp: |
| 11124 | (KJS::initializeCallFrame): Put argc in the register file, so the |
| 11125 | arguments object can find it later, to determine arguments.length. |
| 11126 | |
| 11127 | * kjs/nodes.h: |
| 11128 | (KJS::FunctionBodyNode::): Added a special code accessor for when you |
| 11129 | know the code has already been generated, and you don't have a scopeChain |
| 11130 | to supply for potential code generation. (This is the case when the |
| 11131 | activation object creates the arguments object.) |
| 11132 | |
| 11133 | 2008-04-28 Oliver Hunt <oliver@apple.com> |
| 11134 | |
| 11135 | Reviewed by Geoff. |
| 11136 | |
| 11137 | Replace unsafe use of auto_ptr in Vector with manual memory |
| 11138 | management. |
| 11139 | |
| 11140 | * VM/RegisterFileStack.cpp: |
| 11141 | (KJS::RegisterFileStack::~RegisterFileStack): |
| 11142 | (KJS::RegisterFileStack::popRegisterFile): |
| 11143 | * VM/RegisterFileStack.h: |
| 11144 | |
| 11145 | 2008-04-27 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 11146 | |
| 11147 | Reviewed by Maciej. |
| 11148 | |
| 11149 | Bug 18746: SQUIRRELFISH: indirect eval used when direct eval should be used |
| 11150 | <https://bugs.webkit.org/show_bug.cgi?id=18746> |
| 11151 | |
| 11152 | Change the base to the correct value of the 'this' object after the direct |
| 11153 | eval test instead of before. |
| 11154 | |
| 11155 | Fixes 5 layout tests. |
| 11156 | |
| 11157 | * VM/Machine.cpp: |
| 11158 | (KJS::Machine::privateExecute): |
| 11159 | * kjs/nodes.cpp: |
| 11160 | (KJS::EvalFunctionCallNode::emitCode): |
| 11161 | |
| 11162 | 2008-04-26 Maciej Stachowiak <mjs@apple.com> |
| 11163 | |
| 11164 | Reviewed by Oliver. |
| 11165 | |
| 11166 | - document all property getting, setting and deleting opcodes |
| 11167 | |
| 11168 | (And fix function parameter names to match corresponding opcode parameter names.) |
| 11169 | |
| 11170 | * VM/CodeGenerator.cpp: |
| 11171 | (KJS::CodeGenerator::emitResolve): |
| 11172 | (KJS::CodeGenerator::emitResolveBase): |
| 11173 | (KJS::CodeGenerator::emitResolveBaseAndProperty): |
| 11174 | (KJS::CodeGenerator::emitResolveBaseAndFunc): |
| 11175 | (KJS::CodeGenerator::emitGetPropId): |
| 11176 | (KJS::CodeGenerator::emitPutPropId): |
| 11177 | (KJS::CodeGenerator::emitDeletePropId): |
| 11178 | (KJS::CodeGenerator::emitPutPropVal): |
| 11179 | * VM/CodeGenerator.h: |
| 11180 | * VM/Machine.cpp: |
| 11181 | (KJS::resolve): |
| 11182 | (KJS::resolveBase): |
| 11183 | (KJS::resolveBaseAndProperty): |
| 11184 | (KJS::resolveBaseAndFunc): |
| 11185 | (KJS::Machine::privateExecute): |
| 11186 | * kjs/nodes.cpp: |
| 11187 | (KJS::ResolveNode::emitCode): |
| 11188 | (KJS::ArrayNode::emitCode): |
| 11189 | (KJS::PropertyListNode::emitCode): |
| 11190 | (KJS::BracketAccessorNode::emitCode): |
| 11191 | (KJS::EvalFunctionCallNode::emitCode): |
| 11192 | (KJS::FunctionCallResolveNode::emitCode): |
| 11193 | (KJS::FunctionCallBracketNode::emitCode): |
| 11194 | (KJS::PostIncResolveNode::emitCode): |
| 11195 | (KJS::PostDecResolveNode::emitCode): |
| 11196 | (KJS::PostIncBracketNode::emitCode): |
| 11197 | (KJS::PostDecBracketNode::emitCode): |
| 11198 | (KJS::PostIncDotNode::emitCode): |
| 11199 | (KJS::PostDecDotNode::emitCode): |
| 11200 | (KJS::DeleteResolveNode::emitCode): |
| 11201 | (KJS::TypeOfResolveNode::emitCode): |
| 11202 | (KJS::PreIncResolveNode::emitCode): |
| 11203 | (KJS::PreDecResolveNode::emitCode): |
| 11204 | (KJS::PreIncBracketNode::emitCode): |
| 11205 | (KJS::PreDecBracketNode::emitCode): |
| 11206 | (KJS::AssignResolveNode::emitCode): |
| 11207 | (KJS::AssignDotNode::emitCode): |
| 11208 | (KJS::ReadModifyDotNode::emitCode): |
| 11209 | (KJS::AssignBracketNode::emitCode): |
| 11210 | (KJS::ReadModifyBracketNode::emitCode): |
| 11211 | (KJS::ConstDeclNode::emitCodeSingle): |
| 11212 | |
| 11213 | 2008-04-26 Oliver Hunt <oliver@apple.com> |
| 11214 | |
| 11215 | Reviewed by Maciej. |
| 11216 | |
| 11217 | Bug 18628: SQUIRRELFISH: need to support recursion limit |
| 11218 | <https://bugs.webkit.org/show_bug.cgi?id=18628> |
| 11219 | |
| 11220 | Basically completes recursion limiting. There is still some |
| 11221 | tuning we may want to do to make things better in the face of |
| 11222 | very bad code, but certainly nothing worse than anything already |
| 11223 | possible in trunk. |
| 11224 | |
| 11225 | Also fixes a WebKit test by fixing the exception text :D |
| 11226 | |
| 11227 | * JavaScriptCore.exp: |
| 11228 | * VM/ExceptionHelpers.cpp: |
| 11229 | * VM/Machine.cpp: |
| 11230 | (KJS::Machine::execute): |
| 11231 | * VM/RegisterFile.cpp: |
| 11232 | (KJS::RegisterFile::growBuffer): |
| 11233 | (KJS::RegisterFile::addGlobalSlots): |
| 11234 | * VM/RegisterFile.h: |
| 11235 | (KJS::RegisterFile::grow): |
| 11236 | (KJS::RegisterFile::uncheckedGrow): |
| 11237 | * VM/RegisterFileStack.cpp: |
| 11238 | (KJS::RegisterFileStack::pushRegisterFile): |
| 11239 | * VM/RegisterFileStack.h: |
| 11240 | |
| 11241 | 2008-04-25 Oliver Hunt <oliver@apple.com> |
| 11242 | |
| 11243 | Reviewed by Geoff. |
| 11244 | |
| 11245 | Bug 18628: SQUIRRELFISH: need to support recursion limit |
| 11246 | <https://bugs.webkit.org/show_bug.cgi?id=18628> |
| 11247 | |
| 11248 | Put a limit on the level of reentry recursion. 128 levels of re-entrant recursion |
| 11249 | seems reasonable as it is greater than the old eval limit, and a long way short of |
| 11250 | the reentry depth needed to overflow the stack. |
| 11251 | |
| 11252 | * VM/Machine.cpp: |
| 11253 | (KJS::Machine::execute): |
| 11254 | * VM/Machine.h: |
| 11255 | |
| 11256 | 2008-04-25 Geoffrey Garen <ggaren@apple.com> |
| 11257 | |
| 11258 | Reviewed by Sam Weinig. |
| 11259 | |
| 11260 | A tiny bit of cleanup to the regexp code. |
| 11261 | |
| 11262 | Removed some static_cast. |
| 11263 | |
| 11264 | Removed createRegExpImp because it's no longer used. |
| 11265 | |
| 11266 | 2008-04-25 Oliver Hunt <oliver@apple.com> |
| 11267 | |
| 11268 | Reviewed by Maciej. |
| 11269 | |
| 11270 | Bug 18736: SQUIRRELFISH: switch statements with no default have incorrect codegen |
| 11271 | <https://bugs.webkit.org/show_bug.cgi?id=18736> |
| 11272 | |
| 11273 | Ensure the "default" target is correct in the absence of an explicit default handler. |
| 11274 | |
| 11275 | * kjs/nodes.cpp: |
| 11276 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 11277 | |
| 11278 | 2008-04-25 Oliver Hunt <oliver@apple.com> |
| 11279 | |
| 11280 | Reviewed by Maciej. |
| 11281 | |
| 11282 | Bug 18628: SQUIRRELFISH: need to support recursion limit |
| 11283 | <https://bugs.webkit.org/show_bug.cgi?id=18628> |
| 11284 | |
| 11285 | More bounds checking. |
| 11286 | |
| 11287 | * VM/Machine.cpp: |
| 11288 | (KJS::Machine::execute): |
| 11289 | * VM/RegisterFile.cpp: |
| 11290 | (KJS::RegisterFile::growBuffer): |
| 11291 | * VM/RegisterFile.h: |
| 11292 | |
| 11293 | 2008-04-25 Maciej Stachowiak <mjs@apple.com> |
| 11294 | |
| 11295 | Reviewed by Oliver. |
| 11296 | |
| 11297 | - fix signal catching magic |
| 11298 | |
| 11299 | The signal handlers are restored to _exit but are only set when |
| 11300 | running under run-javascriptcore-tests. fprintf from a signal |
| 11301 | handler is not safe. |
| 11302 | |
| 11303 | * kjs/testkjs.cpp: |
| 11304 | (main): |
| 11305 | (parseArguments): |
| 11306 | * tests/mozilla/jsDriver.pl: |
| 11307 | |
| 11308 | 2008-04-25 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 11309 | |
| 11310 | Reviewed by Maciej. |
| 11311 | |
| 11312 | Bug 18732: SQUIRRELFISH: exceptions thrown by native constructors are ignored |
| 11313 | <https://bugs.webkit.org/show_bug.cgi?id=18732> |
| 11314 | |
| 11315 | Fixes another regression test. |
| 11316 | |
| 11317 | * VM/Machine.cpp: |
| 11318 | (KJS::Machine::privateExecute): |
| 11319 | |
| 11320 | 2008-04-25 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 11321 | |
| 11322 | Reviewed by Maciej. |
| 11323 | |
| 11324 | Bug 18728: SQUIRRELFISH: invalid regular expression constants should throw exceptions |
| 11325 | <https://bugs.webkit.org/show_bug.cgi?id=18728> |
| 11326 | |
| 11327 | Fixes another regression test. |
| 11328 | |
| 11329 | * kjs/nodes.cpp: |
| 11330 | (KJS::RegExpNode::emitCode): |
| 11331 | |
| 11332 | 2008-04-24 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 11333 | |
| 11334 | Reviewed by Geoffrey Garen. |
| 11335 | |
| 11336 | Bug 18735: SQUIRRELFISH: closures are sometimes given an incorrect 'this' value when called |
| 11337 | <https://bugs.webkit.org/show_bug.cgi?id=18735> |
| 11338 | |
| 11339 | The overloaded toThisObject method was not copied over to JSActivation. |
| 11340 | |
| 11341 | Fixes two regression tests. |
| 11342 | |
| 11343 | * kjs/JSActivation.cpp: |
| 11344 | (KJS::JSActivation::toThisObject): |
| 11345 | * kjs/JSActivation.h: |
| 11346 | |
| 11347 | 2008-04-24 Geoffrey Garen <ggaren@apple.com> |
| 11348 | |
| 11349 | Reviewed by Oliver Hunt. |
| 11350 | |
| 11351 | Added support for arguments.callee. |
| 11352 | |
| 11353 | 2008-04-24 Oliver Hunt <oliver@apple.com> |
| 11354 | |
| 11355 | Reviewed by Maciej. |
| 11356 | |
| 11357 | Bug 18628: SQUIRRELFISH: need to support recursion limit |
| 11358 | <https://bugs.webkit.org/show_bug.cgi?id=18628> |
| 11359 | |
| 11360 | Partial fix -- this gets us some of the required bounds checking, but not |
| 11361 | complete coverage. But it does manage to do them without regressing :D |
| 11362 | |
| 11363 | * VM/ExceptionHelpers.cpp: |
| 11364 | (KJS::createError): |
| 11365 | (KJS::createStackOverflowError): |
| 11366 | * VM/ExceptionHelpers.h: |
| 11367 | * VM/Machine.cpp: |
| 11368 | (KJS::slideRegisterWindowForCall): |
| 11369 | (KJS::Machine::execute): |
| 11370 | (KJS::Machine::privateExecute): |
| 11371 | * VM/RegisterFile.cpp: |
| 11372 | * VM/RegisterFile.h: |
| 11373 | (KJS::RegisterFile::): |
| 11374 | (KJS::RegisterFile::RegisterFile): |
| 11375 | (KJS::RegisterFile::grow): |
| 11376 | |
| 11377 | 2008-04-24 Geoffrey Garen <ggaren@apple.com> |
| 11378 | |
| 11379 | Reviewed by Oliver Hunt. |
| 11380 | |
| 11381 | A tiny bit more handling of "arguments": create a real, but mostly |
| 11382 | hollow, arguments object. |
| 11383 | |
| 11384 | Fixes 2 regression tests. |
| 11385 | |
| 11386 | 2008-04-24 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 11387 | |
| 11388 | Reviewed by Oliver. |
| 11389 | |
| 11390 | Bug 18717: SQUIRRELFISH: eval returns the wrong value for a variable declaration statement |
| 11391 | <https://bugs.webkit.org/show_bug.cgi?id=18717> |
| 11392 | |
| 11393 | Fixes a regression test, but exposes the failure of another due to the |
| 11394 | lack of getters and setters. |
| 11395 | |
| 11396 | * kjs/nodes.cpp: |
| 11397 | (KJS::ConstDeclNode::emitCodeSingle): |
| 11398 | (KJS::ConstDeclNode::emitCode): |
| 11399 | (KJS::ConstStatementNode::emitCode): |
| 11400 | (KJS::VarStatementNode::emitCode): |
| 11401 | * kjs/nodes.h: |
| 11402 | |
| 11403 | 2008-04-24 Geoffrey Garen <ggaren@apple.com> |
| 11404 | |
| 11405 | Reviewed by Sam Weinig. |
| 11406 | |
| 11407 | Print a CRASH statement when crashing, so test failures are not a |
| 11408 | mystery. |
| 11409 | |
| 11410 | * kjs/testkjs.cpp: |
| 11411 | (handleCrash): |
| 11412 | (main): |
| 11413 | |
| 11414 | 2008-04-24 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 11415 | |
| 11416 | Reviewed by Geoffrey Garen. |
| 11417 | |
| 11418 | Bug 18716: SQUIRRELFISH: typeof should return undefined for an undefined variable reference |
| 11419 | <https://bugs.webkit.org/show_bug.cgi?id=18716> |
| 11420 | |
| 11421 | This fixes 2 more regression tests. |
| 11422 | |
| 11423 | * kjs/nodes.cpp: |
| 11424 | (KJS::TypeOfResolveNode::emitCode): |
| 11425 | |
| 11426 | 2008-04-24 Geoffrey Garen <ggaren@apple.com> |
| 11427 | |
| 11428 | Reviewed by Sam Weinig. |
| 11429 | |
| 11430 | Put the callee in the call frame. |
| 11431 | |
| 11432 | Necessary in order to support "arguments" and "arguments.callee". |
| 11433 | |
| 11434 | Also fixes a latent GC bug, where an executing function could be |
| 11435 | subject to GC if the register holding it were overwritten. Here's |
| 11436 | an example that would have caused problems: |
| 11437 | |
| 11438 | function f() |
| 11439 | { |
| 11440 | // Flood the machine stack to eliminate any old pointers to f. |
| 11441 | g.call({}); |
| 11442 | |
| 11443 | // Overwrite f in the register file. |
| 11444 | f = 1; |
| 11445 | |
| 11446 | // Force a GC. |
| 11447 | for (var i = 0; i < 5000; ++i) { |
| 11448 | ({}); |
| 11449 | } |
| 11450 | |
| 11451 | // Welcome to crash-ville. |
| 11452 | } |
| 11453 | |
| 11454 | function g() |
| 11455 | { |
| 11456 | } |
| 11457 | |
| 11458 | f(); |
| 11459 | |
| 11460 | * VM/Machine.h: Changed the order of arguments to |
| 11461 | execute(FunctionBodyNode*...) to match the other execute functions. |
| 11462 | * kjs/function.cpp: Updated to match new argument requirements from |
| 11463 | execute(FunctionBodyNode*...). Renamed newObj to thisObj to match the |
| 11464 | rest of JavaScriptCore. |
| 11465 | |
| 11466 | SunSpider reports no change. |
| 11467 | |
| 11468 | 2008-04-23 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 11469 | |
| 11470 | Reviewed by Maciej. |
| 11471 | |
| 11472 | Bug 18707: SQUIRRELFISH: eval always performs toString() on its argument |
| 11473 | <https://bugs.webkit.org/show_bug.cgi?id=18707> |
| 11474 | |
| 11475 | This fixes 4 more regression tests. |
| 11476 | |
| 11477 | * VM/Machine.cpp: |
| 11478 | (KJS::eval): |
| 11479 | |
| 11480 | 2008-04-23 Maciej Stachowiak <mjs@apple.com> |
| 11481 | |
| 11482 | Reviewed by Oliver. |
| 11483 | |
| 11484 | - fix logic bug in SegmentedVector::grow which would sometimes fail to resize a segment when needed |
| 11485 | |
| 11486 | Fixes 3 JSC tests. |
| 11487 | |
| 11488 | * VM/SegmentedVector.h: |
| 11489 | (KJS::SegmentedVector::grow): |
| 11490 | |
| 11491 | 2008-04-23 Geoffrey Garen <ggaren@apple.com> |
| 11492 | |
| 11493 | Reviewed by Maciej Stachowiak. |
| 11494 | |
| 11495 | Degenerate handling of "arguments" as a property of the activation |
| 11496 | object. Currently, we just return a vanilla object. |
| 11497 | |
| 11498 | SunSpider reports no change. |
| 11499 | |
| 11500 | Fixes: |
| 11501 | |
| 11502 | ecma_3/Function/regress-94506.js. |
| 11503 | |
| 11504 | Reveals to have been secretly broken: |
| 11505 | |
| 11506 | ecma_3/Function/15.3.4.3-1.js |
| 11507 | ecma_3/Function/15.3.4.4-1.js |
| 11508 | |
| 11509 | These tests were passing incorrectly. testkjs creates a global array |
| 11510 | named "arguments" to hold command-line arguments. That array was |
| 11511 | tricking these tests into thinking that an arguments object with length |
| 11512 | 0 had been created. Since our new vanilla object shadows the global |
| 11513 | property named arguments, that object no longer fools these tests into |
| 11514 | passing. |
| 11515 | |
| 11516 | Net change: +1 failing test. |
| 11517 | |
| 11518 | * kjs/AllInOneFile.cpp: Had to put JSActivation.cpp into AllInOneFile.cpp |
| 11519 | to solve a surprising 8.6% regression in bitops-3bit-bits-in-byte. |
| 11520 | |
| 11521 | 2008-04-23 Maciej Stachowiak <mjs@apple.com> |
| 11522 | |
| 11523 | Reviewed by Oliver. |
| 11524 | |
| 11525 | - save and restore callFrame |
| 11526 | |
| 11527 | * VM/Machine.cpp: |
| 11528 | (KJS::slideRegisterWindowForCall): |
| 11529 | (KJS::Machine::execute): |
| 11530 | (KJS::Machine::privateExecute): |
| 11531 | * kjs/testkjs.cpp: |
| 11532 | (main): |
| 11533 | |
| 11534 | 2008-04-23 Geoffrey Garen <ggaren@apple.com> |
| 11535 | |
| 11536 | Reviewed by Maciej Stachowiak. |
| 11537 | |
| 11538 | Fixed scopes for named function expressions. |
| 11539 | |
| 11540 | Fixes one regression test. |
| 11541 | |
| 11542 | Two changes here: |
| 11543 | |
| 11544 | (1) The function's name is supposed to have attributes DontDelete, |
| 11545 | ReadOnly, regardless of the type of code executing. |
| 11546 | |
| 11547 | (2) Push the name object on the function's scope chain, rather than |
| 11548 | the ExecState's scope chain because, well, that's where it belongs. |
| 11549 | |
| 11550 | 2008-04-23 Geoffrey Garen <ggaren@apple.com> |
| 11551 | |
| 11552 | Reviewed by Oliver Hunt. |
| 11553 | |
| 11554 | Inlined JSObject::putDirect, for a .4% SunSpider speedup. |
| 11555 | |
| 11556 | I did this as a first step toward removing nodes.cpp from |
| 11557 | AllInOneFile.cpp, but I'm putting that larger project aside for now. |
| 11558 | |
| 11559 | 2008-04-23 Maciej Stachowiak <mjs@apple.com> |
| 11560 | |
| 11561 | Rubber stamped by Geoff. |
| 11562 | |
| 11563 | - add OldInterpreterExecState class and use it in dead code |
| 11564 | |
| 11565 | This will allow removing things from the real ExecState class |
| 11566 | without having to figure out how to remove all this code without |
| 11567 | getting a perf regression. |
| 11568 | |
| 11569 | * kjs/nodes.cpp: |
| 11570 | (KJS::ExpressionNode::evaluateToNumber): |
| 11571 | (KJS::ExpressionNode::evaluateToBoolean): |
| 11572 | (KJS::ExpressionNode::evaluateToInt32): |
| 11573 | (KJS::ExpressionNode::evaluateToUInt32): |
| 11574 | (KJS::Node::setErrorCompletion): |
| 11575 | (KJS::Node::throwError): |
| 11576 | (KJS::Node::throwUndefinedVariableError): |
| 11577 | (KJS::Node::handleException): |
| 11578 | (KJS::Node::rethrowException): |
| 11579 | (KJS::BreakpointCheckStatement::execute): |
| 11580 | (KJS::BreakpointCheckStatement::optimizeVariableAccess): |
| 11581 | (KJS::NullNode::evaluate): |
| 11582 | (KJS::FalseNode::evaluate): |
| 11583 | (KJS::TrueNode::evaluate): |
| 11584 | (KJS::NumberNode::evaluate): |
| 11585 | (KJS::NumberNode::evaluateToNumber): |
| 11586 | (KJS::NumberNode::evaluateToBoolean): |
| 11587 | (KJS::NumberNode::evaluateToInt32): |
| 11588 | (KJS::NumberNode::evaluateToUInt32): |
| 11589 | (KJS::ImmediateNumberNode::evaluate): |
| 11590 | (KJS::ImmediateNumberNode::evaluateToInt32): |
| 11591 | (KJS::ImmediateNumberNode::evaluateToUInt32): |
| 11592 | (KJS::StringNode::evaluate): |
| 11593 | (KJS::StringNode::evaluateToNumber): |
| 11594 | (KJS::StringNode::evaluateToBoolean): |
| 11595 | (KJS::RegExpNode::evaluate): |
| 11596 | (KJS::ThisNode::evaluate): |
| 11597 | (KJS::ResolveNode::inlineEvaluate): |
| 11598 | (KJS::ResolveNode::evaluate): |
| 11599 | (KJS::ResolveNode::evaluateToNumber): |
| 11600 | (KJS::ResolveNode::evaluateToBoolean): |
| 11601 | (KJS::ResolveNode::evaluateToInt32): |
| 11602 | (KJS::ResolveNode::evaluateToUInt32): |
| 11603 | (KJS::getSymbolTableEntry): |
| 11604 | (KJS::ResolveNode::optimizeVariableAccess): |
| 11605 | (KJS::LocalVarAccessNode::inlineEvaluate): |
| 11606 | (KJS::LocalVarAccessNode::evaluate): |
| 11607 | (KJS::LocalVarAccessNode::evaluateToNumber): |
| 11608 | (KJS::LocalVarAccessNode::evaluateToBoolean): |
| 11609 | (KJS::LocalVarAccessNode::evaluateToInt32): |
| 11610 | (KJS::LocalVarAccessNode::evaluateToUInt32): |
| 11611 | (KJS::getNonLocalSymbol): |
| 11612 | (KJS::ScopedVarAccessNode::inlineEvaluate): |
| 11613 | (KJS::ScopedVarAccessNode::evaluate): |
| 11614 | (KJS::ScopedVarAccessNode::evaluateToNumber): |
| 11615 | (KJS::ScopedVarAccessNode::evaluateToBoolean): |
| 11616 | (KJS::ScopedVarAccessNode::evaluateToInt32): |
| 11617 | (KJS::ScopedVarAccessNode::evaluateToUInt32): |
| 11618 | (KJS::NonLocalVarAccessNode::inlineEvaluate): |
| 11619 | (KJS::NonLocalVarAccessNode::evaluate): |
| 11620 | (KJS::NonLocalVarAccessNode::evaluateToNumber): |
| 11621 | (KJS::NonLocalVarAccessNode::evaluateToBoolean): |
| 11622 | (KJS::NonLocalVarAccessNode::evaluateToInt32): |
| 11623 | (KJS::NonLocalVarAccessNode::evaluateToUInt32): |
| 11624 | (KJS::ElementNode::optimizeVariableAccess): |
| 11625 | (KJS::ElementNode::evaluate): |
| 11626 | (KJS::ArrayNode::optimizeVariableAccess): |
| 11627 | (KJS::ArrayNode::evaluate): |
| 11628 | (KJS::ObjectLiteralNode::optimizeVariableAccess): |
| 11629 | (KJS::ObjectLiteralNode::evaluate): |
| 11630 | (KJS::PropertyListNode::optimizeVariableAccess): |
| 11631 | (KJS::PropertyListNode::evaluate): |
| 11632 | (KJS::PropertyNode::optimizeVariableAccess): |
| 11633 | (KJS::PropertyNode::evaluate): |
| 11634 | (KJS::BracketAccessorNode::optimizeVariableAccess): |
| 11635 | (KJS::BracketAccessorNode::inlineEvaluate): |
| 11636 | (KJS::BracketAccessorNode::evaluate): |
| 11637 | (KJS::BracketAccessorNode::evaluateToNumber): |
| 11638 | (KJS::BracketAccessorNode::evaluateToBoolean): |
| 11639 | (KJS::BracketAccessorNode::evaluateToInt32): |
| 11640 | (KJS::BracketAccessorNode::evaluateToUInt32): |
| 11641 | (KJS::DotAccessorNode::optimizeVariableAccess): |
| 11642 | (KJS::DotAccessorNode::inlineEvaluate): |
| 11643 | (KJS::DotAccessorNode::evaluate): |
| 11644 | (KJS::DotAccessorNode::evaluateToNumber): |
| 11645 | (KJS::DotAccessorNode::evaluateToBoolean): |
| 11646 | (KJS::DotAccessorNode::evaluateToInt32): |
| 11647 | (KJS::DotAccessorNode::evaluateToUInt32): |
| 11648 | (KJS::ArgumentListNode::optimizeVariableAccess): |
| 11649 | (KJS::ArgumentListNode::evaluateList): |
| 11650 | (KJS::ArgumentsNode::optimizeVariableAccess): |
| 11651 | (KJS::NewExprNode::optimizeVariableAccess): |
| 11652 | (KJS::NewExprNode::inlineEvaluate): |
| 11653 | (KJS::NewExprNode::evaluate): |
| 11654 | (KJS::NewExprNode::evaluateToNumber): |
| 11655 | (KJS::NewExprNode::evaluateToBoolean): |
| 11656 | (KJS::NewExprNode::evaluateToInt32): |
| 11657 | (KJS::NewExprNode::evaluateToUInt32): |
| 11658 | (KJS::ExpressionNode::resolveAndCall): |
| 11659 | (KJS::EvalFunctionCallNode::optimizeVariableAccess): |
| 11660 | (KJS::EvalFunctionCallNode::evaluate): |
| 11661 | (KJS::FunctionCallValueNode::optimizeVariableAccess): |
| 11662 | (KJS::FunctionCallValueNode::evaluate): |
| 11663 | (KJS::FunctionCallResolveNode::optimizeVariableAccess): |
| 11664 | (KJS::FunctionCallResolveNode::inlineEvaluate): |
| 11665 | (KJS::FunctionCallResolveNode::evaluate): |
| 11666 | (KJS::FunctionCallResolveNode::evaluateToNumber): |
| 11667 | (KJS::FunctionCallResolveNode::evaluateToBoolean): |
| 11668 | (KJS::FunctionCallResolveNode::evaluateToInt32): |
| 11669 | (KJS::FunctionCallResolveNode::evaluateToUInt32): |
| 11670 | (KJS::LocalVarFunctionCallNode::inlineEvaluate): |
| 11671 | (KJS::LocalVarFunctionCallNode::evaluate): |
| 11672 | (KJS::LocalVarFunctionCallNode::evaluateToNumber): |
| 11673 | (KJS::LocalVarFunctionCallNode::evaluateToBoolean): |
| 11674 | (KJS::LocalVarFunctionCallNode::evaluateToInt32): |
| 11675 | (KJS::LocalVarFunctionCallNode::evaluateToUInt32): |
| 11676 | (KJS::ScopedVarFunctionCallNode::inlineEvaluate): |
| 11677 | (KJS::ScopedVarFunctionCallNode::evaluate): |
| 11678 | (KJS::ScopedVarFunctionCallNode::evaluateToNumber): |
| 11679 | (KJS::ScopedVarFunctionCallNode::evaluateToBoolean): |
| 11680 | (KJS::ScopedVarFunctionCallNode::evaluateToInt32): |
| 11681 | (KJS::ScopedVarFunctionCallNode::evaluateToUInt32): |
| 11682 | (KJS::NonLocalVarFunctionCallNode::inlineEvaluate): |
| 11683 | (KJS::NonLocalVarFunctionCallNode::evaluate): |
| 11684 | (KJS::NonLocalVarFunctionCallNode::evaluateToNumber): |
| 11685 | (KJS::NonLocalVarFunctionCallNode::evaluateToBoolean): |
| 11686 | (KJS::NonLocalVarFunctionCallNode::evaluateToInt32): |
| 11687 | (KJS::NonLocalVarFunctionCallNode::evaluateToUInt32): |
| 11688 | (KJS::FunctionCallBracketNode::optimizeVariableAccess): |
| 11689 | (KJS::FunctionCallBracketNode::evaluate): |
| 11690 | (KJS::FunctionCallDotNode::optimizeVariableAccess): |
| 11691 | (KJS::FunctionCallDotNode::inlineEvaluate): |
| 11692 | (KJS::FunctionCallDotNode::evaluate): |
| 11693 | (KJS::FunctionCallDotNode::evaluateToNumber): |
| 11694 | (KJS::FunctionCallDotNode::evaluateToBoolean): |
| 11695 | (KJS::FunctionCallDotNode::evaluateToInt32): |
| 11696 | (KJS::FunctionCallDotNode::evaluateToUInt32): |
| 11697 | (KJS::PostIncResolveNode::optimizeVariableAccess): |
| 11698 | (KJS::PostIncResolveNode::evaluate): |
| 11699 | (KJS::PostIncLocalVarNode::evaluate): |
| 11700 | (KJS::PostDecResolveNode::optimizeVariableAccess): |
| 11701 | (KJS::PostDecResolveNode::evaluate): |
| 11702 | (KJS::PostDecLocalVarNode::evaluate): |
| 11703 | (KJS::PostDecLocalVarNode::inlineEvaluateToNumber): |
| 11704 | (KJS::PostDecLocalVarNode::evaluateToNumber): |
| 11705 | (KJS::PostDecLocalVarNode::evaluateToBoolean): |
| 11706 | (KJS::PostDecLocalVarNode::evaluateToInt32): |
| 11707 | (KJS::PostDecLocalVarNode::evaluateToUInt32): |
| 11708 | (KJS::PostfixBracketNode::optimizeVariableAccess): |
| 11709 | (KJS::PostIncBracketNode::evaluate): |
| 11710 | (KJS::PostDecBracketNode::evaluate): |
| 11711 | (KJS::PostfixDotNode::optimizeVariableAccess): |
| 11712 | (KJS::PostIncDotNode::evaluate): |
| 11713 | (KJS::PostDecDotNode::evaluate): |
| 11714 | (KJS::PostfixErrorNode::evaluate): |
| 11715 | (KJS::DeleteResolveNode::optimizeVariableAccess): |
| 11716 | (KJS::DeleteResolveNode::evaluate): |
| 11717 | (KJS::LocalVarDeleteNode::evaluate): |
| 11718 | (KJS::DeleteBracketNode::optimizeVariableAccess): |
| 11719 | (KJS::DeleteBracketNode::evaluate): |
| 11720 | (KJS::DeleteDotNode::optimizeVariableAccess): |
| 11721 | (KJS::DeleteDotNode::evaluate): |
| 11722 | (KJS::DeleteValueNode::optimizeVariableAccess): |
| 11723 | (KJS::DeleteValueNode::evaluate): |
| 11724 | (KJS::VoidNode::optimizeVariableAccess): |
| 11725 | (KJS::VoidNode::evaluate): |
| 11726 | (KJS::TypeOfValueNode::optimizeVariableAccess): |
| 11727 | (KJS::TypeOfResolveNode::optimizeVariableAccess): |
| 11728 | (KJS::LocalVarTypeOfNode::evaluate): |
| 11729 | (KJS::TypeOfResolveNode::evaluate): |
| 11730 | (KJS::TypeOfValueNode::evaluate): |
| 11731 | (KJS::PreIncResolveNode::optimizeVariableAccess): |
| 11732 | (KJS::PreIncLocalVarNode::evaluate): |
| 11733 | (KJS::PreIncResolveNode::evaluate): |
| 11734 | (KJS::PreDecResolveNode::optimizeVariableAccess): |
| 11735 | (KJS::PreDecLocalVarNode::evaluate): |
| 11736 | (KJS::PreDecResolveNode::evaluate): |
| 11737 | (KJS::PreIncConstNode::evaluate): |
| 11738 | (KJS::PreDecConstNode::evaluate): |
| 11739 | (KJS::PostIncConstNode::evaluate): |
| 11740 | (KJS::PostDecConstNode::evaluate): |
| 11741 | (KJS::PrefixBracketNode::optimizeVariableAccess): |
| 11742 | (KJS::PreIncBracketNode::evaluate): |
| 11743 | (KJS::PreDecBracketNode::evaluate): |
| 11744 | (KJS::PrefixDotNode::optimizeVariableAccess): |
| 11745 | (KJS::PreIncDotNode::evaluate): |
| 11746 | (KJS::PreDecDotNode::evaluate): |
| 11747 | (KJS::PrefixErrorNode::evaluate): |
| 11748 | (KJS::UnaryPlusNode::optimizeVariableAccess): |
| 11749 | (KJS::UnaryPlusNode::evaluate): |
| 11750 | (KJS::UnaryPlusNode::evaluateToBoolean): |
| 11751 | (KJS::UnaryPlusNode::evaluateToNumber): |
| 11752 | (KJS::UnaryPlusNode::evaluateToInt32): |
| 11753 | (KJS::UnaryPlusNode::evaluateToUInt32): |
| 11754 | (KJS::NegateNode::optimizeVariableAccess): |
| 11755 | (KJS::NegateNode::evaluate): |
| 11756 | (KJS::NegateNode::evaluateToNumber): |
| 11757 | (KJS::BitwiseNotNode::optimizeVariableAccess): |
| 11758 | (KJS::BitwiseNotNode::inlineEvaluateToInt32): |
| 11759 | (KJS::BitwiseNotNode::evaluate): |
| 11760 | (KJS::BitwiseNotNode::evaluateToNumber): |
| 11761 | (KJS::BitwiseNotNode::evaluateToBoolean): |
| 11762 | (KJS::BitwiseNotNode::evaluateToInt32): |
| 11763 | (KJS::BitwiseNotNode::evaluateToUInt32): |
| 11764 | (KJS::LogicalNotNode::optimizeVariableAccess): |
| 11765 | (KJS::LogicalNotNode::evaluate): |
| 11766 | (KJS::LogicalNotNode::evaluateToBoolean): |
| 11767 | (KJS::MultNode::optimizeVariableAccess): |
| 11768 | (KJS::MultNode::inlineEvaluateToNumber): |
| 11769 | (KJS::MultNode::evaluate): |
| 11770 | (KJS::MultNode::evaluateToNumber): |
| 11771 | (KJS::MultNode::evaluateToBoolean): |
| 11772 | (KJS::MultNode::evaluateToInt32): |
| 11773 | (KJS::MultNode::evaluateToUInt32): |
| 11774 | (KJS::DivNode::optimizeVariableAccess): |
| 11775 | (KJS::DivNode::inlineEvaluateToNumber): |
| 11776 | (KJS::DivNode::evaluate): |
| 11777 | (KJS::DivNode::evaluateToNumber): |
| 11778 | (KJS::DivNode::evaluateToInt32): |
| 11779 | (KJS::DivNode::evaluateToUInt32): |
| 11780 | (KJS::ModNode::optimizeVariableAccess): |
| 11781 | (KJS::ModNode::inlineEvaluateToNumber): |
| 11782 | (KJS::ModNode::evaluate): |
| 11783 | (KJS::ModNode::evaluateToNumber): |
| 11784 | (KJS::ModNode::evaluateToBoolean): |
| 11785 | (KJS::ModNode::evaluateToInt32): |
| 11786 | (KJS::ModNode::evaluateToUInt32): |
| 11787 | (KJS::throwOutOfMemoryErrorToNumber): |
| 11788 | (KJS::addSlowCase): |
| 11789 | (KJS::addSlowCaseToNumber): |
| 11790 | (KJS::add): |
| 11791 | (KJS::addToNumber): |
| 11792 | (KJS::AddNode::optimizeVariableAccess): |
| 11793 | (KJS::AddNode::evaluate): |
| 11794 | (KJS::AddNode::inlineEvaluateToNumber): |
| 11795 | (KJS::AddNode::evaluateToNumber): |
| 11796 | (KJS::AddNode::evaluateToInt32): |
| 11797 | (KJS::AddNode::evaluateToUInt32): |
| 11798 | (KJS::AddNumbersNode::inlineEvaluateToNumber): |
| 11799 | (KJS::AddNumbersNode::evaluate): |
| 11800 | (KJS::AddNumbersNode::evaluateToNumber): |
| 11801 | (KJS::AddNumbersNode::evaluateToInt32): |
| 11802 | (KJS::AddNumbersNode::evaluateToUInt32): |
| 11803 | (KJS::AddStringsNode::evaluate): |
| 11804 | (KJS::AddStringLeftNode::evaluate): |
| 11805 | (KJS::AddStringRightNode::evaluate): |
| 11806 | (KJS::SubNode::optimizeVariableAccess): |
| 11807 | (KJS::SubNode::inlineEvaluateToNumber): |
| 11808 | (KJS::SubNode::evaluate): |
| 11809 | (KJS::SubNode::evaluateToNumber): |
| 11810 | (KJS::SubNode::evaluateToInt32): |
| 11811 | (KJS::SubNode::evaluateToUInt32): |
| 11812 | (KJS::LeftShiftNode::optimizeVariableAccess): |
| 11813 | (KJS::LeftShiftNode::inlineEvaluateToInt32): |
| 11814 | (KJS::LeftShiftNode::evaluate): |
| 11815 | (KJS::LeftShiftNode::evaluateToNumber): |
| 11816 | (KJS::LeftShiftNode::evaluateToInt32): |
| 11817 | (KJS::LeftShiftNode::evaluateToUInt32): |
| 11818 | (KJS::RightShiftNode::optimizeVariableAccess): |
| 11819 | (KJS::RightShiftNode::inlineEvaluateToInt32): |
| 11820 | (KJS::RightShiftNode::evaluate): |
| 11821 | (KJS::RightShiftNode::evaluateToNumber): |
| 11822 | (KJS::RightShiftNode::evaluateToInt32): |
| 11823 | (KJS::RightShiftNode::evaluateToUInt32): |
| 11824 | (KJS::UnsignedRightShiftNode::optimizeVariableAccess): |
| 11825 | (KJS::UnsignedRightShiftNode::inlineEvaluateToUInt32): |
| 11826 | (KJS::UnsignedRightShiftNode::evaluate): |
| 11827 | (KJS::UnsignedRightShiftNode::evaluateToNumber): |
| 11828 | (KJS::UnsignedRightShiftNode::evaluateToInt32): |
| 11829 | (KJS::UnsignedRightShiftNode::evaluateToUInt32): |
| 11830 | (KJS::lessThan): |
| 11831 | (KJS::lessThanEq): |
| 11832 | (KJS::LessNode::optimizeVariableAccess): |
| 11833 | (KJS::LessNode::inlineEvaluateToBoolean): |
| 11834 | (KJS::LessNode::evaluate): |
| 11835 | (KJS::LessNode::evaluateToBoolean): |
| 11836 | (KJS::LessNumbersNode::inlineEvaluateToBoolean): |
| 11837 | (KJS::LessNumbersNode::evaluate): |
| 11838 | (KJS::LessNumbersNode::evaluateToBoolean): |
| 11839 | (KJS::LessStringsNode::inlineEvaluateToBoolean): |
| 11840 | (KJS::LessStringsNode::evaluate): |
| 11841 | (KJS::LessStringsNode::evaluateToBoolean): |
| 11842 | (KJS::GreaterNode::optimizeVariableAccess): |
| 11843 | (KJS::GreaterNode::inlineEvaluateToBoolean): |
| 11844 | (KJS::GreaterNode::evaluate): |
| 11845 | (KJS::GreaterNode::evaluateToBoolean): |
| 11846 | (KJS::LessEqNode::optimizeVariableAccess): |
| 11847 | (KJS::LessEqNode::inlineEvaluateToBoolean): |
| 11848 | (KJS::LessEqNode::evaluate): |
| 11849 | (KJS::LessEqNode::evaluateToBoolean): |
| 11850 | (KJS::GreaterEqNode::optimizeVariableAccess): |
| 11851 | (KJS::GreaterEqNode::inlineEvaluateToBoolean): |
| 11852 | (KJS::GreaterEqNode::evaluate): |
| 11853 | (KJS::GreaterEqNode::evaluateToBoolean): |
| 11854 | (KJS::InstanceOfNode::optimizeVariableAccess): |
| 11855 | (KJS::InstanceOfNode::evaluate): |
| 11856 | (KJS::InstanceOfNode::evaluateToBoolean): |
| 11857 | (KJS::InNode::optimizeVariableAccess): |
| 11858 | (KJS::InNode::evaluate): |
| 11859 | (KJS::InNode::evaluateToBoolean): |
| 11860 | (KJS::EqualNode::optimizeVariableAccess): |
| 11861 | (KJS::EqualNode::inlineEvaluateToBoolean): |
| 11862 | (KJS::EqualNode::evaluate): |
| 11863 | (KJS::EqualNode::evaluateToBoolean): |
| 11864 | (KJS::NotEqualNode::optimizeVariableAccess): |
| 11865 | (KJS::NotEqualNode::inlineEvaluateToBoolean): |
| 11866 | (KJS::NotEqualNode::evaluate): |
| 11867 | (KJS::NotEqualNode::evaluateToBoolean): |
| 11868 | (KJS::StrictEqualNode::optimizeVariableAccess): |
| 11869 | (KJS::StrictEqualNode::inlineEvaluateToBoolean): |
| 11870 | (KJS::StrictEqualNode::evaluate): |
| 11871 | (KJS::StrictEqualNode::evaluateToBoolean): |
| 11872 | (KJS::NotStrictEqualNode::optimizeVariableAccess): |
| 11873 | (KJS::NotStrictEqualNode::inlineEvaluateToBoolean): |
| 11874 | (KJS::NotStrictEqualNode::evaluate): |
| 11875 | (KJS::NotStrictEqualNode::evaluateToBoolean): |
| 11876 | (KJS::BitAndNode::optimizeVariableAccess): |
| 11877 | (KJS::BitAndNode::evaluate): |
| 11878 | (KJS::BitAndNode::inlineEvaluateToInt32): |
| 11879 | (KJS::BitAndNode::evaluateToNumber): |
| 11880 | (KJS::BitAndNode::evaluateToBoolean): |
| 11881 | (KJS::BitAndNode::evaluateToInt32): |
| 11882 | (KJS::BitAndNode::evaluateToUInt32): |
| 11883 | (KJS::BitXOrNode::optimizeVariableAccess): |
| 11884 | (KJS::BitXOrNode::inlineEvaluateToInt32): |
| 11885 | (KJS::BitXOrNode::evaluate): |
| 11886 | (KJS::BitXOrNode::evaluateToNumber): |
| 11887 | (KJS::BitXOrNode::evaluateToBoolean): |
| 11888 | (KJS::BitXOrNode::evaluateToInt32): |
| 11889 | (KJS::BitXOrNode::evaluateToUInt32): |
| 11890 | (KJS::BitOrNode::optimizeVariableAccess): |
| 11891 | (KJS::BitOrNode::inlineEvaluateToInt32): |
| 11892 | (KJS::BitOrNode::evaluate): |
| 11893 | (KJS::BitOrNode::evaluateToNumber): |
| 11894 | (KJS::BitOrNode::evaluateToBoolean): |
| 11895 | (KJS::BitOrNode::evaluateToInt32): |
| 11896 | (KJS::BitOrNode::evaluateToUInt32): |
| 11897 | (KJS::LogicalAndNode::optimizeVariableAccess): |
| 11898 | (KJS::LogicalAndNode::evaluate): |
| 11899 | (KJS::LogicalAndNode::evaluateToBoolean): |
| 11900 | (KJS::LogicalOrNode::optimizeVariableAccess): |
| 11901 | (KJS::LogicalOrNode::evaluate): |
| 11902 | (KJS::LogicalOrNode::evaluateToBoolean): |
| 11903 | (KJS::ConditionalNode::optimizeVariableAccess): |
| 11904 | (KJS::ConditionalNode::evaluate): |
| 11905 | (KJS::ConditionalNode::evaluateToBoolean): |
| 11906 | (KJS::ConditionalNode::evaluateToNumber): |
| 11907 | (KJS::ConditionalNode::evaluateToInt32): |
| 11908 | (KJS::ConditionalNode::evaluateToUInt32): |
| 11909 | (KJS::valueForReadModifyAssignment): |
| 11910 | (KJS::ReadModifyResolveNode::optimizeVariableAccess): |
| 11911 | (KJS::AssignResolveNode::optimizeVariableAccess): |
| 11912 | (KJS::ReadModifyLocalVarNode::evaluate): |
| 11913 | (KJS::AssignLocalVarNode::evaluate): |
| 11914 | (KJS::ReadModifyConstNode::evaluate): |
| 11915 | (KJS::AssignConstNode::evaluate): |
| 11916 | (KJS::ReadModifyResolveNode::evaluate): |
| 11917 | (KJS::AssignResolveNode::evaluate): |
| 11918 | (KJS::AssignDotNode::optimizeVariableAccess): |
| 11919 | (KJS::AssignDotNode::evaluate): |
| 11920 | (KJS::ReadModifyDotNode::optimizeVariableAccess): |
| 11921 | (KJS::ReadModifyDotNode::evaluate): |
| 11922 | (KJS::AssignErrorNode::evaluate): |
| 11923 | (KJS::AssignBracketNode::optimizeVariableAccess): |
| 11924 | (KJS::AssignBracketNode::evaluate): |
| 11925 | (KJS::ReadModifyBracketNode::optimizeVariableAccess): |
| 11926 | (KJS::ReadModifyBracketNode::evaluate): |
| 11927 | (KJS::CommaNode::optimizeVariableAccess): |
| 11928 | (KJS::CommaNode::evaluate): |
| 11929 | (KJS::ConstDeclNode::optimizeVariableAccess): |
| 11930 | (KJS::ConstDeclNode::handleSlowCase): |
| 11931 | (KJS::ConstDeclNode::evaluateSingle): |
| 11932 | (KJS::ConstDeclNode::evaluate): |
| 11933 | (KJS::ConstStatementNode::optimizeVariableAccess): |
| 11934 | (KJS::ConstStatementNode::execute): |
| 11935 | (KJS::statementListExecute): |
| 11936 | (KJS::BlockNode::optimizeVariableAccess): |
| 11937 | (KJS::BlockNode::execute): |
| 11938 | (KJS::EmptyStatementNode::execute): |
| 11939 | (KJS::ExprStatementNode::optimizeVariableAccess): |
| 11940 | (KJS::ExprStatementNode::execute): |
| 11941 | (KJS::VarStatementNode::optimizeVariableAccess): |
| 11942 | (KJS::VarStatementNode::execute): |
| 11943 | (KJS::IfNode::optimizeVariableAccess): |
| 11944 | (KJS::IfNode::execute): |
| 11945 | (KJS::IfElseNode::optimizeVariableAccess): |
| 11946 | (KJS::IfElseNode::execute): |
| 11947 | (KJS::DoWhileNode::optimizeVariableAccess): |
| 11948 | (KJS::DoWhileNode::execute): |
| 11949 | (KJS::WhileNode::optimizeVariableAccess): |
| 11950 | (KJS::WhileNode::execute): |
| 11951 | (KJS::ForNode::optimizeVariableAccess): |
| 11952 | (KJS::ForNode::execute): |
| 11953 | (KJS::ForInNode::optimizeVariableAccess): |
| 11954 | (KJS::ForInNode::execute): |
| 11955 | (KJS::ContinueNode::execute): |
| 11956 | (KJS::BreakNode::execute): |
| 11957 | (KJS::ReturnNode::optimizeVariableAccess): |
| 11958 | (KJS::ReturnNode::execute): |
| 11959 | (KJS::WithNode::optimizeVariableAccess): |
| 11960 | (KJS::WithNode::execute): |
| 11961 | (KJS::CaseClauseNode::optimizeVariableAccess): |
| 11962 | (KJS::CaseClauseNode::evaluate): |
| 11963 | (KJS::CaseClauseNode::executeStatements): |
| 11964 | (KJS::ClauseListNode::optimizeVariableAccess): |
| 11965 | (KJS::CaseBlockNode::optimizeVariableAccess): |
| 11966 | (KJS::CaseBlockNode::executeBlock): |
| 11967 | (KJS::SwitchNode::optimizeVariableAccess): |
| 11968 | (KJS::SwitchNode::execute): |
| 11969 | (KJS::LabelNode::optimizeVariableAccess): |
| 11970 | (KJS::LabelNode::execute): |
| 11971 | (KJS::ThrowNode::optimizeVariableAccess): |
| 11972 | (KJS::ThrowNode::execute): |
| 11973 | (KJS::TryNode::optimizeVariableAccess): |
| 11974 | (KJS::TryNode::execute): |
| 11975 | (KJS::ProgramNode::initializeSymbolTable): |
| 11976 | (KJS::ScopeNode::optimizeVariableAccess): |
| 11977 | (KJS::ProgramNode::processDeclarations): |
| 11978 | (KJS::EvalNode::processDeclarations): |
| 11979 | (KJS::ProgramNode::execute): |
| 11980 | (KJS::EvalNode::execute): |
| 11981 | (KJS::FunctionBodyNodeWithDebuggerHooks::execute): |
| 11982 | (KJS::FuncDeclNode::execute): |
| 11983 | (KJS::FuncExprNode::evaluate): |
| 11984 | * kjs/nodes.h: |
| 11985 | (KJS::Node::): |
| 11986 | (KJS::FalseNode::): |
| 11987 | (KJS::TrueNode::): |
| 11988 | (KJS::ArgumentsNode::): |
| 11989 | |
| 11990 | 2008-04-23 Oliver Hunt <oliver@apple.com> |
| 11991 | |
| 11992 | Reviewed by Geoff. |
| 11993 | |
| 11994 | Bug 18672: SQUIRRELFISH: codegen fails with a large number of temporaries |
| 11995 | <https://bugs.webkit.org/show_bug.cgi?id=18672> |
| 11996 | |
| 11997 | Add a SegmentedVector type, which provides a Vector<T> which maintains |
| 11998 | existing memory locations during resize. This allows dynamically sizing |
| 11999 | local, temporary and label "vectors" in CodeGenerator. |
| 12000 | |
| 12001 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 12002 | * VM/CodeGenerator.cpp: |
| 12003 | (KJS::CodeGenerator::addVar): |
| 12004 | (KJS::CodeGenerator::CodeGenerator): |
| 12005 | (KJS::CodeGenerator::newTemporary): |
| 12006 | (KJS::CodeGenerator::newLabel): |
| 12007 | * VM/CodeGenerator.h: |
| 12008 | * VM/SegmentedVector.h: Added. |
| 12009 | (KJS::SegmentedVector::SegmentedVector): |
| 12010 | (KJS::SegmentedVector::~SegmentedVector): |
| 12011 | (KJS::SegmentedVector::last): |
| 12012 | (KJS::SegmentedVector::append): |
| 12013 | (KJS::SegmentedVector::removeLast): |
| 12014 | (KJS::SegmentedVector::size): |
| 12015 | (KJS::SegmentedVector::operator[]): |
| 12016 | (KJS::SegmentedVector::resize): |
| 12017 | (KJS::SegmentedVector::shrink): |
| 12018 | (KJS::SegmentedVector::grow): |
| 12019 | |
| 12020 | 2008-04-23 Geoffrey Garen <ggaren@apple.com> |
| 12021 | |
| 12022 | Reviewed by Maciej Stachowiak. |
| 12023 | |
| 12024 | A little refactoring in preparation for supporting 'arguments'. |
| 12025 | |
| 12026 | Fixes 2 regression tests. |
| 12027 | |
| 12028 | SunSpider reports no change. |
| 12029 | |
| 12030 | We now check the activation register, instead of the codeBlock, to |
| 12031 | determine whether we need to tear off the activation. This is to support |
| 12032 | "f.arguments", which will create an activation/arguments pair for f, |
| 12033 | even though the needsFullScopeChain flag is false for f's codeBlock. |
| 12034 | |
| 12035 | The test fixes resulted from calling initializeCallFrame for re-entrant |
| 12036 | function code, instead of initializing (not enough) parts of the call |
| 12037 | frame by hand. |
| 12038 | |
| 12039 | 2008-04-22 Maciej Stachowiak <mjs@apple.com> |
| 12040 | |
| 12041 | Reviewed by Sam. |
| 12042 | |
| 12043 | - propagate the "this" value properly to local eval |
| 12044 | |
| 12045 | (fixes a measly one regression test) |
| 12046 | |
| 12047 | * VM/CodeBlock.h: |
| 12048 | (KJS::CodeBlock::CodeBlock): |
| 12049 | (KJS::ProgramCodeBlock::ProgramCodeBlock): |
| 12050 | (KJS::EvalCodeBlock::EvalCodeBlock): |
| 12051 | * VM/Machine.cpp: |
| 12052 | (KJS::Machine::privateExecute): |
| 12053 | |
| 12054 | 2008-04-22 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 12055 | |
| 12056 | Reviewed by Maciej. |
| 12057 | |
| 12058 | Add support for function declarations in eval code. |
| 12059 | |
| 12060 | (this fixes 12 more regression tests) |
| 12061 | |
| 12062 | * VM/CodeBlock.h: |
| 12063 | * VM/CodeGenerator.cpp: |
| 12064 | (KJS::CodeGenerator::CodeGenerator): |
| 12065 | * VM/CodeGenerator.h: |
| 12066 | * VM/Machine.cpp: |
| 12067 | (KJS::Machine::execute): |
| 12068 | * kjs/nodes.cpp: |
| 12069 | (KJS::EvalNode::generateCode): |
| 12070 | |
| 12071 | 2008-04-22 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 12072 | |
| 12073 | Reviewed by Oliver. |
| 12074 | |
| 12075 | Implement LabelNode. |
| 12076 | |
| 12077 | * VM/CodeGenerator.cpp: |
| 12078 | (KJS::CodeGenerator::pushJumpContext): |
| 12079 | (KJS::CodeGenerator::jumpContextForContinue): |
| 12080 | (KJS::CodeGenerator::jumpContextForBreak): |
| 12081 | * VM/CodeGenerator.h: |
| 12082 | * kjs/nodes.cpp: |
| 12083 | (KJS::DoWhileNode::emitCode): |
| 12084 | (KJS::WhileNode::emitCode): |
| 12085 | (KJS::ForNode::emitCode): |
| 12086 | (KJS::ForInNode::emitCode): |
| 12087 | (KJS::ContinueNode::emitCode): |
| 12088 | (KJS::BreakNode::emitCode): |
| 12089 | (KJS::SwitchNode::emitCode): |
| 12090 | (KJS::LabelNode::emitCode): |
| 12091 | |
| 12092 | 2008-04-22 Geoffrey Garen <ggaren@apple.com> |
| 12093 | |
| 12094 | Reviewed by Oliver Hunt. |
| 12095 | |
| 12096 | Fixed crash when unwinding from exceptions inside eval. |
| 12097 | |
| 12098 | * VM/Machine.cpp: |
| 12099 | (KJS::Machine::unwindCallFrame): Don't assume that the top of the |
| 12100 | current call frame's scope chain is an activation: it can be the global |
| 12101 | object, instead. |
| 12102 | |
| 12103 | 2008-04-22 Maciej Stachowiak <mjs@apple.com> |
| 12104 | |
| 12105 | Reviewed by Geoff. |
| 12106 | |
| 12107 | * kjs/testkjs.cpp: |
| 12108 | (main): Convert signals to exit codes, so that crashing tests are |
| 12109 | detected as regression test failures. |
| 12110 | |
| 12111 | 2008-04-22 Geoffrey Garen <ggaren@apple.com> |
| 12112 | |
| 12113 | Reviewed by Oliver Hunt and Maciej Stachowiak. |
| 12114 | |
| 12115 | Renamed "needsActivation" to "needsFullScopeChain" because lying will |
| 12116 | make hair grow on the backs of your hands. |
| 12117 | |
| 12118 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12119 | |
| 12120 | Reviewed by Maciej Stachowiak. |
| 12121 | |
| 12122 | Fixed ScopeChainNode lifetime problems: |
| 12123 | |
| 12124 | (1) In "with" and "catch" scopes, we would construct a ScopeChain |
| 12125 | object and then jump across its destructor, leaking the ScopeChainNode |
| 12126 | we had pushed. |
| 12127 | |
| 12128 | (2) In global and eval scopes, we would fail to initially ref |
| 12129 | "scopeChain", causing us to overrelease it later. Now that we ref |
| 12130 | "scopeChain" properly, we also need to deref it when the script |
| 12131 | terminates. |
| 12132 | |
| 12133 | SunSpider reports a .2% regression, but an earlier round of ScopeChain |
| 12134 | refactoring was a .4% speedup, so there. |
| 12135 | |
| 12136 | 2008-04-22 Maciej Stachowiak <mjs@apple.com> |
| 12137 | |
| 12138 | Reviewed by Alexey. |
| 12139 | |
| 12140 | - use global object instead of null for "this" on unqualified calls |
| 12141 | |
| 12142 | This fixes 10 more JSC test regressions. |
| 12143 | |
| 12144 | * VM/Machine.cpp: |
| 12145 | (KJS::Machine::privateExecute): |
| 12146 | |
| 12147 | 2008-04-22 Maciej Stachowiak <mjs@apple.com> |
| 12148 | |
| 12149 | Reviewed by Oliver. |
| 12150 | |
| 12151 | - throw proper exceptions for objects that don't implement call or construct |
| 12152 | |
| 12153 | This fixes 21 more JSC test regressions. It is also seemingly an |
| 12154 | 0.5% progression. |
| 12155 | |
| 12156 | * VM/ExceptionHelpers.cpp: |
| 12157 | (KJS::createNotAnObjectError): |
| 12158 | (KJS::createNotAConstructorError): |
| 12159 | (KJS::createNotAFunctionError): |
| 12160 | * VM/ExceptionHelpers.h: |
| 12161 | * VM/Machine.cpp: |
| 12162 | (KJS::Machine::privateExecute): |
| 12163 | |
| 12164 | 2008-04-21 Oliver Hunt <oliver@apple.com> |
| 12165 | |
| 12166 | Reviewed by Geoff. |
| 12167 | |
| 12168 | Implement emitCode for ConstDeclNode. |
| 12169 | |
| 12170 | This fixes the crash (assertion) in js1_5/Scope/scope-001.js |
| 12171 | |
| 12172 | * VM/CodeGenerator.cpp: |
| 12173 | (KJS::CodeGenerator::registerForLocalConstInit): |
| 12174 | * VM/CodeGenerator.h: |
| 12175 | * kjs/nodes.cpp: |
| 12176 | (KJS::AssignResolveNode::emitCode): |
| 12177 | (KJS::ConstDeclNode::emitCodeSingle): |
| 12178 | (KJS::ConstDeclNode::emitCode): |
| 12179 | (KJS::ConstStatementNode::emitCode): |
| 12180 | * kjs/nodes.h: |
| 12181 | |
| 12182 | 2008-04-21 Maciej Stachowiak <mjs@apple.com> |
| 12183 | |
| 12184 | Reviewed by Sam. |
| 12185 | |
| 12186 | - add some support for the split window object |
| 12187 | |
| 12188 | This fixes many layout tests. |
| 12189 | |
| 12190 | * VM/Machine.cpp: |
| 12191 | (KJS::resolveBaseAndFunc): Use toThisObject() to ensure we get the |
| 12192 | wrapper global, if one exists, as the "this" object. |
| 12193 | * kjs/function.cpp: |
| 12194 | (KJS::globalFuncEval): Use toGlobalObject() to handle the wrapper |
| 12195 | case properly. |
| 12196 | |
| 12197 | 2008-04-21 Maciej Stachowiak <mjs@apple.com> |
| 12198 | |
| 12199 | Reviewed by Oliver. |
| 12200 | |
| 12201 | - restore ScopeChain::operator= to avoid crash on many layout tests |
| 12202 | |
| 12203 | Otherwise, FunctionImp::setScope would cause a reference |
| 12204 | underflow. I implemented using the copy construct and swap idiom. |
| 12205 | |
| 12206 | * kjs/scope_chain.h: |
| 12207 | (KJS::ScopeChain::swap): |
| 12208 | (KJS::ScopeChain::operator=): |
| 12209 | |
| 12210 | 2008-04-21 Oliver Hunt <oliver@apple.com> |
| 12211 | |
| 12212 | Reviewed by Geoff. |
| 12213 | |
| 12214 | Bug 18649: SQUIRRELFISH: correctly handle exceptions in eval code |
| 12215 | <https://bugs.webkit.org/show_bug.cgi?id=18649> |
| 12216 | |
| 12217 | Allocate a callframe for eval() and initialise with a null codeBlock to |
| 12218 | indicate native code. This prevents the unwinder from clobbering the |
| 12219 | register stack. |
| 12220 | |
| 12221 | * VM/Machine.cpp: |
| 12222 | (KJS::Machine::execute): |
| 12223 | |
| 12224 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12225 | |
| 12226 | Reviewed by Sam Weinig. |
| 12227 | |
| 12228 | Removed ScopeChain::push(ScopeChain&) because it was unused. Moved |
| 12229 | ScopeChain::print to ScopeChainNode. |
| 12230 | |
| 12231 | ScopeChain is now nothing more than a resource-handling wrapper around |
| 12232 | ScopeChainNode. |
| 12233 | |
| 12234 | 2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 12235 | |
| 12236 | Reviewed by Maciej. |
| 12237 | |
| 12238 | Bug 18671: SquirrelFish: continue inside switch fails |
| 12239 | <https://bugs.webkit.org/show_bug.cgi?id=18671> |
| 12240 | |
| 12241 | * VM/CodeGenerator.cpp: |
| 12242 | (KJS::CodeGenerator::jumpContextForLabel): |
| 12243 | * VM/CodeGenerator.h: |
| 12244 | * kjs/nodes.cpp: |
| 12245 | (KJS::ContinueNode::emitCode): |
| 12246 | |
| 12247 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12248 | |
| 12249 | Reviewed by Sam Weinig. |
| 12250 | |
| 12251 | Moved push(JSObject*) and pop() from ScopeChain to ScopeChainNode, |
| 12252 | rearranging scope_chain.h a bit. |
| 12253 | |
| 12254 | SunSpider reports no change. |
| 12255 | |
| 12256 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12257 | |
| 12258 | Reviewed by Sam Weinig. |
| 12259 | |
| 12260 | Moved bottom() from ScopeChain to ScopeChainNode, simplifying it based |
| 12261 | on the knowledge that the ScopeChain is never empty. |
| 12262 | |
| 12263 | SunSpider reports no change. |
| 12264 | |
| 12265 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12266 | |
| 12267 | Reviewed by Oliver Hunt. |
| 12268 | |
| 12269 | Moved begin() and end() from ScopeChain to ScopeChainNode. |
| 12270 | |
| 12271 | Also marked a few methods "const". |
| 12272 | |
| 12273 | SunSpider reports no change. |
| 12274 | |
| 12275 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12276 | |
| 12277 | Reviewed by Maciej Stachowiak. |
| 12278 | |
| 12279 | Turned ScopeChain::depth into a stand-alone function, and simplified it |
| 12280 | a bit. |
| 12281 | |
| 12282 | I also moved ScopeChain::depth to Machine.cpp because it doesn't report |
| 12283 | the true depth of the ScopeChain -- just the Machine's perspective of |
| 12284 | its depth within a given call frame. |
| 12285 | |
| 12286 | SunSpider reports no change. |
| 12287 | |
| 12288 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12289 | |
| 12290 | Reviewed by Maciej Stachowiak. |
| 12291 | |
| 12292 | Removed indirection in ScopeChain::ref / ScopeChain::deref. |
| 12293 | |
| 12294 | SunSpider reports no change. |
| 12295 | |
| 12296 | * kjs/scope_chain.h: |
| 12297 | (KJS::ScopeChain::ScopeChain): |
| 12298 | (KJS::ScopeChain::~ScopeChain): |
| 12299 | (KJS::ScopeChain::clear): |
| 12300 | |
| 12301 | 2008-04-21 Oliver Hunt <oliver@apple.com> |
| 12302 | |
| 12303 | Fix debug build |
| 12304 | |
| 12305 | * kjs/nodes.cpp: |
| 12306 | (KJS::ConstDeclNode::evaluateSingle): |
| 12307 | |
| 12308 | 2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 12309 | |
| 12310 | Reviewed by Oliver. |
| 12311 | |
| 12312 | Bug 18664: SQUIRRELFISH: correctly throw a SyntaxError when parsing of eval code fails |
| 12313 | <https://bugs.webkit.org/show_bug.cgi?id=18664> |
| 12314 | |
| 12315 | Correctly throw a SyntaxError when parsing of eval code fails. |
| 12316 | |
| 12317 | * VM/Machine.cpp: |
| 12318 | (KJS::eval): |
| 12319 | |
| 12320 | 2008-04-21 Oliver Hunt <oliver@apple.com> |
| 12321 | |
| 12322 | Reviewed by Geoff. |
| 12323 | |
| 12324 | Partial fix for Bug 18649: SQUIRRELFISH: correctly handle exceptions in eval code |
| 12325 | |
| 12326 | Make sure we correct the register state before jumping to vm_throw. |
| 12327 | |
| 12328 | * VM/Machine.cpp: |
| 12329 | (KJS::Machine::privateExecute): |
| 12330 | |
| 12331 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12332 | |
| 12333 | Reviewed by Maciej Stachowiak. |
| 12334 | |
| 12335 | Simplified ScopeChain ref/deref. |
| 12336 | |
| 12337 | SunSpider reports a .4% speedup. |
| 12338 | |
| 12339 | * kjs/scope_chain.h: |
| 12340 | (KJS::ScopeChainNode::ref): Removed this function because it was nonsense. |
| 12341 | ScopeChainNodes are initialized with a refCount of 1, so the loop was |
| 12342 | guaranteed to iterate exactly once. |
| 12343 | |
| 12344 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12345 | |
| 12346 | Reviewed by Maciej Stachowiak. |
| 12347 | |
| 12348 | Removed support for empty ScopeChains. |
| 12349 | |
| 12350 | SunSpider reports no change. |
| 12351 | |
| 12352 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12353 | |
| 12354 | Reviewed by Maciej Stachowiak. |
| 12355 | |
| 12356 | Removed some completely unused ScopeChain member functions. |
| 12357 | |
| 12358 | SunSpider reports no change. |
| 12359 | |
| 12360 | 2008-04-21 Geoffrey Garen <ggaren@apple.com> |
| 12361 | |
| 12362 | Reviewed by Maciej Stachowiak. |
| 12363 | |
| 12364 | Avoid creating unnecessary ScopeChain objects, to reduce refcount churn. |
| 12365 | |
| 12366 | SunSpider reports no change. |
| 12367 | |
| 12368 | 2008-04-21 Maciej Stachowiak <mjs@apple.com> |
| 12369 | |
| 12370 | Rubber stamped by Alexey. |
| 12371 | |
| 12372 | Add some braces.x |
| 12373 | |
| 12374 | * kjs/testkjs.cpp: |
| 12375 | (runWithScripts): |
| 12376 | |
| 12377 | 2008-04-21 Maciej Stachowiak <mjs@apple.com> |
| 12378 | |
| 12379 | Reviewed by Oliver. |
| 12380 | |
| 12381 | - only print "End:" output when -d flag is passed. |
| 12382 | |
| 12383 | This fixes half of our failing JSC regression tests. |
| 12384 | |
| 12385 | * kjs/testkjs.cpp: |
| 12386 | (runWithScripts): |
| 12387 | |
| 12388 | 2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 12389 | |
| 12390 | Reviewed by Maciej. |
| 12391 | |
| 12392 | Add support for variable declarations in eval code. |
| 12393 | |
| 12394 | * VM/CodeBlock.h: |
| 12395 | (KJS::EvalCodeBlock::EvalCodeBlock): |
| 12396 | * VM/CodeGenerator.cpp: |
| 12397 | (KJS::CodeGenerator::CodeGenerator): |
| 12398 | * VM/CodeGenerator.h: |
| 12399 | * VM/Machine.cpp: |
| 12400 | (KJS::Machine::execute): |
| 12401 | * VM/Machine.h: |
| 12402 | * kjs/function.cpp: |
| 12403 | (KJS::globalFuncEval): |
| 12404 | * kjs/nodes.cpp: |
| 12405 | (KJS::EvalNode::generateCode): |
| 12406 | * kjs/nodes.h: |
| 12407 | (KJS::EvalNode::): |
| 12408 | |
| 12409 | 2008-04-20 Oliver Hunt <oliver@apple.com> |
| 12410 | |
| 12411 | Reviewed by Maciej. |
| 12412 | |
| 12413 | Throw exceptions for invalid continue, break, and return statements. |
| 12414 | |
| 12415 | Simple refactoring and extension of Cameron's AssignErrorNode, etc patch |
| 12416 | |
| 12417 | * VM/CodeGenerator.cpp: |
| 12418 | (KJS::CodeGenerator::CodeGenerator): |
| 12419 | (KJS::CodeGenerator::pushJumpContext): |
| 12420 | (KJS::CodeGenerator::popJumpContext): |
| 12421 | (KJS::CodeGenerator::jumpContextForLabel): |
| 12422 | * VM/CodeGenerator.h: |
| 12423 | * kjs/nodes.cpp: |
| 12424 | (KJS::Node::emitThrowError): |
| 12425 | (KJS::ContinueNode::emitCode): |
| 12426 | (KJS::BreakNode::emitCode): |
| 12427 | (KJS::ReturnNode::emitCode): |
| 12428 | * kjs/nodes.h: |
| 12429 | |
| 12430 | 2008-04-20 Geoffrey Garen <ggaren@apple.com> |
| 12431 | |
| 12432 | Reviewed by Oliver Hunt. |
| 12433 | |
| 12434 | Removed Machine.cpp from AllInOneFile.cpp, and manually inlined a few |
| 12435 | things that used to be inlined automatically. |
| 12436 | |
| 12437 | 1.9% speedup on SunSpider. |
| 12438 | |
| 12439 | My hope is that we'll face fewer surprises in Machine.cpp codegen, now |
| 12440 | that GCC is making fewer decisions. The speedup seems to confirm that. |
| 12441 | |
| 12442 | 2008-04-20 Oliver Hunt <oliver@apple.com> |
| 12443 | |
| 12444 | Reviewed by Maciej. |
| 12445 | |
| 12446 | Bug 18642: Iterator context may get placed into the return register, leading to much badness |
| 12447 | <https://bugs.webkit.org/show_bug.cgi?id=18642> |
| 12448 | |
| 12449 | To prevent incorrectly reusing what will become the result register for |
| 12450 | eval and global code execution, we need to request and ref the destination |
| 12451 | in advance of codegen. Unfortunately this may lead to unnecessary copying, |
| 12452 | although in future we can probably limit this. Curiously SunSpider shows |
| 12453 | a progression in a number of tests, although it comes out as a wash overall. |
| 12454 | |
| 12455 | * kjs/nodes.cpp: |
| 12456 | (KJS::EvalNode::emitCode): |
| 12457 | (KJS::ProgramNode::emitCode): |
| 12458 | |
| 12459 | 2008-04-20 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 12460 | |
| 12461 | Reviewed by Maciej. |
| 12462 | |
| 12463 | Add support for AssignErrorNode, PrefixErrorNode, and PostfixErrorNode. |
| 12464 | |
| 12465 | * VM/CodeBlock.cpp: |
| 12466 | (KJS::CodeBlock::dump): |
| 12467 | * VM/CodeGenerator.cpp: |
| 12468 | (KJS::CodeGenerator::emitCreateError): |
| 12469 | * VM/CodeGenerator.h: |
| 12470 | * VM/Machine.cpp: |
| 12471 | (KJS::Machine::privateExecute): |
| 12472 | * VM/Opcode.h: |
| 12473 | * kjs/nodes.cpp: |
| 12474 | (KJS::PostfixErrorNode::emitCode): |
| 12475 | (KJS::PrefixErrorNode::emitCode): |
| 12476 | (KJS::AssignErrorNode::emitCode): |
| 12477 | * kjs/nodes.h: |
| 12478 | |
| 12479 | 2008-04-20 Oliver Hunt <oliver@apple.com> |
| 12480 | |
| 12481 | Reviewed by Geoff and Mark. |
| 12482 | |
| 12483 | Provide line number information in exceptions |
| 12484 | |
| 12485 | Simple patch, adds line number information metadata to CodeBlock |
| 12486 | and a simple method to get the line number responsible for a given |
| 12487 | Instruction*. |
| 12488 | |
| 12489 | * VM/CodeBlock.cpp: |
| 12490 | (KJS::CodeBlock::lineNumberForVPC): |
| 12491 | * VM/CodeBlock.h: |
| 12492 | * VM/CodeGenerator.h: |
| 12493 | (KJS::CodeGenerator::emitNode): |
| 12494 | * VM/Machine.cpp: |
| 12495 | (KJS::Machine::throwException): |
| 12496 | |
| 12497 | 2008-04-20 Oliver Hunt <oliver@apple.com> |
| 12498 | |
| 12499 | Reviewed by Maciej. |
| 12500 | |
| 12501 | Provide "sourceURL" in exceptions |
| 12502 | |
| 12503 | * VM/CodeBlock.h: |
| 12504 | * VM/Machine.cpp: |
| 12505 | (KJS::Machine::throwException): |
| 12506 | * kjs/nodes.cpp: |
| 12507 | (KJS::EvalNode::generateCode): |
| 12508 | (KJS::ProgramNode::generateCode): |
| 12509 | |
| 12510 | 2008-04-19 Oliver Hunt <oliver@apple.com> |
| 12511 | |
| 12512 | Reviewed by Maciej. |
| 12513 | |
| 12514 | Don't call emitCode directly on subnodes, instead use CodeGenerator::emitNode |
| 12515 | |
| 12516 | This patch just a preparation for tracking line numbers. |
| 12517 | |
| 12518 | * kjs/nodes.cpp: |
| 12519 | (KJS::ObjectLiteralNode::emitCode): |
| 12520 | (KJS::PropertyListNode::emitCode): |
| 12521 | (KJS::ArgumentListNode::emitCode): |
| 12522 | (KJS::TryNode::emitCode): |
| 12523 | |
| 12524 | 2008-04-19 Oliver Hunt <oliver@apple.com> |
| 12525 | |
| 12526 | Reviewed by Maciej. |
| 12527 | |
| 12528 | Bug 18619: Support continue, break, and return in try .. finally blocks |
| 12529 | <https://bugs.webkit.org/show_bug.cgi?id=18619> |
| 12530 | |
| 12531 | This patch replaces the current partial finally support (which uses code |
| 12532 | duplication to achieve what it does) with a subroutine based approach. |
| 12533 | This has a number of advantages over code duplication: |
| 12534 | * Reduced code size |
| 12535 | * Simplified exception handling as the finaliser code only exists in |
| 12536 | one place, so no "magic" is needed to get the correct handler for a |
| 12537 | finaliser. |
| 12538 | * When we support instruction to line number mapping we won't need to |
| 12539 | worry about the dramatic code movement caused by duplication |
| 12540 | |
| 12541 | On the downside it is necessary to add two new opcodes, op_jsr and op_sret |
| 12542 | to enter and exit the finaliser subroutines, happily SunSpider reports |
| 12543 | a performance progression (gcc amazes me) and ubench reports a wash. |
| 12544 | |
| 12545 | While jsr and sret provide a mechanism that allows us to enter and exit |
| 12546 | any arbitrary finaliser we need to, it was still necessary to increase |
| 12547 | the amount of information tracked when entering and exiting both finaliser |
| 12548 | scopes and dynamic scopes ("with"). This means "scopeDepth" is now |
| 12549 | the combination of "finaliserDepth" and "dynamicScopeDepth". We also |
| 12550 | now use a scopeContextStack to ensure that we pop scopes and execute |
| 12551 | finalisers in the correct order. This increases the cost of "with" nodes |
| 12552 | during codegen, but it should not be significant enough to effect real |
| 12553 | world performance and greatly simplifies codegen for return, break and |
| 12554 | continue when interacting with finalisers. |
| 12555 | |
| 12556 | * VM/CodeBlock.cpp: |
| 12557 | (KJS::CodeBlock::dump): |
| 12558 | Pretty printing of jsr/sret opcodes |
| 12559 | |
| 12560 | * VM/CodeGenerator.cpp: |
| 12561 | (KJS::CodeGenerator::CodeGenerator): |
| 12562 | (KJS::CodeGenerator::emitPushScope): |
| 12563 | (KJS::CodeGenerator::emitPopScope): |
| 12564 | Dynamic scopes need to be tracked on the scopeContextStack now |
| 12565 | |
| 12566 | (KJS::CodeGenerator::pushFinallyContext): |
| 12567 | (KJS::CodeGenerator::popFinallyContext): |
| 12568 | Handle entry and exit from code regions with finalisers. This is |
| 12569 | needed solely to support return, continue and break inside finaliser |
| 12570 | regions. |
| 12571 | |
| 12572 | (KJS::CodeGenerator::emitComplexJumpScopes): |
| 12573 | Helper function for emitJumpScopes to handle the complex codegen |
| 12574 | needed to handle return, continue and break inside a finaliser region |
| 12575 | |
| 12576 | (KJS::CodeGenerator::emitJumpScopes): |
| 12577 | Updated to be aware of finalisers, if a cross-scope jump occurs inside |
| 12578 | a finaliser we hand off codegen to emitComplexJumpScopes, otherwise |
| 12579 | we can handle the normal (trivial) case with a single instruction. |
| 12580 | |
| 12581 | (KJS::CodeGenerator::emitJumpSubroutine): |
| 12582 | (KJS::CodeGenerator::emitSubroutineReturn): |
| 12583 | Trivial opcode emitter functions. |
| 12584 | |
| 12585 | * VM/CodeGenerator.h: |
| 12586 | (KJS::CodeGenerator::scopeDepth): |
| 12587 | * VM/Machine.cpp: |
| 12588 | (KJS::Machine::privateExecute): |
| 12589 | Implement op_jsr and op_sret. |
| 12590 | |
| 12591 | * VM/Opcode.h: |
| 12592 | Ad op_jsr and op_sret |
| 12593 | |
| 12594 | * kjs/nodes.cpp: |
| 12595 | (KJS::TryNode::emitCode): |
| 12596 | Fix codegen for new finaliser model. |
| 12597 | |
| 12598 | 2008-04-17 Mark Rowe <mrowe@apple.com> |
| 12599 | |
| 12600 | Rubber-stamped by Oliver Hunt. |
| 12601 | |
| 12602 | Remove unnecessary files from testkjs, testapi and minidom targets. |
| 12603 | |
| 12604 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 12605 | |
| 12606 | 2008-04-17 Geoffrey Garen <ggaren@apple.com> |
| 12607 | |
| 12608 | Reviewed by Oliver Hunt. |
| 12609 | |
| 12610 | Fixed ASSERT seen during run-sunspider of a debug build. |
| 12611 | |
| 12612 | * VM/CodeGenerator.h: Made the default codegen buffers bigger. SunSpider |
| 12613 | runs all tests in one global environment, so you end up with more than |
| 12614 | 128 locals. This is just a stop-gap until we code up a real |
| 12615 | solution to arbitrary symbol and label limits. |
| 12616 | |
| 12617 | 2008-04-17 Geoffrey Garen <ggaren@apple.com> |
| 12618 | |
| 12619 | Reviewed by Oliver Hunt. |
| 12620 | |
| 12621 | Fixed a bug in exception unwinding, where we wouldn't deref the scope |
| 12622 | chain in global scope, so we would leak ScopeChainNodes when exceptions |
| 12623 | were thrown inside "with" and "catch" scopes. |
| 12624 | |
| 12625 | Also did some cleanup of the unwinding code along the way. |
| 12626 | |
| 12627 | Scope chain reference counting is still wrong in a few ways. I thought |
| 12628 | I would fix this portion of it first. |
| 12629 | |
| 12630 | run-sunspider shows no change. |
| 12631 | |
| 12632 | * VM/Machine.cpp: |
| 12633 | (KJS::Machine::unwindCallFrame): |
| 12634 | (KJS::Machine::throwException): |
| 12635 | (KJS::Machine::privateExecute): |
| 12636 | * VM/Machine.h: |
| 12637 | |
| 12638 | 2008-04-17 Oliver Hunt <oliver@apple.com> |
| 12639 | |
| 12640 | Reviewed by Maciej. |
| 12641 | |
| 12642 | Add more exception checking to toNumber conversions |
| 12643 | |
| 12644 | This corrects op_pre_dec, op_negate, op_mod and op_sub. |
| 12645 | |
| 12646 | * VM/Machine.cpp: |
| 12647 | (KJS::Machine::privateExecute): |
| 12648 | |
| 12649 | 2008-04-17 Geoffrey Garen <ggaren@apple.com> and Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 12650 | |
| 12651 | Reviewed by Oliver Hunt. |
| 12652 | |
| 12653 | Behold: eval. |
| 12654 | |
| 12655 | Introduced a new opcode: op_call_eval. In the normal case, it performs |
| 12656 | an eval. In the case where eval has been overridden in some way, it |
| 12657 | performs a function call. |
| 12658 | |
| 12659 | * VM/CodeGenerator.h: Added a feature so the code generator knows not |
| 12660 | to optimized locals in eval code. |
| 12661 | |
| 12662 | 2008-04-17 Geoffrey Garen <ggaren@apple.com> |
| 12663 | |
| 12664 | Reviewed by Sam Weinig. |
| 12665 | |
| 12666 | Added some ASSERTs to document codegen failures in |
| 12667 | run-javascriptcore-tests. |
| 12668 | |
| 12669 | For all tests, program-level codegen now either succeeds, or fails with |
| 12670 | an ASSERT. |
| 12671 | |
| 12672 | * VM/CodeGenerator.cpp: |
| 12673 | (KJS::CodeGenerator::addVar): |
| 12674 | (KJS::CodeGenerator::CodeGenerator): |
| 12675 | (KJS::CodeGenerator::newTemporary): |
| 12676 | (KJS::CodeGenerator::newLabel): |
| 12677 | |
| 12678 | 2008-04-17 Geoffrey Garen <ggaren@apple.com> |
| 12679 | |
| 12680 | Reviewed by Maciej Stachowiak. |
| 12681 | |
| 12682 | Fixed another case of a dst register being an unreferenced temporary |
| 12683 | (caused an ASSERT when running the full sunspider suite). |
| 12684 | |
| 12685 | * kjs/nodes.cpp: |
| 12686 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 12687 | |
| 12688 | 2008-04-16 Maciej Stachowiak <mjs@apple.com> |
| 12689 | |
| 12690 | Reviewed by Geoff. |
| 12691 | |
| 12692 | - add documentation (and meaningful parameter names) for arithmetic and bitwise binary ops |
| 12693 | |
| 12694 | * VM/CodeBlock.cpp: |
| 12695 | (KJS::CodeBlock::dump): |
| 12696 | * VM/CodeGenerator.cpp: |
| 12697 | (KJS::CodeGenerator::emitMul): |
| 12698 | (KJS::CodeGenerator::emitDiv): |
| 12699 | (KJS::CodeGenerator::emitMod): |
| 12700 | (KJS::CodeGenerator::emitSub): |
| 12701 | (KJS::CodeGenerator::emitLeftShift): |
| 12702 | (KJS::CodeGenerator::emitRightShift): |
| 12703 | (KJS::CodeGenerator::emitUnsignedRightShift): |
| 12704 | (KJS::CodeGenerator::emitBitAnd): |
| 12705 | (KJS::CodeGenerator::emitBitXOr): |
| 12706 | (KJS::CodeGenerator::emitBitOr): |
| 12707 | * VM/CodeGenerator.h: |
| 12708 | * VM/Machine.cpp: |
| 12709 | (KJS::Machine::privateExecute): |
| 12710 | * VM/Opcode.h: |
| 12711 | * kjs/nodes.cpp: |
| 12712 | (KJS::MultNode::emitCode): |
| 12713 | (KJS::DivNode::emitCode): |
| 12714 | (KJS::ModNode::emitCode): |
| 12715 | (KJS::SubNode::emitCode): |
| 12716 | (KJS::LeftShiftNode::emitCode): |
| 12717 | (KJS::RightShiftNode::emitCode): |
| 12718 | (KJS::UnsignedRightShiftNode::emitCode): |
| 12719 | (KJS::BitAndNode::emitCode): |
| 12720 | (KJS::BitXOrNode::emitCode): |
| 12721 | (KJS::BitOrNode::emitCode): |
| 12722 | (KJS::emitReadModifyAssignment): |
| 12723 | (KJS::ReadModifyResolveNode::emitCode): |
| 12724 | |
| 12725 | 2008-04-16 Oliver Hunt <oliver@apple.com> |
| 12726 | |
| 12727 | Reviewed by Geoff. |
| 12728 | |
| 12729 | Exception checks for toNumber in op_pre_inc |
| 12730 | |
| 12731 | This is somewhat more convoluted than the simple hadException checks |
| 12732 | we currently use. Instead we use special toNumber conversions that |
| 12733 | select between the exception and ordinary vPC. This allows us to |
| 12734 | remove any branches in the common case (incrementing a number). |
| 12735 | |
| 12736 | * API/JSCallbackObject.h: |
| 12737 | * API/JSCallbackObjectFunctions.h: |
| 12738 | (KJS::::toNumber): |
| 12739 | * ChangeLog: |
| 12740 | * JavaScriptCore.exp: |
| 12741 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 12742 | * VM/JSPropertyNameIterator.cpp: |
| 12743 | (KJS::JSPropertyNameIterator::toNumber): |
| 12744 | * VM/JSPropertyNameIterator.h: |
| 12745 | * VM/Machine.cpp: |
| 12746 | (KJS::Machine::privateExecute): |
| 12747 | * VM/Opcode.h: |
| 12748 | * kjs/ExecState.cpp: |
| 12749 | (KJS::ExecState::ExecState): |
| 12750 | * kjs/ExecState.h: |
| 12751 | * kjs/JSNotAnObject.cpp: |
| 12752 | (KJS::JSNotAnObject::toNumber): |
| 12753 | * kjs/JSNotAnObject.h: |
| 12754 | * kjs/internal.cpp: |
| 12755 | (KJS::StringImp::toNumber): |
| 12756 | (KJS::NumberImp::toNumber): |
| 12757 | (KJS::GetterSetterImp::toNumber): |
| 12758 | * kjs/internal.h: |
| 12759 | * kjs/object.cpp: |
| 12760 | (KJS::JSObject::toNumber): |
| 12761 | * kjs/object.h: |
| 12762 | * kjs/value.h: |
| 12763 | (KJS::JSValue::toNumber): |
| 12764 | |
| 12765 | 2008-04-16 Maciej Stachowiak <mjs@apple.com> |
| 12766 | |
| 12767 | Reviewed by Geoff. |
| 12768 | |
| 12769 | - ensure that activations are kept in a register to protect them from GC |
| 12770 | |
| 12771 | Also renamed OptionalCalleeScopeChain constant to OptionalCalleeActivation, since |
| 12772 | that is what is now kept there, and there is no more need to keep the scope chain in |
| 12773 | the register file. |
| 12774 | |
| 12775 | * VM/Machine.cpp: |
| 12776 | (KJS::initializeCallFrame): |
| 12777 | (KJS::scopeChainForCall): |
| 12778 | * VM/Machine.h: |
| 12779 | (KJS::Machine::): |
| 12780 | |
| 12781 | 2008-04-16 Geoffrey Garen <ggaren@apple.com> |
| 12782 | |
| 12783 | Reviewed by Oliver Hunt. |
| 12784 | |
| 12785 | Made "this" work in program code / global scope. |
| 12786 | |
| 12787 | The machine can initialize "this" prior to execution because it knows |
| 12788 | that, for program code, "this" is always stored in lr1. |
| 12789 | |
| 12790 | * VM/Machine.cpp: |
| 12791 | (KJS::Machine::execute): |
| 12792 | * VM/Machine.h: |
| 12793 | (KJS::Machine::): |
| 12794 | * kjs/interpreter.cpp: |
| 12795 | (KJS::Interpreter::evaluate): |
| 12796 | |
| 12797 | 2008-04-16 Geoffrey Garen <ggaren@apple.com> |
| 12798 | |
| 12799 | Reviewed by Oliver Hunt. |
| 12800 | |
| 12801 | Fixed a codegen bug when returning from inside a dynamic scope (a with |
| 12802 | or catch block): we need to pop any dynamic scope(s) that have been |
| 12803 | added so op_ret can find the activation object at the top of the scope |
| 12804 | chain. |
| 12805 | |
| 12806 | * kjs/nodes.cpp: |
| 12807 | (KJS::ReturnNode::emitCode): If we're returning from inside a dynamic |
| 12808 | scope, emit a jmp_scopes to take care of popping any dynamic scope(s) |
| 12809 | and then branching to the return instruction. |
| 12810 | |
| 12811 | 2008-04-16 Maciej Stachowiak <mjs@apple.com> |
| 12812 | |
| 12813 | Reviewed by Geoff. |
| 12814 | |
| 12815 | - document the add and get_prop_id opcodes |
| 12816 | |
| 12817 | In addition to adding documentation in comments, I changed |
| 12818 | references to register IDs or indices relating to these opcodes to |
| 12819 | have meaningful names instead of r0 r1 r2. |
| 12820 | |
| 12821 | * VM/CodeGenerator.cpp: |
| 12822 | (KJS::CodeGenerator::emitAdd): |
| 12823 | * VM/CodeGenerator.h: |
| 12824 | * VM/Machine.cpp: |
| 12825 | (KJS::Machine::privateExecute): |
| 12826 | * kjs/nodes.cpp: |
| 12827 | (KJS::DotAccessorNode::emitCode): |
| 12828 | (KJS::FunctionCallDotNode::emitCode): |
| 12829 | (KJS::PostIncDotNode::emitCode): |
| 12830 | (KJS::PostDecDotNode::emitCode): |
| 12831 | (KJS::PreIncDotNode::emitCode): |
| 12832 | (KJS::PreDecDotNode::emitCode): |
| 12833 | (KJS::AddNode::emitCode): |
| 12834 | (KJS::ReadModifyDotNode::emitCode): |
| 12835 | |
| 12836 | 2008-04-15 Geoffrey Garen <ggaren@apple.com> |
| 12837 | |
| 12838 | Reviewed by Oliver Hunt and Maciej Stachowiak. |
| 12839 | |
| 12840 | Fixed a codegen bug in with and switch, and added an ASSERT to |
| 12841 | make sure it doesn't happen again. |
| 12842 | |
| 12843 | emitCode() assumes that dst, if non-zero, is either referenced or |
| 12844 | non-temporary (i.e., it assumes that newTemporary() will return a |
| 12845 | register not equal to dst). Certain callers to emitCode() weren't |
| 12846 | guaranteeing that to be so, so temporary register values were being |
| 12847 | overwritten. |
| 12848 | |
| 12849 | * VM/CodeGenerator.h: |
| 12850 | (KJS::CodeGenerator::emitNode): ASSERT that dst is referenced or non-temporary. |
| 12851 | |
| 12852 | * kjs/nodes.cpp: |
| 12853 | (KJS::CommaNode::emitCode): Reference the dst we pass. |
| 12854 | |
| 12855 | (KJS::WithNode::emitCode): No need to pass an explicit dst register. |
| 12856 | |
| 12857 | (KJS::CaseBlockNode::emitCodeForBlock): No need to pass an explicit dst register. |
| 12858 | (KJS::SwitchNode::emitCode): No need to pass an explicit dst register. |
| 12859 | |
| 12860 | * kjs/nodes.h: Made dst the last parameter to emitCodeForBlock, to match |
| 12861 | emitCode. |
| 12862 | |
| 12863 | 2008-04-15 Oliver Hunt <oliver@apple.com> |
| 12864 | |
| 12865 | Reviewed by Maciej. |
| 12866 | |
| 12867 | Bug 18526: Throw exceptions when resolve fails for op_resolve_base_and_func. |
| 12868 | <https://bugs.webkit.org/show_bug.cgi?id=18526> |
| 12869 | |
| 12870 | Very simple fix, sunspider shows a 0.7% progression, ubench shows a 0.4% regression. |
| 12871 | |
| 12872 | * VM/Machine.cpp: |
| 12873 | (KJS::resolveBaseAndFunc): |
| 12874 | (KJS::Machine::privateExecute): |
| 12875 | |
| 12876 | 2008-04-15 Maciej Stachowiak <mjs@apple.com> |
| 12877 | |
| 12878 | Reviewed by Oliver. |
| 12879 | |
| 12880 | - fix incorrect result on 3d-raytrace test |
| 12881 | |
| 12882 | Oliver found and tracked down this bug, I just typed in the fix. |
| 12883 | |
| 12884 | * VM/Machine.cpp: |
| 12885 | (KJS::slideRegisterWindowForCall): When setting omitted parameters to undefined, |
| 12886 | account for the space for local variables. |
| 12887 | |
| 12888 | 2008-04-15 Maciej Stachowiak <mjs@apple.com> |
| 12889 | |
| 12890 | Reviewed by Oliver. |
| 12891 | |
| 12892 | - fix codegen handling of dst registers |
| 12893 | |
| 12894 | 1.006x speedup (not sure why). |
| 12895 | |
| 12896 | Most emitCode functions take an optional "dst" parameter that says |
| 12897 | where the output of the instruction should be written. I made some |
| 12898 | functions for convenient handling of the dst register: |
| 12899 | |
| 12900 | * VM/CodeGenerator.h: |
| 12901 | (KJS::CodeGenerator::tempDestination): Takes the dst register. Returns it if |
| 12902 | it is not null and is a temporary, otherwise allocates a new temporary. This is |
| 12903 | intended for cases where an intermediate value might be written into the dst |
| 12904 | |
| 12905 | (KJS::CodeGenerator::finalDestination): Takes the dst register and an optional |
| 12906 | register that was used as a temp destination. Picks the right thing for the final |
| 12907 | output. Intended to be used as the output register for the instruction that generates |
| 12908 | the final value of a particular node. |
| 12909 | |
| 12910 | (KJS::CodeGenerator::moveToDestinationIfNeeded): Takes dst and a |
| 12911 | RegisterID; moves from the register to dst if dst is defined and |
| 12912 | different from the register. This is intended for cases where the |
| 12913 | result of a node is already in a specific register (likely a |
| 12914 | local), and so no code needs to be generated unless a specific |
| 12915 | destination has been requested, in which case a move is needed. |
| 12916 | |
| 12917 | I also applied these methods throughout emitCode functions. In |
| 12918 | some cases this was just cleanup, in other cases I fixed actual |
| 12919 | codegen bugs. Below I have given specific comments for the cases |
| 12920 | where I believe I fixed a codegen bug, or improved quality of codegen. |
| 12921 | |
| 12922 | * kjs/nodes.cpp: |
| 12923 | (KJS::NullNode::emitCode): |
| 12924 | (KJS::FalseNode::emitCode): |
| 12925 | (KJS::TrueNode::emitCode): |
| 12926 | (KJS::NumberNode::emitCode): |
| 12927 | (KJS::StringNode::emitCode): |
| 12928 | (KJS::RegExpNode::emitCode): |
| 12929 | (KJS::ThisNode::emitCode): Now avoids emitting a mov when dst is |
| 12930 | the same as the this register (the unlikely case of "this = this"); |
| 12931 | (KJS::ResolveNode::emitCode): Now avoids emitting a mov when dst |
| 12932 | is the same as the local regiester, in the local var case (the |
| 12933 | unlikely case of "x = x"); |
| 12934 | (KJS::ArrayNode::emitCode): Fixed a codegen bug where array |
| 12935 | literal element expressions may have observed an intermediate |
| 12936 | value of constructing the array. |
| 12937 | (KJS::ObjectLiteralNode::emitCode): |
| 12938 | (KJS::PropertyListNode::emitCode): Fixed a codegen bug where object literal |
| 12939 | property definition expressions may have obesrved an intermediate value of |
| 12940 | constructing the object. |
| 12941 | (KJS::BracketAccessorNode::emitCode): |
| 12942 | (KJS::DotAccessorNode::emitCode): |
| 12943 | (KJS::NewExprNode::emitCode): |
| 12944 | (KJS::FunctionCallValueNode::emitCode): |
| 12945 | (KJS::FunctionCallBracketNode::emitCode): |
| 12946 | (KJS::FunctionCallDotNode::emitCode): |
| 12947 | (KJS::PostIncResolveNode::emitCode): |
| 12948 | (KJS::PostDecResolveNode::emitCode): |
| 12949 | (KJS::PostIncBracketNode::emitCode): |
| 12950 | (KJS::PostDecBracketNode::emitCode): |
| 12951 | (KJS::PostIncDotNode::emitCode): |
| 12952 | (KJS::PostDecDotNode::emitCode): |
| 12953 | (KJS::DeleteResolveNode::emitCode): |
| 12954 | (KJS::DeleteBracketNode::emitCode): |
| 12955 | (KJS::DeleteDotNode::emitCode): |
| 12956 | (KJS::DeleteValueNode::emitCode): |
| 12957 | (KJS::VoidNode::emitCode): |
| 12958 | (KJS::TypeOfResolveNode::emitCode): |
| 12959 | (KJS::TypeOfValueNode::emitCode): |
| 12960 | (KJS::PreIncResolveNode::emitCode): Fixed a codegen bug where the final |
| 12961 | value would not be output to the dst register in the local var case. |
| 12962 | (KJS::PreDecResolveNode::emitCode): Fixed a codegen bug where the final |
| 12963 | value would not be output to the dst register in the local var case. |
| 12964 | (KJS::PreIncBracketNode::emitCode): |
| 12965 | (KJS::PreDecBracketNode::emitCode): |
| 12966 | (KJS::PreIncDotNode::emitCode): |
| 12967 | (KJS::PreDecDotNode::emitCode): |
| 12968 | (KJS::UnaryPlusNode::emitCode): |
| 12969 | (KJS::NegateNode::emitCode): |
| 12970 | (KJS::BitwiseNotNode::emitCode): |
| 12971 | (KJS::LogicalNotNode::emitCode): |
| 12972 | (KJS::MultNode::emitCode): |
| 12973 | (KJS::DivNode::emitCode): |
| 12974 | (KJS::ModNode::emitCode): |
| 12975 | (KJS::AddNode::emitCode): |
| 12976 | (KJS::SubNode::emitCode): |
| 12977 | (KJS::LeftShiftNode::emitCode): |
| 12978 | (KJS::RightShiftNode::emitCode): |
| 12979 | (KJS::UnsignedRightShiftNode::emitCode): |
| 12980 | (KJS::LessNode::emitCode): |
| 12981 | (KJS::GreaterNode::emitCode): |
| 12982 | (KJS::LessEqNode::emitCode): |
| 12983 | (KJS::GreaterEqNode::emitCode): |
| 12984 | (KJS::InstanceOfNode::emitCode): |
| 12985 | (KJS::InNode::emitCode): |
| 12986 | (KJS::EqualNode::emitCode): |
| 12987 | (KJS::NotEqualNode::emitCode): |
| 12988 | (KJS::StrictEqualNode::emitCode): |
| 12989 | (KJS::NotStrictEqualNode::emitCode): |
| 12990 | (KJS::BitAndNode::emitCode): |
| 12991 | (KJS::BitXOrNode::emitCode): |
| 12992 | (KJS::BitOrNode::emitCode): |
| 12993 | (KJS::LogicalAndNode::emitCode): |
| 12994 | (KJS::LogicalOrNode::emitCode): |
| 12995 | (KJS::ConditionalNode::emitCode): |
| 12996 | (KJS::emitReadModifyAssignment): Allow an out argument separate from the operands, |
| 12997 | needed for fixes below. |
| 12998 | (KJS::ReadModifyResolveNode::emitCode): Fixed a codegen bug where the right side of |
| 12999 | the expression may observe an intermediate value. |
| 13000 | (KJS::AssignResolveNode::emitCode): Fixed a codegen bug where the right side of the |
| 13001 | expression may observe an intermediate value. |
| 13002 | (KJS::ReadModifyDotNode::emitCode): Fixed a codegen bug where the right side of the |
| 13003 | expression may observe an intermediate value. |
| 13004 | (KJS::ReadModifyBracketNode::emitCode): Fixed a codegen bug where the right side of the |
| 13005 | expression may observe an intermediate value. |
| 13006 | (KJS::CommaNode::emitCode): Avoid writing temporary value to dst register. |
| 13007 | (KJS::ReturnNode::emitCode): Void return should return undefined, not null. |
| 13008 | (KJS::FuncExprNode::emitCode): |
| 13009 | |
| 13010 | 2008-04-15 Maciej Stachowiak <mjs@apple.com> |
| 13011 | |
| 13012 | Reviewed by Geoff. |
| 13013 | |
| 13014 | - fix huge performance regression (from trunk) in string-unpack-code |
| 13015 | |
| 13016 | This restores string-unpack-code performance to parity with |
| 13017 | trunk (2.27x speedup relative to previous SquirrelFish) |
| 13018 | |
| 13019 | * VM/Machine.cpp: |
| 13020 | (KJS::Machine::execute): Shrink register file after call to avoid |
| 13021 | growing repeatedly. |
| 13022 | |
| 13023 | 2008-04-15 Geoffrey Garen <ggaren@apple.com> |
| 13024 | |
| 13025 | Reviewed by Sam Weinig. |
| 13026 | |
| 13027 | Fixed dumpCallFrame to match our new convention of passing around a |
| 13028 | ScopeChainNode* instead of a ScopeChain*. |
| 13029 | |
| 13030 | * JavaScriptCore.exp: |
| 13031 | * VM/Machine.cpp: |
| 13032 | (KJS::Machine::dumpCallFrame): |
| 13033 | * VM/Machine.h: |
| 13034 | |
| 13035 | 2008-04-15 Oliver Hunt <oliver@apple.com> |
| 13036 | |
| 13037 | Reviewed by Maciej. |
| 13038 | |
| 13039 | Bug 18436: Need to throw exception on read/modify/write or similar resolve for nonexistent property |
| 13040 | <https://bugs.webkit.org/show_bug.cgi?id=18436> |
| 13041 | |
| 13042 | Add op_resolve_base_and_property for read/modify/write operations, |
| 13043 | this adds a "superinstruction" to resolve the base and value of a |
| 13044 | property simultaneously. Just using resolveBase and resolve results |
| 13045 | in an 5% regression in ubench, 30% in loop-empty-resolve (which is |
| 13046 | expected). 1.3% progression in sunspider, 2.1% in ubench, with a |
| 13047 | 21% gain in loop-empty-resolve. The only outlier is function-missing-args |
| 13048 | which gets a 3% regression that I could never resolve. |
| 13049 | |
| 13050 | * VM/CodeBlock.cpp: |
| 13051 | (KJS::CodeBlock::dump): |
| 13052 | * VM/CodeGenerator.cpp: |
| 13053 | (KJS::CodeGenerator::emitResolveBaseAndProperty): |
| 13054 | * VM/CodeGenerator.h: |
| 13055 | * VM/Machine.cpp: |
| 13056 | (KJS::resolveBaseAndProperty): |
| 13057 | (KJS::Machine::privateExecute): |
| 13058 | * VM/Opcode.h: |
| 13059 | * kjs/nodes.cpp: |
| 13060 | (KJS::PostIncResolveNode::emitCode): |
| 13061 | (KJS::PostDecResolveNode::emitCode): |
| 13062 | (KJS::PreIncResolveNode::emitCode): |
| 13063 | (KJS::PreDecResolveNode::emitCode): |
| 13064 | (KJS::ReadModifyResolveNode::emitCode): |
| 13065 | |
| 13066 | 2008-04-15 Maciej Stachowiak <mjs@apple.com> |
| 13067 | |
| 13068 | Reviewed by Oliver. |
| 13069 | |
| 13070 | - fixed "SquirrelFish crashes due to bad scope chain on some SunSpider tests" |
| 13071 | https://bugs.webkit.org/show_bug.cgi?id=18508 |
| 13072 | |
| 13073 | 3d-raytrace and string-unpack-code now run. |
| 13074 | |
| 13075 | The basic approach is to pass around ScopeChainNode* instead of |
| 13076 | ScopeChain*, which in addition to not becoming suddenly an invalid |
| 13077 | pointer also saves an indirection. |
| 13078 | |
| 13079 | This is an 0.4% speedup on SunSpider --squirrelfish (1.8% on --ubench) |
| 13080 | |
| 13081 | * VM/Machine.cpp: |
| 13082 | (KJS::resolve): |
| 13083 | (KJS::resolveBase): |
| 13084 | (KJS::resolveBaseAndFunc): |
| 13085 | (KJS::initializeCallFrame): |
| 13086 | (KJS::scopeChainForCall): |
| 13087 | (KJS::Machine::unwindCallFrame): |
| 13088 | (KJS::Machine::throwException): |
| 13089 | (KJS::Machine::execute): |
| 13090 | (KJS::Machine::privateExecute): |
| 13091 | * VM/Machine.h: |
| 13092 | * VM/Register.h: |
| 13093 | (KJS::Register::): |
| 13094 | * kjs/nodes.cpp: |
| 13095 | (KJS::EvalNode::generateCode): |
| 13096 | (KJS::FunctionBodyNode::generateCode): |
| 13097 | (KJS::ProgramNode::generateCode): |
| 13098 | (KJS::ProgramNode::processDeclarations): |
| 13099 | (KJS::EvalNode::processDeclarations): |
| 13100 | (KJS::FuncDeclNode::makeFunction): |
| 13101 | (KJS::FuncExprNode::makeFunction): |
| 13102 | * kjs/nodes.h: |
| 13103 | (KJS::ProgramNode::): |
| 13104 | (KJS::EvalNode::): |
| 13105 | (KJS::FunctionBodyNode::): |
| 13106 | * kjs/object.h: |
| 13107 | * kjs/scope_chain.h: |
| 13108 | (KJS::ScopeChainNode::ScopeChainNode): |
| 13109 | (KJS::ScopeChainNode::deref): |
| 13110 | (KJS::ScopeChainIterator::ScopeChainIterator): |
| 13111 | (KJS::ScopeChainIterator::operator*): |
| 13112 | (KJS::ScopeChainIterator::operator->): |
| 13113 | (KJS::ScopeChain::ScopeChain): |
| 13114 | (KJS::ScopeChain::node): |
| 13115 | (KJS::ScopeChain::deref): |
| 13116 | (KJS::ScopeChain::ref): |
| 13117 | (KJS::ScopeChainNode::ref): |
| 13118 | (KJS::ScopeChainNode::release): |
| 13119 | (KJS::ScopeChainNode::begin): |
| 13120 | (KJS::ScopeChainNode::end): |
| 13121 | |
| 13122 | 2008-04-14 Geoffrey Garen <ggaren@apple.com> |
| 13123 | |
| 13124 | Reviewed by Oliver Hunt. |
| 13125 | |
| 13126 | Fixed crash when accessing registers in a torn-off activation object. |
| 13127 | |
| 13128 | * kjs/JSActivation.cpp: |
| 13129 | (KJS::JSActivation::copyRegisters): Update our registerOffset after |
| 13130 | copying our registers, since our offset should now be relative to |
| 13131 | our private register array, not the shared register file. |
| 13132 | |
| 13133 | 2008-04-14 Maciej Stachowiak <mjs@apple.com> |
| 13134 | |
| 13135 | Reviewed by Oliver. |
| 13136 | |
| 13137 | - fix a codegen flaw that makes some tests run way too fast or way too slow |
| 13138 | |
| 13139 | The basic problem was that FunctionCallResolveNode results in |
| 13140 | codegen which can incorrectly write an intermediate value into the |
| 13141 | dst register even when that is a local. I added convenience |
| 13142 | functions to CodeGenerator for getting this right, but for now I |
| 13143 | only fixed FunctionCallResolve. |
| 13144 | |
| 13145 | * VM/CodeGenerator.h: |
| 13146 | (KJS::CodeGenerator::tempDestination): |
| 13147 | (KJS::CodeGenerator::): |
| 13148 | * kjs/nodes.cpp: |
| 13149 | (KJS::FunctionCallResolveNode::emitCode): |
| 13150 | |
| 13151 | 2008-04-14 Gabor Loki <loki@inf.u-szeged.hu> |
| 13152 | |
| 13153 | Reviewed and slightly tweaked by Geoffrey Garen. |
| 13154 | |
| 13155 | Bug 18489: Squirrelfish doesn't build on linux |
| 13156 | <https://bugs.webkit.org/show_bug.cgi?id=18489> |
| 13157 | |
| 13158 | * JavaScriptCore.pri: Add VM into include path and its files into |
| 13159 | source set |
| 13160 | * VM/JSPropertyNameIterator.cpp: Fix include name |
| 13161 | * VM/Machine.cpp: Add UNLIKELY macro for GCC |
| 13162 | * VM/Machine.h: Add missing includes |
| 13163 | * VM/RegisterFile.cpp: Add missing include |
| 13164 | * kjs/testkjs.pro: Add VM into include path |
| 13165 | |
| 13166 | 2008-04-14 Geoffrey Garen <ggaren@apple.com> |
| 13167 | |
| 13168 | Reviewed by Sam Weinig. |
| 13169 | |
| 13170 | Restored OwnPtr in some places where I had removed it previously. We |
| 13171 | can have an OwnPtr to an undefined class in a header as long as the |
| 13172 | class's destructor isn't in the header. |
| 13173 | |
| 13174 | 2008-04-14 Geoffrey Garen <ggaren@apple.com> |
| 13175 | |
| 13176 | Reviewed by Sam Weinig. |
| 13177 | |
| 13178 | Fixed access to "this" inside dynamic scopes. |
| 13179 | |
| 13180 | * VM/CodeGenerator.cpp: |
| 13181 | (KJS::CodeGenerator::registerForLocal): Always return a register for |
| 13182 | "this", even if we're not optimizing access to other locals. Because |
| 13183 | "this" is a keyword, it's always in a register and always accessible. |
| 13184 | |
| 13185 | * VM/CodeGenerator.h: |
| 13186 | (KJS::CodeGenerator::shouldOptimizeLocals): Factored out a function |
| 13187 | for determining whether we should optimize access to locals, since |
| 13188 | eval will need to make this test a little more complicated. |
| 13189 | |
| 13190 | 2008-04-14 Maciej Stachowiak <mjs@apple.com> |
| 13191 | |
| 13192 | Reviewed by Adam. |
| 13193 | |
| 13194 | - fix crash when running SunSpider full harness |
| 13195 | |
| 13196 | When growing the register file's buffer to make space for new globals, |
| 13197 | make sure to copy accounting for the fact that the new space is logically |
| 13198 | at the beginning of the buffer in this case, instead of at the end as when |
| 13199 | growing for a new call frame. |
| 13200 | |
| 13201 | * VM/RegisterFile.cpp: |
| 13202 | (KJS::RegisterFile::newBuffer): |
| 13203 | (KJS::RegisterFile::growBuffer): |
| 13204 | (KJS::RegisterFile::addGlobalSlots): |
| 13205 | * VM/RegisterFile.h: |
| 13206 | |
| 13207 | 2008-04-11 Geoffrey Garen <ggaren@apple.com> |
| 13208 | |
| 13209 | Reviewed by Sam Weinig. |
| 13210 | |
| 13211 | Mark constant pools for global and eval code (collectively known as |
| 13212 | "program code"). (Constant pools for function code are already marked by |
| 13213 | their functions.) |
| 13214 | |
| 13215 | The global object is responsible for marking program code constant |
| 13216 | pools. Code blocks add themselves to the mark set at creation time, and |
| 13217 | remove themselves from the mark set at destruction time. |
| 13218 | |
| 13219 | sunspider --squirrelfish reports a 1% speedup, perhaps because |
| 13220 | generateCode() is now non-virtual. |
| 13221 | |
| 13222 | * kjs/nodes.cpp: I had to use manual init and delete in this file |
| 13223 | because putting an OwnPtr into the header would have created a circular |
| 13224 | header dependency. |
| 13225 | |
| 13226 | 2008-04-10 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 13227 | |
| 13228 | Reviewed by Maciej. |
| 13229 | |
| 13230 | Bug 18231: Improve support for function call nodes in SquirrelFish |
| 13231 | <https://bugs.webkit.org/show_bug.cgi?id=18231> |
| 13232 | |
| 13233 | Use correct value of 'this' for function calls. |
| 13234 | |
| 13235 | * VM/CodeBlock.cpp: |
| 13236 | (KJS::CodeBlock::dump): |
| 13237 | * VM/CodeGenerator.cpp: |
| 13238 | (KJS::CodeGenerator::emitResolveBaseAndFunc): |
| 13239 | * VM/CodeGenerator.h: |
| 13240 | * VM/Machine.cpp: |
| 13241 | (KJS::resolveBaseAndFunc): |
| 13242 | (KJS::Machine::privateExecute): |
| 13243 | * VM/Opcode.h: |
| 13244 | * kjs/nodes.cpp: |
| 13245 | (KJS::FunctionCallResolveNode::emitCode): |
| 13246 | |
| 13247 | 2008-04-10 Geoffrey Garen <ggaren@apple.com> |
| 13248 | |
| 13249 | This time for sure. |
| 13250 | |
| 13251 | * kjs/interpreter.cpp: |
| 13252 | (KJS::Interpreter::evaluate): |
| 13253 | |
| 13254 | 2008-04-10 Geoffrey Garen <ggaren@apple.com> |
| 13255 | |
| 13256 | Reviewed by Sam Weinig. |
| 13257 | |
| 13258 | Fixed Interpreter::execute to honor the new model for returning non-NULL |
| 13259 | values when an exception is thrown. |
| 13260 | |
| 13261 | * kjs/interpreter.cpp: |
| 13262 | (KJS::Interpreter::evaluate): |
| 13263 | |
| 13264 | 2008-04-10 Oliver Hunt <oliver@apple.com> |
| 13265 | |
| 13266 | Reviewed by Geoff. |
| 13267 | |
| 13268 | Fix SquirrelFish interpreter to pass internal exceptions back to |
| 13269 | native code correctly. |
| 13270 | |
| 13271 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 13272 | * VM/Machine.cpp: |
| 13273 | (KJS::Machine::privateExecute): |
| 13274 | |
| 13275 | 2008-04-10 Sam Weinig <sam@webkit.org> |
| 13276 | |
| 13277 | Reviewed by Geoffrey Garen. |
| 13278 | |
| 13279 | Replace the use of getCallData in op_construct with the new |
| 13280 | getConstructData function that replaces implementsConstruct. |
| 13281 | |
| 13282 | * API/JSCallbackConstructor.cpp: |
| 13283 | (KJS::JSCallbackConstructor::getConstructData): |
| 13284 | * API/JSCallbackConstructor.h: |
| 13285 | * API/JSCallbackObject.h: |
| 13286 | * API/JSCallbackObjectFunctions.h: |
| 13287 | (KJS::::getConstructData): |
| 13288 | (KJS::::construct): |
| 13289 | * API/JSObjectRef.cpp: |
| 13290 | (JSObjectIsConstructor): |
| 13291 | * JavaScriptCore.exp: |
| 13292 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 13293 | * VM/Machine.cpp: |
| 13294 | (KJS::Machine::privateExecute): |
| 13295 | * kjs/CallData.h: |
| 13296 | * kjs/ConstructData.h: Copied from JavaScriptCore/kjs/CallData.h. |
| 13297 | * kjs/array_object.cpp: |
| 13298 | (KJS::ArrayObjectImp::getConstructData): |
| 13299 | * kjs/array_object.h: |
| 13300 | * kjs/bool_object.cpp: |
| 13301 | (KJS::BooleanObjectImp::getConstructData): |
| 13302 | * kjs/bool_object.h: |
| 13303 | * kjs/date_object.cpp: |
| 13304 | (KJS::DateObjectImp::getConstructData): |
| 13305 | * kjs/date_object.h: |
| 13306 | * kjs/error_object.cpp: |
| 13307 | (KJS::ErrorObjectImp::getConstructData): |
| 13308 | (KJS::NativeErrorImp::getConstructData): |
| 13309 | * kjs/error_object.h: |
| 13310 | * kjs/function.cpp: |
| 13311 | (KJS::FunctionImp::getCallData): |
| 13312 | (KJS::FunctionImp::getConstructData): |
| 13313 | (KJS::FunctionImp::construct): |
| 13314 | * kjs/function.h: |
| 13315 | * kjs/function_object.cpp: |
| 13316 | (KJS::FunctionObjectImp::getConstructData): |
| 13317 | * kjs/function_object.h: |
| 13318 | * kjs/nodes.cpp: |
| 13319 | (KJS::NewExprNode::inlineEvaluate): |
| 13320 | * kjs/number_object.cpp: |
| 13321 | (KJS::NumberObjectImp::getConstructData): |
| 13322 | * kjs/number_object.h: |
| 13323 | * kjs/object.cpp: |
| 13324 | * kjs/object.h: |
| 13325 | * kjs/object_object.cpp: |
| 13326 | (KJS::ObjectObjectImp::getConstructData): |
| 13327 | * kjs/object_object.h: |
| 13328 | * kjs/regexp_object.cpp: |
| 13329 | (KJS::RegExpObjectImp::getConstructData): |
| 13330 | * kjs/regexp_object.h: |
| 13331 | * kjs/string_object.cpp: |
| 13332 | (KJS::StringObjectImp::getConstructData): |
| 13333 | * kjs/string_object.h: |
| 13334 | * kjs/value.cpp: |
| 13335 | (KJS::JSCell::getConstructData): |
| 13336 | * kjs/value.h: |
| 13337 | (KJS::JSValue::getConstructData): |
| 13338 | |
| 13339 | 2008-04-10 Oliver Hunt <oliver@apple.com> |
| 13340 | |
| 13341 | Reviewed by Geoff. |
| 13342 | |
| 13343 | Bug 18420: SquirrelFish: need to throw Reference and Type errors |
| 13344 | when attempting invalid operations on JSValues |
| 13345 | |
| 13346 | Add validation and exception checks to SquirrelFish so that the |
| 13347 | correct exceptions are thrown for undefined variables, type errors |
| 13348 | and toObject failure. Also handle exceptions thrown by native |
| 13349 | function calls. |
| 13350 | |
| 13351 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 13352 | * VM/ExceptionHelpers.cpp: Added. |
| 13353 | (KJS::substitute): |
| 13354 | (KJS::createError): |
| 13355 | (KJS::createUndefinedVariableError): |
| 13356 | * VM/ExceptionHelpers.h: Added. |
| 13357 | Helper functions |
| 13358 | * VM/Machine.cpp: |
| 13359 | (KJS::resolve): |
| 13360 | Modified to signal failure |
| 13361 | (KJS::isNotObject): |
| 13362 | Wrapper for JSValue::isObject and exception creation (these need |
| 13363 | to be merged, lest GCC go off the deep end) |
| 13364 | (KJS::Machine::privateExecute): |
| 13365 | Adding the many exception and validity checks. |
| 13366 | |
| 13367 | * kjs/JSNotAnObject.cpp: Added. |
| 13368 | Stub object used to reduce the need for multiple exception checks |
| 13369 | when toObject fails. |
| 13370 | (KJS::JSNotAnObject::toPrimitive): |
| 13371 | (KJS::JSNotAnObject::getPrimitiveNumber): |
| 13372 | (KJS::JSNotAnObject::toBoolean): |
| 13373 | (KJS::JSNotAnObject::toNumber): |
| 13374 | (KJS::JSNotAnObject::toString): |
| 13375 | (KJS::JSNotAnObject::toObject): |
| 13376 | (KJS::JSNotAnObject::mark): |
| 13377 | (KJS::JSNotAnObject::getOwnPropertySlot): |
| 13378 | (KJS::JSNotAnObject::put): |
| 13379 | (KJS::JSNotAnObject::deleteProperty): |
| 13380 | (KJS::JSNotAnObject::defaultValue): |
| 13381 | (KJS::JSNotAnObject::construct): |
| 13382 | (KJS::JSNotAnObject::callAsFunction): |
| 13383 | (KJS::JSNotAnObject::getPropertyNames): |
| 13384 | * kjs/JSNotAnObject.h: Added. |
| 13385 | (KJS::JSNotAnObject::JSNotAnObject): |
| 13386 | * kjs/JSImmediate.cpp: |
| 13387 | (KJS::JSImmediate::toObject): |
| 13388 | modified to create an JSNotAnObject rather than throwing an exception |
| 13389 | directly. |
| 13390 | |
| 13391 | 2008-04-10 Geoffrey Garen <ggaren@apple.com> |
| 13392 | |
| 13393 | Reviewed by Oliver Hunt. |
| 13394 | |
| 13395 | Pass a function body node its function's scope chain, rather than the |
| 13396 | current execution context's scope chain, when compiling it. |
| 13397 | |
| 13398 | This doesn't matter yet, but it will once we start using the scope |
| 13399 | chain during compilation. |
| 13400 | |
| 13401 | sunspider --squirrelfish notes a tiny speedup. |
| 13402 | |
| 13403 | * VM/Machine.cpp: |
| 13404 | (KJS::Machine::privateExecute): |
| 13405 | |
| 13406 | 2008-04-10 Geoffrey Garen <ggaren@apple.com> |
| 13407 | |
| 13408 | Reviewed by Oliver Hunt. |
| 13409 | |
| 13410 | Fix two bugs when throwing exceptions from re-entrant JS calls: |
| 13411 | |
| 13412 | (1) Don't shrink the register file to 0, since our caller may still |
| 13413 | be using it. |
| 13414 | |
| 13415 | (2) In case of exception, return jsNull() instead of 0 because, |
| 13416 | surprisingly, some JavaScriptCore clients rely on a function's return |
| 13417 | value being safe to operate on even if the function threw an exception. |
| 13418 | |
| 13419 | Also: |
| 13420 | |
| 13421 | - Changed FunctionImp::callAsFunction to honor the new semantics of |
| 13422 | exceptions not returning 0. |
| 13423 | |
| 13424 | - Renamed "handlerPC" to "handlerVPC" to match other uses of "VPC". |
| 13425 | |
| 13426 | - Renamed "exceptionData" to "exceptionValue", because "data" seemed to |
| 13427 | imply something more than just a JSValue. |
| 13428 | |
| 13429 | - Merged prepareException into throwException, since throwException was |
| 13430 | its only caller, and it seemed weird that throwException didn't take |
| 13431 | an exception as an argument. |
| 13432 | |
| 13433 | sunspider --squirrelfish does not seem to complain on my machine, but it |
| 13434 | complains a little (.6%) on Oliver's. |
| 13435 | |
| 13436 | 2008-04-10 Geoffrey Garen <ggaren@apple.com> |
| 13437 | |
| 13438 | Reviewed by Maciej Stachowiak. |
| 13439 | |
| 13440 | Fixed op_construct for CallTypeNative to reacquire "r" before setting |
| 13441 | its return value, since registerBase can theoretically change during the |
| 13442 | execution of arbitrary code. (Not sure if any native constructors |
| 13443 | actually make this possible.) |
| 13444 | |
| 13445 | sunspider --squirrelfish does not seem to complain. |
| 13446 | |
| 13447 | * VM/Machine.cpp: |
| 13448 | (KJS::Machine::privateExecute): |
| 13449 | |
| 13450 | 2008-04-10 Geoffrey Garen <ggaren@apple.com> |
| 13451 | |
| 13452 | Reviewed by Oliver Hunt and Sam Weinig. |
| 13453 | |
| 13454 | Re-entrant execution of function code (global code -> built-in function |
| 13455 | -> JS function): |
| 13456 | |
| 13457 | Miraculously, sunspider --squirrelfish does not seem to complain. |
| 13458 | |
| 13459 | A re-entrant function call is the same as a normal function call with |
| 13460 | one exception: the re-entrant call leaves everything except for |
| 13461 | CallerCodeBlock in the call frame header uninitialized, since the call |
| 13462 | doesn't need to return to JS code. (It sets CallerCodeBlock to 0, to |
| 13463 | indicate that the call shouldn't return to JS code.) |
| 13464 | |
| 13465 | Also fixed a few issues along the way: |
| 13466 | |
| 13467 | - Fixed two bugs in the read-write List implementation that caused |
| 13468 | m_size and m_buffer to go stale. |
| 13469 | |
| 13470 | - Changed native call code to update "r" *before* setting the return |
| 13471 | value, since the call may in turn call JS code, which changes the value |
| 13472 | of "r". |
| 13473 | |
| 13474 | - Migrated initialization of "r" outside of Machine::privateExecute, |
| 13475 | because global code and function code initialize "r" differently. |
| 13476 | |
| 13477 | - Migrated a codegen warning from Machine::privateExecute to the wiki. |
| 13478 | |
| 13479 | - Removed unnecessary "r" parameter from slideRegisterWindowForCall |
| 13480 | |
| 13481 | * VM/Machine.cpp: |
| 13482 | (KJS::slideRegisterWindowForCall): |
| 13483 | (KJS::scopeChainForCall): |
| 13484 | (KJS::Machine::execute): |
| 13485 | (KJS::Machine::privateExecute): |
| 13486 | * VM/Machine.h: |
| 13487 | * kjs/function.cpp: |
| 13488 | (KJS::FunctionImp::callAsFunction): |
| 13489 | * kjs/list.cpp: |
| 13490 | (KJS::List::getSlice): |
| 13491 | * kjs/list.h: |
| 13492 | (KJS::List::clear): |
| 13493 | |
| 13494 | 2008-04-10 Maciej Stachowiak <mjs@apple.com> |
| 13495 | |
| 13496 | Reviewed by Oliver. |
| 13497 | |
| 13498 | - fix problem with code generation for return with no argument |
| 13499 | |
| 13500 | 3d-cube now runs |
| 13501 | |
| 13502 | * kjs/nodes.cpp: |
| 13503 | (KJS::ReturnNode::emitCode): |
| 13504 | |
| 13505 | 2008-04-10 Maciej Stachowiak <mjs@apple.com> |
| 13506 | |
| 13507 | Reviewed by Oliver. |
| 13508 | |
| 13509 | - Implement support for JS constructors |
| 13510 | |
| 13511 | access-binary-trees and access-nbody now run. |
| 13512 | |
| 13513 | Inexplicably a 1% speedup. |
| 13514 | |
| 13515 | * VM/Machine.cpp: |
| 13516 | (KJS::initializeCallFrame): |
| 13517 | (KJS::Machine::privateExecute): |
| 13518 | * VM/Machine.h: |
| 13519 | (KJS::Machine::): |
| 13520 | |
| 13521 | 2008-04-10 Maciej Stachowiak <mjs@apple.com> |
| 13522 | |
| 13523 | Reviewed by Oliver. |
| 13524 | |
| 13525 | - More code cleanup in preparation for JS constructors |
| 13526 | |
| 13527 | Factor the remaining interesting parts of JS function calls into |
| 13528 | slideRegisterWindowForCall and scopeChainForCall. |
| 13529 | |
| 13530 | * VM/Machine.cpp: |
| 13531 | (KJS::slideRegisterWindowForCall): |
| 13532 | (KJS::scopeChainForCall): |
| 13533 | (KJS::Machine::privateExecute): |
| 13534 | |
| 13535 | 2008-04-10 Maciej Stachowiak <mjs@apple.com> |
| 13536 | |
| 13537 | Reviewed by Geoff. |
| 13538 | |
| 13539 | - Code cleanup in preparation for JS constructors |
| 13540 | |
| 13541 | - Renamed returnInfo to callFrame. |
| 13542 | - Made an enum which defines what goes where in the call frame. |
| 13543 | - Factored out initializeCallFrame function from op_call |
| 13544 | |
| 13545 | * VM/CodeGenerator.cpp: |
| 13546 | (KJS::CodeGenerator::emitCall): |
| 13547 | (KJS::CodeGenerator::emitConstruct): |
| 13548 | * VM/Machine.cpp: |
| 13549 | (KJS::Machine::dumpRegisters): |
| 13550 | (KJS::initializeCallFrame): |
| 13551 | (KJS::Machine::unwindCallFrame): |
| 13552 | (KJS::Machine::execute): |
| 13553 | (KJS::Machine::privateExecute): |
| 13554 | * VM/Machine.h: |
| 13555 | (KJS::Machine::): |
| 13556 | |
| 13557 | 2008-04-10 Geoffrey Garen <ggaren@apple.com> |
| 13558 | |
| 13559 | Reviewed by Oliver Hunt. |
| 13560 | |
| 13561 | Fixed two bugs in register allocation for function calls: |
| 13562 | |
| 13563 | (1) op_call used to allocate codeBlock->numVars too many registers for |
| 13564 | each call frame, due to duplicated math. Fixing this revealed... |
| 13565 | |
| 13566 | (2) By unconditionally calling resize(), op_call used to truncate the |
| 13567 | register file when calling a function whose registers fit wholly within |
| 13568 | the register file already allocated by its caller. |
| 13569 | |
| 13570 | sunspider --squirrelfish reports no regression. |
| 13571 | |
| 13572 | I also threw in a little extra formatting to dumpCallFrame, because it |
| 13573 | helped me debug these issues. |
| 13574 | |
| 13575 | * VM/Machine.cpp: |
| 13576 | (KJS::Machine::dumpRegisters): |
| 13577 | (KJS::Machine::execute): |
| 13578 | (KJS::Machine::privateExecute): |
| 13579 | * VM/RegisterFile.h: |
| 13580 | (KJS::RegisterFile::shrink): |
| 13581 | (KJS::RegisterFile::grow): |
| 13582 | * VM/RegisterFileStack.cpp: |
| 13583 | (KJS::RegisterFileStack::popRegisterFile): |
| 13584 | |
| 13585 | 2008-04-09 Geoffrey Garen <ggaren@apple.com> |
| 13586 | |
| 13587 | Reviewed by Oliver Hunt. |
| 13588 | |
| 13589 | Next step toward re-entrant execution of function code (global code -> |
| 13590 | built-in function -> JS function): |
| 13591 | |
| 13592 | Made op_ret return from Machine::privateExecute if its calling codeBlock |
| 13593 | is NULL. |
| 13594 | |
| 13595 | I'm checking this in by itself to demonstrate that a more clever |
| 13596 | mechanism is not necessary for performance. |
| 13597 | |
| 13598 | sunspider --squirrelfish reports no regression. |
| 13599 | |
| 13600 | * ChangeLog: |
| 13601 | * VM/Machine.cpp: |
| 13602 | (KJS::Machine::execute): |
| 13603 | (KJS::Machine::privateExecute): |
| 13604 | |
| 13605 | 2008-04-09 Geoffrey Garen <ggaren@apple.com> |
| 13606 | |
| 13607 | Reviewed by Maciej Stachowiak. |
| 13608 | |
| 13609 | Next step toward re-entrant execution of function code (global code -> |
| 13610 | built-in function -> JS function): |
| 13611 | |
| 13612 | Made Machine::execute return a value. |
| 13613 | |
| 13614 | Sketched out some code for Machine::execute for functions -- still |
| 13615 | doesn't work yet, though. |
| 13616 | |
| 13617 | sunspider --squirrelfish reports no regression. |
| 13618 | |
| 13619 | * VM/Machine.cpp: |
| 13620 | (KJS::Machine::execute): |
| 13621 | (KJS::Machine::privateExecute): |
| 13622 | * VM/Machine.h: |
| 13623 | * kjs/interpreter.cpp: |
| 13624 | (KJS::Interpreter::evaluate): |
| 13625 | * kjs/testkjs.cpp: |
| 13626 | (runWithScripts): |
| 13627 | |
| 13628 | 2008-04-09 Geoffrey Garen <ggaren@apple.com> |
| 13629 | |
| 13630 | Reviewed by Sam Weinig. |
| 13631 | |
| 13632 | First step toward re-entrant execution of function code (global code -> |
| 13633 | built-in function -> JS function): |
| 13634 | |
| 13635 | Tiny bit of refactoring in the Machine class. |
| 13636 | |
| 13637 | sunspider --squirrelfish reports no regression. |
| 13638 | |
| 13639 | * VM/Machine.cpp: |
| 13640 | (KJS::Machine::dumpRegisters): |
| 13641 | (KJS::Machine::unwindCallFrame): |
| 13642 | (KJS::Machine::execute): |
| 13643 | (KJS::Machine::privateExecute): |
| 13644 | * VM/Machine.h: |
| 13645 | (KJS::Machine::isGlobalCallFrame): |
| 13646 | * kjs/interpreter.cpp: |
| 13647 | (KJS::Interpreter::evaluate): |
| 13648 | |
| 13649 | 2008-04-08 Geoffrey Garen <ggaren@apple.com> |
| 13650 | |
| 13651 | Reviewed by Oliver Hunt. |
| 13652 | |
| 13653 | Support for re-entrant execution of global code (global code -> built-in |
| 13654 | function -> global code). |
| 13655 | |
| 13656 | Keep a stack of register files instead of just one. Globals propogate |
| 13657 | between register files as the register files enter and exit the stack. |
| 13658 | |
| 13659 | An activation still uses its own register file's base as its |
| 13660 | registerBase, but the global object uses the register file *stack*'s |
| 13661 | registerBase, which updates dynamically to match the register file at |
| 13662 | the top of the stack. |
| 13663 | |
| 13664 | sunspider --squirrelfish reports no regression. |
| 13665 | |
| 13666 | 2008-04-08 Maciej Stachowiak <mjs@apple.com> |
| 13667 | |
| 13668 | Reviewed by Geoff. |
| 13669 | |
| 13670 | - initial preparatory work for JS constructors |
| 13671 | |
| 13672 | 1) Allocate registers for the returnInfo block and "this" value when generating code for |
| 13673 | op_construct. These are not used yet, but the JS branch of op_construct will use them. |
| 13674 | |
| 13675 | 2) Adjust argc and argv appropriately for native constructor calls. |
| 13676 | |
| 13677 | 3) Assign return value in a more straightforward way in op_ret since this is actually |
| 13678 | a bit faster (and makes up for the allocation of extra registers above). |
| 13679 | |
| 13680 | * VM/CodeGenerator.cpp: |
| 13681 | (KJS::CodeGenerator::emitConstruct): |
| 13682 | * VM/Machine.cpp: |
| 13683 | (KJS::Machine::privateExecute): |
| 13684 | |
| 13685 | 2008-04-07 Geoffrey Garen <ggaren@apple.com> |
| 13686 | |
| 13687 | Reviewed by Maciej Stachowiak. |
| 13688 | |
| 13689 | Fixed crashing SunSpider tests. |
| 13690 | |
| 13691 | Let's just pretend this never happened, bokay? |
| 13692 | |
| 13693 | * VM/CodeGenerator.cpp: |
| 13694 | (KJS::CodeGenerator::CodeGenerator): |
| 13695 | * VM/CodeGenerator.h: |
| 13696 | * VM/RegisterFile.cpp: |
| 13697 | (KJS::RegisterFile::addGlobals): |
| 13698 | |
| 13699 | 2008-04-07 Geoffrey Garen <ggaren@apple.com> |
| 13700 | |
| 13701 | Reviewed by Oliver Hunt. |
| 13702 | |
| 13703 | Restored dumping of generated code as a command-line switch: |
| 13704 | run-testkjs -d will do it. |
| 13705 | |
| 13706 | 2008-04-07 Geoffrey Garen <ggaren@apple.com> |
| 13707 | |
| 13708 | Reviewed by Oliver Hunt. |
| 13709 | |
| 13710 | Next step toward supporting re-entrant evaluation: Moved register file |
| 13711 | maintenance code into a proper "RegisterFile" class. |
| 13712 | |
| 13713 | There's a subtle change to the register file's internal layout: for |
| 13714 | global code / the global object, registerOffset is always 0 now. In |
| 13715 | other words, all register counting starts at 0, not 0 + (number of |
| 13716 | global variables). The helps simplify accounting when the number of |
| 13717 | global variables changes. |
| 13718 | |
| 13719 | 2008-04-07 Oliver Hunt <oliver@apple.com> |
| 13720 | |
| 13721 | Reviewed by Geoff. |
| 13722 | |
| 13723 | Bug 18338: Support exceptions in SquirrelFish <http://bugs.webkit.org/show_bug.cgi?id=18338> |
| 13724 | |
| 13725 | Initial support for exceptions in SquirrelFish, only supports finalisers in the |
| 13726 | simple cases (eg. exceptions and non-goto/return across finaliser boundaries). |
| 13727 | This doesn't add the required exception checks to existing code, it merely adds |
| 13728 | support for throw, catch, and the required stack unwinding. |
| 13729 | |
| 13730 | * VM/CodeBlock.cpp: |
| 13731 | (KJS::CodeBlock::dump): |
| 13732 | (KJS::CodeBlock::getHandlerForVPC): |
| 13733 | * VM/CodeBlock.h: |
| 13734 | * VM/CodeGenerator.cpp: |
| 13735 | (KJS::CodeGenerator::emitCatch): |
| 13736 | (KJS::CodeGenerator::emitThrow): |
| 13737 | * VM/CodeGenerator.h: |
| 13738 | * VM/JSPropertyNameIterator.cpp: |
| 13739 | (KJS::JSPropertyNameIterator::create): |
| 13740 | * VM/Machine.cpp: |
| 13741 | (KJS::prepareException): |
| 13742 | (KJS::Machine::unwindCallFrame): |
| 13743 | (KJS::Machine::throwException): |
| 13744 | (KJS::Machine::privateExecute): |
| 13745 | * VM/Machine.h: |
| 13746 | * VM/Opcode.h: |
| 13747 | * kjs/nodes.cpp: |
| 13748 | (KJS::ThrowNode::emitCode): |
| 13749 | (KJS::TryNode::emitCode): |
| 13750 | * kjs/nodes.h: |
| 13751 | * kjs/scope_chain.cpp: |
| 13752 | (KJS::ScopeChain::depth): |
| 13753 | * kjs/scope_chain.h: |
| 13754 | |
| 13755 | 2008-04-06 Geoffrey Garen <ggaren@apple.com> |
| 13756 | |
| 13757 | Reviewed by Oliver Hunt. |
| 13758 | |
| 13759 | First step toward supporting re-entrant evaluation: Switch register |
| 13760 | clients from using "registers", a pointer to a register vector, to |
| 13761 | "registerBase", an indirect pointer to the logical first entry in the |
| 13762 | register file. (The logical first entry is the first entry that is not |
| 13763 | a global variable). |
| 13764 | |
| 13765 | With a vector, offsets into the register file remain good when the |
| 13766 | underlying buffer reallocates, but they go bad when the logical |
| 13767 | first entry moves. (The logical first entry moves when new global |
| 13768 | variables get added to the beginning of the register file.) With an |
| 13769 | indirect pointer to the logical first entry, offsets will remain good |
| 13770 | regardless. |
| 13771 | |
| 13772 | 1.4% speedup on sunspider --squirrelfish. I suspect this is due to |
| 13773 | reduced allocation when creating closures, and reduced indirection |
| 13774 | through the register vector. |
| 13775 | |
| 13776 | * wtf/Vector.h: Added an accessor for an indirect pointer to the vector's |
| 13777 | buffer, which we currently use (incorrectly) for registerBase. This is |
| 13778 | temporary scaffolding to allow us to change client code without |
| 13779 | changing behavior. |
| 13780 | |
| 13781 | 2008-04-06 Sam Weinig <sam@webkit.org> |
| 13782 | |
| 13783 | Reviewed by Oliver Hunt. |
| 13784 | |
| 13785 | Implement codegen for ReadModifyDotNode. |
| 13786 | |
| 13787 | * kjs/nodes.cpp: |
| 13788 | (KJS::ReadModifyDotNode::emitCode): |
| 13789 | * kjs/nodes.h: |
| 13790 | |
| 13791 | 2008-04-06 Sam Weinig <sam@webkit.org> |
| 13792 | |
| 13793 | Reviewed by Oliver Hunt. |
| 13794 | |
| 13795 | Fix codegen for PostIncDotNode and implement codegen for PostIncBracketNode, |
| 13796 | PostDecBracketNode and PostDecDotNode. |
| 13797 | |
| 13798 | * kjs/nodes.cpp: |
| 13799 | (KJS::PostIncBracketNode::emitCode): |
| 13800 | (KJS::PostDecBracketNode::emitCode): |
| 13801 | (KJS::PostIncDotNode::emitCode): |
| 13802 | (KJS::PostDecDotNode::emitCode): |
| 13803 | * kjs/nodes.h: |
| 13804 | |
| 13805 | 2008-04-06 Sam Weinig <sam@webkit.org> |
| 13806 | |
| 13807 | Reviewed by Geoffrey Garen. |
| 13808 | |
| 13809 | Implement codegen for PreDecResolveNode, PreIncBracketNode, PreDecBracketNode, |
| 13810 | PreIncDotNode and PreDecDotNode. This required adding one new op code, op_pre_dec. |
| 13811 | |
| 13812 | * VM/CodeBlock.cpp: |
| 13813 | (KJS::CodeBlock::dump): |
| 13814 | * VM/CodeGenerator.cpp: |
| 13815 | (KJS::CodeGenerator::emitPreDec): |
| 13816 | * VM/CodeGenerator.h: |
| 13817 | * VM/Machine.cpp: |
| 13818 | (KJS::Machine::privateExecute): |
| 13819 | * VM/Opcode.h: |
| 13820 | * kjs/nodes.cpp: |
| 13821 | (KJS::PreDecResolveNode::emitCode): |
| 13822 | (KJS::PreIncBracketNode::emitCode): |
| 13823 | (KJS::PreDecBracketNode::emitCode): |
| 13824 | (KJS::PreIncDotNode::emitCode): |
| 13825 | (KJS::PreDecDotNode::emitCode): |
| 13826 | * kjs/nodes.h: |
| 13827 | |
| 13828 | 2008-04-06 Geoffrey Garen <ggaren@apple.com> |
| 13829 | |
| 13830 | Reviewed by Sam Weinig. |
| 13831 | |
| 13832 | Improved register dumping, plus a liberal smattering of "const". Here's |
| 13833 | what the new format looks like: |
| 13834 | |
| 13835 | (gdb) call (void)dumpCallFrame(codeBlock, scopeChain, registers->begin(), r) |
| 13836 | 4 instructions; 48 bytes at 0x509210; 3 locals (2 parameters); 1 temporaries |
| 13837 | |
| 13838 | [ 0] load lr1, undefined(@k0) |
| 13839 | [ 3] load lr1, 2(@k1) |
| 13840 | [ 6] add tr0, lr2, lr1 |
| 13841 | [ 10] ret tr0 |
| 13842 | |
| 13843 | Constants: |
| 13844 | k0 = undefined |
| 13845 | k1 = 2 |
| 13846 | |
| 13847 | Register frame: |
| 13848 | |
| 13849 | ---------------------------------------- |
| 13850 | use | address | value |
| 13851 | ---------------------------------------- |
| 13852 | [return info] | 0x80ac08 | 0x5081c0 |
| 13853 | [return info] | 0x80ac0c | 0x508e90 |
| 13854 | [return info] | 0x80ac10 | 0x504acc |
| 13855 | [return info] | 0x80ac14 | 0x2 |
| 13856 | [return info] | 0x80ac18 | 0x0 |
| 13857 | [return info] | 0x80ac1c | 0x7 |
| 13858 | [return info] | 0x80ac20 | 0x0 |
| 13859 | ---------------------------------------- |
| 13860 | [param] | 0x80ac24 | 0x1 |
| 13861 | [param] | 0x80ac28 | 0x7 |
| 13862 | [var] | 0x80ac2c | 0xb |
| 13863 | [temp] | 0x80ac30 | 0xf |
| 13864 | |
| 13865 | 2008-04-06 Geoffrey Garen <ggaren@apple.com> |
| 13866 | |
| 13867 | Reviewed by Sam Weinig. |
| 13868 | |
| 13869 | Support for evaluating multiple scripts in the same global environment. |
| 13870 | (Still don't support re-entrant evaluation yet.) |
| 13871 | |
| 13872 | The main changes here are: |
| 13873 | |
| 13874 | (1) Obey the ECMA 10.1.3 rules regarding how to resolve collisions when |
| 13875 | a given symbol is declared more than once. (This patch fixes the same |
| 13876 | issue for function code, too.) |
| 13877 | |
| 13878 | (2) In the case of var and/or function collisions, reuse the existing |
| 13879 | storage slot. For global code, this is required for previously |
| 13880 | generated instructions to continue to work. For function code, it's |
| 13881 | more of a "nice to have": it makes register layout in the case of |
| 13882 | collisions easier to understand, and has the added benefit of saving |
| 13883 | memory. |
| 13884 | |
| 13885 | (3) Allocate slots in the CodeGenerator's m_locals vector in parallel |
| 13886 | to register indexes in the symbol table. This ensures that, given an |
| 13887 | index in the symbol table, we can find the corresponding RegisterID |
| 13888 | without hashing, which speeds up codegen. |
| 13889 | |
| 13890 | I moved responsibility for emitting var and function initialization |
| 13891 | instructions into the CodeGenerator, because bookkeeping in cases where |
| 13892 | var, function, and/or parameter names collide requires a lot of |
| 13893 | internal knowledge about the CodeGenerator. |
| 13894 | |
| 13895 | * VM/CodeGenerator.cpp: |
| 13896 | (KJS::CodeGenerator::addVar): Removed responsibility for checking whether |
| 13897 | a var declaration overwrites "arguments", because the check is |
| 13898 | inappropriate for global code, which may not have a pre-existing |
| 13899 | "arguments" symbol in scope. Also changed this function to return a |
| 13900 | boolean indicating whether addVar actually created a new RegisterID, |
| 13901 | or just reused an old one. |
| 13902 | |
| 13903 | (KJS::CodeGenerator::CodeGenerator): Split out the constructors for |
| 13904 | function code and global code, since they're quite different now. |
| 13905 | |
| 13906 | (KJS::CodeGenerator::registerForLocal): This function does its job |
| 13907 | without any hashing now. |
| 13908 | |
| 13909 | * VM/Machine.cpp: Move old globals and update "r" before executing a |
| 13910 | new script. That way, old globals stay at a constant offset from "r", |
| 13911 | and previously optimized code still works. |
| 13912 | |
| 13913 | * VM/RegisterID.h: Added the ability to allocate a RegisterID before |
| 13914 | initializing its index field. We use this for parameters now. |
| 13915 | |
| 13916 | * kjs/JSVariableObject.h: |
| 13917 | (KJS::JSVariableObject::symbolTableGet): Changed the ungettable getter |
| 13918 | ASSERT to account for the fact that symbol indexes are all negative. |
| 13919 | |
| 13920 | 2008-04-05 Sam Weinig <sam@webkit.org> |
| 13921 | |
| 13922 | Reviewed by Geoffrey Garen. |
| 13923 | |
| 13924 | Implement codegen for InNode. |
| 13925 | |
| 13926 | * VM/CodeBlock.cpp: |
| 13927 | (KJS::CodeBlock::dump): |
| 13928 | * VM/CodeGenerator.cpp: |
| 13929 | (KJS::CodeGenerator::emitIn): |
| 13930 | * VM/CodeGenerator.h: |
| 13931 | * VM/Machine.cpp: |
| 13932 | (KJS::Machine::privateExecute): |
| 13933 | * VM/Opcode.h: |
| 13934 | * kjs/nodes.cpp: |
| 13935 | (KJS::InNode::emitCode): |
| 13936 | * kjs/nodes.h: |
| 13937 | |
| 13938 | 2008-04-05 Sam Weinig <sam@webkit.org> |
| 13939 | |
| 13940 | Reviewed by Oliver Hunt. |
| 13941 | |
| 13942 | - Implement codegen for DeleteResolveNode, DeleteBracketNode, DeleteDotNode and DeleteValueNode. |
| 13943 | |
| 13944 | * VM/CodeBlock.cpp: |
| 13945 | (KJS::CodeBlock::dump): |
| 13946 | * VM/CodeGenerator.cpp: |
| 13947 | (KJS::CodeGenerator::emitGetPropId): |
| 13948 | (KJS::CodeGenerator::emitPutPropId): |
| 13949 | (KJS::CodeGenerator::emitDeletePropId): |
| 13950 | (KJS::CodeGenerator::emitDeletePropVal): |
| 13951 | (KJS::CodeGenerator::emitPutPropIndex): |
| 13952 | * VM/CodeGenerator.h: |
| 13953 | * VM/Machine.cpp: |
| 13954 | (KJS::Machine::privateExecute): |
| 13955 | * VM/Opcode.h: |
| 13956 | * kjs/nodes.cpp: |
| 13957 | (KJS::DeleteResolveNode::emitCode): |
| 13958 | (KJS::DeleteBracketNode::emitCode): |
| 13959 | (KJS::DeleteDotNode::emitCode): |
| 13960 | (KJS::DeleteValueNode::emitCode): |
| 13961 | * kjs/nodes.h: |
| 13962 | |
| 13963 | 2008-04-04 Sam Weinig <sam@webkit.org> |
| 13964 | |
| 13965 | Reviewed by Oliver Hunt. |
| 13966 | |
| 13967 | - Implement codegen for Switch statements. |
| 13968 | |
| 13969 | * VM/CodeGenerator.cpp: |
| 13970 | (KJS::CodeGenerator::pushJumpContext): |
| 13971 | (KJS::CodeGenerator::popJumpContext): |
| 13972 | (KJS::CodeGenerator::jumpContextForLabel): |
| 13973 | * VM/CodeGenerator.h: |
| 13974 | Rename LoopContext to JumpContext now that it used of Switch statements in addition |
| 13975 | to loops. |
| 13976 | |
| 13977 | * kjs/nodes.cpp: |
| 13978 | (KJS::DoWhileNode::emitCode): |
| 13979 | (KJS::WhileNode::emitCode): |
| 13980 | (KJS::ForNode::emitCode): |
| 13981 | (KJS::ForInNode::emitCode): |
| 13982 | (KJS::ContinueNode::emitCode): |
| 13983 | (KJS::BreakNode::emitCode): |
| 13984 | (KJS::CaseBlockNode::emitCodeForBlock): |
| 13985 | (KJS::SwitchNode::emitCode): |
| 13986 | * kjs/nodes.h: |
| 13987 | (KJS::CaseClauseNode::expr): |
| 13988 | (KJS::CaseClauseNode::children): |
| 13989 | (KJS::CaseBlockNode::): |
| 13990 | |
| 13991 | 2008-04-03 Maciej Stachowiak <mjs@apple.com> |
| 13992 | |
| 13993 | Reviewed by Sam. |
| 13994 | |
| 13995 | - fix crash in codegen from new nodes |
| 13996 | |
| 13997 | * VM/CodeGenerator.cpp: |
| 13998 | (KJS::CodeGenerator::emitConstruct): |
| 13999 | * kjs/nodes.h: |
| 14000 | |
| 14001 | 2008-04-03 Maciej Stachowiak <mjs@apple.com> |
| 14002 | |
| 14003 | Reviewed by Geoff. |
| 14004 | |
| 14005 | * kjs/nodes.cpp: |
| 14006 | (KJS::ReadModifyResolveNode::emitCode): |
| 14007 | (KJS::ReadModifyBracketNode::emitCode): |
| 14008 | * kjs/nodes.h: |
| 14009 | |
| 14010 | 2008-04-02 Maciej Stachowiak <mjs@apple.com> |
| 14011 | |
| 14012 | Reviewed by Geoff. |
| 14013 | |
| 14014 | - take a shot at marking constant pools for global and eval code |
| 14015 | |
| 14016 | Geoff says this won't really work in all cases but is an ok stopgap. |
| 14017 | |
| 14018 | * kjs/JSGlobalObject.cpp: |
| 14019 | (KJS::JSGlobalObject::mark): |
| 14020 | |
| 14021 | 2008-04-02 Maciej Stachowiak <mjs@apple.com> |
| 14022 | |
| 14023 | Reviewed by Geoff. |
| 14024 | |
| 14025 | - fix 2x perf regression in 3d-morph |
| 14026 | |
| 14027 | * VM/Machine.cpp: |
| 14028 | (KJS::Machine::privateExecute): If we subbed in null for the global object, |
| 14029 | don't toObject it, since that will throw an exception (very slowly). |
| 14030 | |
| 14031 | 2008-04-02 Maciej Stachowiak <mjs@apple.com> |
| 14032 | |
| 14033 | Rubber stamped by Geoff |
| 14034 | |
| 14035 | - fix Release build |
| 14036 | |
| 14037 | * kjs/nodes.cpp: |
| 14038 | (KJS::getNonLocalSymbol): |
| 14039 | |
| 14040 | 2008-04-02 Geoffrey Garen <ggaren@apple.com> |
| 14041 | |
| 14042 | Reviewed by Oliver Hunt. |
| 14043 | |
| 14044 | Removed the last vestiges of LocalStorage from JSVariableObject and |
| 14045 | JSGlobalObject. |
| 14046 | |
| 14047 | * kjs/JSGlobalObject.cpp: |
| 14048 | (KJS::JSGlobalObject::saveLocalStorage): Save and restore from/to |
| 14049 | registers. Use stub isReadOnly and isDontEnum methods for now, until |
| 14050 | we really implement attributes in the symbol table. |
| 14051 | (KJS::JSGlobalObject::restoreLocalStorage): |
| 14052 | (KJS::JSGlobalObject::reset): |
| 14053 | |
| 14054 | * kjs/JSVariableObject.cpp: |
| 14055 | (KJS::JSVariableObject::getPropertyNames): Use stub isDontEnum method |
| 14056 | for now, as above. |
| 14057 | (KJS::JSVariableObject::getPropertyAttributes): ditto |
| 14058 | |
| 14059 | * kjs/JSVariableObject.h: Removed LocalStorage from JSVariableObjectData. |
| 14060 | Removed mark method, because subclasses implement different strategies for |
| 14061 | marking registers. |
| 14062 | (KJS::JSVariableObject::isReadOnly): Stub method |
| 14063 | (KJS::JSVariableObject::isDontEnum): ditto |
| 14064 | |
| 14065 | Changed the code below to ASSERT_NOT_REACHED() and return 0, since it |
| 14066 | can no longer retrieve LocalStorage from the ExecState. (Eventually, |
| 14067 | we'll just remove this code and all its friends, but that's a task for |
| 14068 | later.) |
| 14069 | |
| 14070 | * kjs/ExecState.cpp: |
| 14071 | (KJS::ExecState::ExecState): |
| 14072 | * kjs/function.cpp: |
| 14073 | (KJS::ActivationImp::markChildren): |
| 14074 | * kjs/function.h: |
| 14075 | * kjs/nodes.cpp: |
| 14076 | (KJS::getNonLocalSymbol): |
| 14077 | (KJS::ScopeNode::optimizeVariableAccess): |
| 14078 | (KJS::ProgramNode::processDeclarations): |
| 14079 | |
| 14080 | 2008-04-01 Geoffrey Garen <ggaren@apple.com> |
| 14081 | |
| 14082 | Reviewed by Maciej Stachowiak. |
| 14083 | |
| 14084 | Got globals? |
| 14085 | |
| 14086 | To get things working, I had to roll out |
| 14087 | http://trac.webkit.org/projects/webkit/changeset/31226 for the time |
| 14088 | being. |
| 14089 | |
| 14090 | * VM/CodeBlock.h: Removed obsolete function. |
| 14091 | |
| 14092 | * VM/Machine.cpp: |
| 14093 | (KJS::Machine::privateExecute): For the sake of re-entrancy, we track |
| 14094 | and restore the global object's old rOffset value. (No way to test this |
| 14095 | yet, but I think it will work.) |
| 14096 | |
| 14097 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14098 | |
| 14099 | Reviewed by Geoff. |
| 14100 | |
| 14101 | - mark the constant pool (at least for function code blocks) |
| 14102 | |
| 14103 | * VM/CodeBlock.cpp: |
| 14104 | (KJS::CodeBlock::mark): |
| 14105 | * VM/CodeBlock.h: |
| 14106 | * kjs/function.cpp: |
| 14107 | (KJS::FunctionImp::mark): |
| 14108 | * kjs/nodes.cpp: |
| 14109 | (KJS::ScopeNode::mark): |
| 14110 | * kjs/nodes.h: |
| 14111 | (KJS::FuncExprNode::body): |
| 14112 | (KJS::FuncDeclNode::body): |
| 14113 | |
| 14114 | 2008-04-01 Geoffrey Garen <ggaren@apple.com> |
| 14115 | |
| 14116 | Reviewed by Beth Dakin. |
| 14117 | |
| 14118 | Cleaned up a few loose ends. |
| 14119 | |
| 14120 | * JavaScriptCore.exp: Export dumpRegisters, so it's visible to gdb even |
| 14121 | if we don't explicitly call it in the source text. |
| 14122 | |
| 14123 | * VM/Machine.cpp: |
| 14124 | (KJS::Machine::privateExecute): No need to call dumpRegisters anymore, |
| 14125 | since that was just a hack for gdb's sake. |
| 14126 | |
| 14127 | * kjs/JSActivation.h: Removed obsolete comment. |
| 14128 | |
| 14129 | * VM/CodeGenerator.cpp: Added ASSERTs to verify that the localCount |
| 14130 | we're given matches the number of locals actually allocated. |
| 14131 | |
| 14132 | * VM/CodeGenerator.h: |
| 14133 | (KJS::CodeGenerator::CodeGenerator): Changed "localCount" to include |
| 14134 | the parameter count, since we're using the word "local" to mean |
| 14135 | parameter, var, function, or "this". Renamed "m_nextLocal" to |
| 14136 | "m_nextVar", since "m_nextLocal" doesn't contrast well with |
| 14137 | "m_nextParameter". |
| 14138 | |
| 14139 | Also moved tracking of implicit "this" parameter from here... |
| 14140 | |
| 14141 | * kjs/nodes.cpp: |
| 14142 | (KJS::FunctionBodyNode::generateCode): ... to here |
| 14143 | (KJS::ProgramNode::generateCode): ... and here |
| 14144 | |
| 14145 | * VM/CodeBlock.cpp: |
| 14146 | (KJS::CodeBlock::dump): Added missing "\n". |
| 14147 | |
| 14148 | 2008-04-01 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14149 | |
| 14150 | Reviewed by Oliver. |
| 14151 | |
| 14152 | Bug 18274: ResolveNode::emitCode() doesn't make a new temporary when dst |
| 14153 | is 0, leading to incorrect codegen |
| 14154 | <http://bugs.webkit.org/show_bug.cgi?id=18274> |
| 14155 | |
| 14156 | * kjs/nodes.cpp: |
| 14157 | (KJS::FunctionCallBracketNode::emitCode): |
| 14158 | (KJS::FunctionCallDotNode::emitCode): |
| 14159 | |
| 14160 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14161 | |
| 14162 | Reviewed by Oliver. |
| 14163 | |
| 14164 | - fix bug in for..in codegen (gotta use ident, not m_ident) |
| 14165 | |
| 14166 | * kjs/nodes.cpp: |
| 14167 | (KJS::ForInNode::emitCode): |
| 14168 | |
| 14169 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14170 | |
| 14171 | Reviewed by Oliver. |
| 14172 | |
| 14173 | - Add suport for regexp literals |
| 14174 | |
| 14175 | * VM/CodeBlock.cpp: |
| 14176 | (KJS::regexpToSourceString): |
| 14177 | (KJS::regexpName): |
| 14178 | (KJS::CodeBlock::dump): |
| 14179 | * VM/CodeBlock.h: |
| 14180 | * VM/CodeGenerator.cpp: |
| 14181 | (KJS::CodeGenerator::addRegExp): |
| 14182 | (KJS::CodeGenerator::emitNewRegExp): |
| 14183 | * VM/CodeGenerator.h: |
| 14184 | * VM/Machine.cpp: |
| 14185 | (KJS::Machine::privateExecute): |
| 14186 | * VM/Opcode.h: |
| 14187 | * kjs/nodes.cpp: |
| 14188 | (KJS::RegExpNode::emitCode): |
| 14189 | * kjs/nodes.h: |
| 14190 | |
| 14191 | 2008-04-01 Oliver Hunt <oliver@apple.com> |
| 14192 | |
| 14193 | Reviewed by Geoff |
| 14194 | |
| 14195 | Add support for for..in nodes |
| 14196 | |
| 14197 | Added two new opcodes to get_pnames and next_pname to handle iterating |
| 14198 | over the set of properties on an object. This iterator is explicitly |
| 14199 | invalidated and the property name array is released on standard exit |
| 14200 | from the loop, otherwise we rely on GC to do the clean up for us. |
| 14201 | |
| 14202 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 14203 | * VM/CodeBlock.cpp: |
| 14204 | (KJS::CodeBlock::dump): |
| 14205 | * VM/CodeGenerator.cpp: |
| 14206 | (KJS::CodeGenerator::emitNextPropertyName): |
| 14207 | (KJS::CodeGenerator::emitGetPropertyNames): |
| 14208 | * VM/CodeGenerator.h: |
| 14209 | * VM/JSPropertyNameIterator.cpp: Added. |
| 14210 | (KJS::JSPropertyNameIterator::JSPropertyNameIterator): |
| 14211 | (KJS::JSPropertyNameIterator::type): |
| 14212 | (KJS::JSPropertyNameIterator::toPrimitive): |
| 14213 | (KJS::JSPropertyNameIterator::getPrimitiveNumber): |
| 14214 | (KJS::JSPropertyNameIterator::toBoolean): |
| 14215 | (KJS::JSPropertyNameIterator::toNumber): |
| 14216 | (KJS::JSPropertyNameIterator::toString): |
| 14217 | (KJS::JSPropertyNameIterator::toObject): |
| 14218 | (KJS::JSPropertyNameIterator::mark): |
| 14219 | (KJS::JSPropertyNameIterator::next): |
| 14220 | (KJS::JSPropertyNameIterator::invalidate): |
| 14221 | (KJS::JSPropertyNameIterator::~JSPropertyNameIterator): |
| 14222 | (KJS::JSPropertyNameIterator::create): |
| 14223 | * VM/JSPropertyNameIterator.h: Added. |
| 14224 | * VM/Machine.cpp: |
| 14225 | (KJS::Machine::privateExecute): |
| 14226 | * VM/Opcode.h: |
| 14227 | * VM/Register.h: |
| 14228 | (KJS::Register::): |
| 14229 | * kjs/PropertyNameArray.h: |
| 14230 | * kjs/nodes.cpp: |
| 14231 | (KJS::ForInNode::emitCode): |
| 14232 | * kjs/nodes.h: |
| 14233 | * kjs/value.h: |
| 14234 | |
| 14235 | 2008-04-01 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14236 | |
| 14237 | Reviewed by Maciej. |
| 14238 | |
| 14239 | Change CodeGenerator::emitCall() so it increments the reference count of |
| 14240 | registers passed to it, and change its callers so they don't needlessly |
| 14241 | increment the reference count of the registers they are passing. |
| 14242 | |
| 14243 | * VM/CodeGenerator.cpp: |
| 14244 | (KJS::CodeGenerator::emitCall): |
| 14245 | * kjs/nodes.cpp: |
| 14246 | (KJS::FunctionCallResolveNode::emitCode): |
| 14247 | (KJS::FunctionCallDotNode::emitCode): |
| 14248 | |
| 14249 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14250 | |
| 14251 | Reviewed by Oliver. |
| 14252 | |
| 14253 | - generate call for PostIncDotNode |
| 14254 | |
| 14255 | * kjs/nodes.cpp: |
| 14256 | (KJS::PostIncDotNode::emitCode): |
| 14257 | * kjs/nodes.h: |
| 14258 | |
| 14259 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14260 | |
| 14261 | Build fix. |
| 14262 | |
| 14263 | - fix build (not sure how this ever worked?) |
| 14264 | |
| 14265 | * kjs/nodes.cpp: |
| 14266 | (KJS::FunctionCallBracketNode::emitCode): |
| 14267 | |
| 14268 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14269 | |
| 14270 | Reviewed by Geoff. |
| 14271 | |
| 14272 | - generate code for FunctionCallBracketNode |
| 14273 | |
| 14274 | * kjs/nodes.cpp: |
| 14275 | (KJS::FunctionCallBracketNode::emitCode): |
| 14276 | * kjs/nodes.h: |
| 14277 | |
| 14278 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14279 | |
| 14280 | Reviewed by Geoff. |
| 14281 | |
| 14282 | - Fix two crashing SunSpider tests |
| 14283 | |
| 14284 | * VM/Machine.cpp: |
| 14285 | (KJS::Machine::privateExecute): set up 'this' properly for native calls. |
| 14286 | * kjs/list.h: |
| 14287 | (KJS::List::List): Fix intialization of buffer and size from |
| 14288 | vector, the initialization order was wrong. |
| 14289 | |
| 14290 | 2008-04-01 Geoffrey Garen <ggaren@apple.com> |
| 14291 | |
| 14292 | Build fix: marked ASSERT-only variables as UNUSED_PARAMs. |
| 14293 | |
| 14294 | * VM/Machine.cpp: |
| 14295 | (KJS::Machine::privateExecute): |
| 14296 | * kjs/JSVariableObject.h: |
| 14297 | (KJS::JSVariableObject::symbolTableInitializeVariable): |
| 14298 | |
| 14299 | 2008-04-01 Geoffrey Garen <ggaren@apple.com> |
| 14300 | |
| 14301 | Reviewed by Oliver Hunt. |
| 14302 | |
| 14303 | Next step toward global code: Moved get, put, and initializeVariable |
| 14304 | functionality up into JSVariableObject, and changed JSActivation to |
| 14305 | rely on it. |
| 14306 | |
| 14307 | * kjs/JSActivation.cpp: |
| 14308 | (KJS::JSActivation::JSActivation): |
| 14309 | (KJS::JSActivation::getOwnPropertySlot): |
| 14310 | (KJS::JSActivation::put): |
| 14311 | (KJS::JSActivation::initializeVariable): |
| 14312 | * kjs/JSVariableObject.h: |
| 14313 | (KJS::JSVariableObject::valueAt): |
| 14314 | (KJS::JSVariableObject::isReadOnly): |
| 14315 | (KJS::JSVariableObject::symbolTableGet): |
| 14316 | (KJS::JSVariableObject::symbolTablePut): |
| 14317 | (KJS::JSVariableObject::symbolTableInitializeVariable): |
| 14318 | |
| 14319 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14320 | |
| 14321 | Reviewed by Sam. |
| 14322 | |
| 14323 | - fix HashTable assertion on some SunSpider tests |
| 14324 | |
| 14325 | Don't use -1 as the deleted value for JSValue*-keyed hashtables, |
| 14326 | since it is a valid value (it's the immediate for -1). |
| 14327 | |
| 14328 | * VM/CodeGenerator.h: |
| 14329 | (KJS::CodeGenerator::JSValueHashTraits::emptyValue): |
| 14330 | (KJS::CodeGenerator::JSValueHashTraits::deletedValue): |
| 14331 | * kjs/JSImmediate.h: |
| 14332 | (KJS::JSImmediate::impossibleValue): |
| 14333 | |
| 14334 | 2008-04-01 Sam Weinig <sam@webkit.org> |
| 14335 | |
| 14336 | Reviewed by Maciej Stachowiak. |
| 14337 | |
| 14338 | Add support for calling Native constructors like new Array(). |
| 14339 | |
| 14340 | * VM/CodeBlock.cpp: |
| 14341 | (KJS::CodeBlock::dump): |
| 14342 | * VM/CodeGenerator.cpp: |
| 14343 | (KJS::CodeGenerator::emitConstruct): |
| 14344 | * VM/CodeGenerator.h: |
| 14345 | * VM/Machine.cpp: |
| 14346 | (KJS::Machine::privateExecute): |
| 14347 | * VM/Opcode.h: |
| 14348 | * kjs/nodes.cpp: |
| 14349 | (KJS::NewExprNode::emitCode): |
| 14350 | * kjs/nodes.h: |
| 14351 | |
| 14352 | 2008-04-01 Maciej Stachowiak <mjs@apple.com> |
| 14353 | |
| 14354 | Reviewed by Sam. |
| 14355 | |
| 14356 | - add some missing toOpbject calls to avoid crashing when calling methods on primitives |
| 14357 | |
| 14358 | * VM/Machine.cpp: |
| 14359 | (KJS::Machine::privateExecute): |
| 14360 | |
| 14361 | 2008-04-01 Geoffrey Garen <ggaren@apple.com> |
| 14362 | |
| 14363 | Reviewed by Oliver Hunt. |
| 14364 | |
| 14365 | Changed Machine::dumpRegisters to take a pointer instead of a reference, |
| 14366 | so gdb understands how to call it. |
| 14367 | |
| 14368 | * VM/Machine.cpp: |
| 14369 | (KJS::Machine::dumpRegisters): |
| 14370 | (KJS::Machine::privateExecute): |
| 14371 | * VM/Machine.h: |
| 14372 | |
| 14373 | 2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14374 | |
| 14375 | Reviewed by Maciej. |
| 14376 | |
| 14377 | Fix CodeGenerator::addConstant() so it uses the functionExpressions |
| 14378 | counter for function expressions, not the functions counter. |
| 14379 | |
| 14380 | * VM/CodeGenerator.cpp: |
| 14381 | (KJS::CodeGenerator::addConstant): |
| 14382 | |
| 14383 | 2008-03-31 Sam Weinig <sam@webkit.org> |
| 14384 | |
| 14385 | Reviewed by Geoffrey Garen. |
| 14386 | |
| 14387 | Add emitCode support for TypeOfResolveNode and TypeOfValueNode. |
| 14388 | Added new opcode op_type_of to handle them. |
| 14389 | |
| 14390 | * VM/CodeBlock.cpp: |
| 14391 | (KJS::CodeBlock::dump): |
| 14392 | * VM/CodeGenerator.cpp: |
| 14393 | (KJS::CodeGenerator::emitNot): |
| 14394 | (KJS::CodeGenerator::emitInstanceOf): |
| 14395 | (KJS::CodeGenerator::emitTypeOf): |
| 14396 | * VM/CodeGenerator.h: |
| 14397 | * VM/Machine.cpp: |
| 14398 | (KJS::jsTypeStringForValue): |
| 14399 | (KJS::Machine::privateExecute): |
| 14400 | * VM/Opcode.h: |
| 14401 | * kjs/nodes.cpp: |
| 14402 | (KJS::TypeOfResolveNode::emitCode): |
| 14403 | (KJS::TypeOfValueNode::emitCode): |
| 14404 | * kjs/nodes.h: |
| 14405 | |
| 14406 | 2008-03-31 Sam Weinig <sam@webkit.org> |
| 14407 | |
| 14408 | Reviewed by Oliver Hunt. |
| 14409 | |
| 14410 | Fix non-computed goto version of isOpcode. op_end is a valid opcode. |
| 14411 | |
| 14412 | * VM/Machine.cpp: |
| 14413 | (KJS::Machine::isOpcode): |
| 14414 | |
| 14415 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14416 | |
| 14417 | Reviewed by Maciej Stachowiak. |
| 14418 | |
| 14419 | Added op_post_dec. |
| 14420 | |
| 14421 | 2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14422 | |
| 14423 | Reviewed by Geoffrey Garen. |
| 14424 | |
| 14425 | Add support for FunctionCallDotNode. |
| 14426 | |
| 14427 | * kjs/nodes.cpp: |
| 14428 | (KJS::FunctionCallDotNode::emitCode): |
| 14429 | * kjs/nodes.h: |
| 14430 | |
| 14431 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14432 | |
| 14433 | Reviewed by Beth Dakin. |
| 14434 | |
| 14435 | Next step toward global code: Removed more obsolete API, moved |
| 14436 | saveLocalStorage and restoreLocalStorage to JSGlobalObject subclass, |
| 14437 | since it's only intended for use there. |
| 14438 | |
| 14439 | * ChangeLog: |
| 14440 | * JavaScriptCore.exp: |
| 14441 | * kjs/Activation.h: |
| 14442 | * kjs/JSGlobalObject.cpp: |
| 14443 | (KJS::JSGlobalObject::saveLocalStorage): |
| 14444 | (KJS::JSGlobalObject::restoreLocalStorage): |
| 14445 | * kjs/JSGlobalObject.h: |
| 14446 | * kjs/JSVariableObject.cpp: |
| 14447 | * kjs/JSVariableObject.h: |
| 14448 | (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData): |
| 14449 | * kjs/function.cpp: |
| 14450 | (KJS::ActivationImp::ActivationImp): |
| 14451 | |
| 14452 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14453 | |
| 14454 | Reviewed by Beth Dakin. |
| 14455 | |
| 14456 | Next step toward global code: subclass JSActivation + JSActivationData |
| 14457 | from JSVariableObject + JSVariableObjectData. |
| 14458 | |
| 14459 | JSActivation now relies on JSVariableObject for access to registers and |
| 14460 | symbol table, and for some delete functionality, but not for anything |
| 14461 | else yet. |
| 14462 | |
| 14463 | (KJS::JSActivation::mark): Cleaned up the style here a little bit. |
| 14464 | |
| 14465 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14466 | |
| 14467 | Reviewed by Beth Dakin. |
| 14468 | |
| 14469 | Next step toward global code: store "rOffset" in JSVariableObjectData. |
| 14470 | |
| 14471 | * kjs/JSGlobalObject.h: |
| 14472 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| 14473 | * kjs/JSVariableObject.h: |
| 14474 | (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData): |
| 14475 | |
| 14476 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14477 | |
| 14478 | Reviewed by Maciej Stachowiak. |
| 14479 | |
| 14480 | Next steps toward global code: |
| 14481 | |
| 14482 | * Moved access to the register file into JSVariableObject. |
| 14483 | |
| 14484 | * Added more ASSERTs to indicate obsolete APIs there are just hanging |
| 14485 | around to stave off build failures. |
| 14486 | |
| 14487 | * kjs/JSGlobalObject.h: |
| 14488 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| 14489 | * kjs/JSVariableObject.h: |
| 14490 | (KJS::JSVariableObject::registers): |
| 14491 | (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData): |
| 14492 | (KJS::JSVariableObject::JSVariableObject): |
| 14493 | |
| 14494 | 2008-03-31 Sam Weinig <sam@webkit.org> |
| 14495 | |
| 14496 | Reviewed by Oliver. Tweaked somewhat by Maciej. |
| 14497 | |
| 14498 | - implement codegen for ReadModifyResolveNode |
| 14499 | |
| 14500 | * kjs/nodes.cpp: |
| 14501 | (KJS::emitReadModifyAssignment): |
| 14502 | (KJS::ReadModifyResolveNode::emitCode): |
| 14503 | * kjs/nodes.h: |
| 14504 | |
| 14505 | 2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14506 | |
| 14507 | Reviewed by Geoff. |
| 14508 | |
| 14509 | Fix the build -- r31492 removed activation tear-off, but r31493 used it. |
| 14510 | |
| 14511 | * kjs/nodes.cpp: |
| 14512 | (KJS::FuncExprNode::makeFunction): |
| 14513 | |
| 14514 | 2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14515 | |
| 14516 | Reviewed by Maciej. |
| 14517 | |
| 14518 | Add support for FuncExprNode to SquirrelFish. |
| 14519 | |
| 14520 | * VM/CodeBlock.cpp: |
| 14521 | (KJS::CodeBlock::dump): |
| 14522 | * VM/CodeBlock.h: |
| 14523 | * VM/CodeGenerator.cpp: |
| 14524 | (KJS::CodeGenerator::addConstant): |
| 14525 | (KJS::CodeGenerator::emitNewFunctionExpression): |
| 14526 | * VM/CodeGenerator.h: |
| 14527 | * VM/Machine.cpp: |
| 14528 | (KJS::Machine::privateExecute): |
| 14529 | * VM/Opcode.h: |
| 14530 | * kjs/nodes.cpp: |
| 14531 | (KJS::FuncExprNode::emitCode): |
| 14532 | (KJS::FuncExprNode::makeFunction): |
| 14533 | * kjs/nodes.h: |
| 14534 | |
| 14535 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14536 | |
| 14537 | Reviewed by Maciej Stachowiak. |
| 14538 | |
| 14539 | First step toward global code: removed some obsolete JSGlobalObject |
| 14540 | APIs, changing clients to ASSERT_NOT_REACHED. |
| 14541 | |
| 14542 | Activation tear-off and scope chain pushing is obsolete because we |
| 14543 | statically detect whether an activation + scope node is required. |
| 14544 | |
| 14545 | The variableObject() and activationObject() accessors are obsolete |
| 14546 | because they haven't been maintained, and they're mostly used by |
| 14547 | node evaluation code, anyway. |
| 14548 | |
| 14549 | The localStorage() accessor is obsolete because everything is in |
| 14550 | registers now, and it's mostly used by node evaluation code, anyway. |
| 14551 | |
| 14552 | 2008-03-31 Maciej Stachowiak <mjs@apple.com> |
| 14553 | |
| 14554 | Reviewed by Darin. |
| 14555 | |
| 14556 | - implement codegen for bracket accessor and bracket assign |
| 14557 | |
| 14558 | * VM/CodeBlock.cpp: |
| 14559 | (KJS::CodeBlock::dump): |
| 14560 | * VM/CodeGenerator.cpp: |
| 14561 | (KJS::CodeGenerator::emitGetPropVal): |
| 14562 | (KJS::CodeGenerator::emitPutPropVal): |
| 14563 | * VM/CodeGenerator.h: |
| 14564 | * VM/Machine.cpp: |
| 14565 | (KJS::Machine::privateExecute): |
| 14566 | * VM/Opcode.h: |
| 14567 | * kjs/nodes.cpp: |
| 14568 | (KJS::BracketAccessorNode::emitCode): |
| 14569 | (KJS::AssignBracketNode::emitCode): |
| 14570 | * kjs/nodes.h: |
| 14571 | |
| 14572 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14573 | |
| 14574 | Not reviewed. |
| 14575 | |
| 14576 | Removed FIXME that I just fixed. |
| 14577 | |
| 14578 | Added ASSERT to cover an error previously only covered by a FIXME. |
| 14579 | |
| 14580 | * kjs/JSActivation.cpp: |
| 14581 | (KJS::JSActivation::getOwnPropertySlot): |
| 14582 | |
| 14583 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14584 | |
| 14585 | Not reviewed. |
| 14586 | |
| 14587 | Fixed indentation inside op_call. (I had left this code badly indented |
| 14588 | to make the behavior-changing diff clearer.) |
| 14589 | |
| 14590 | * VM/Machine.cpp: |
| 14591 | (KJS::Machine::privateExecute): |
| 14592 | |
| 14593 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14594 | |
| 14595 | Reviewed by Sam Weinig. |
| 14596 | |
| 14597 | Fixed up logging of jump instructions to follow the following style: |
| 14598 | |
| 14599 | jump offset(->absoluteTarget) |
| 14600 | |
| 14601 | * VM/CodeBlock.cpp: |
| 14602 | (KJS::CodeBlock::dump): |
| 14603 | |
| 14604 | 2008-03-31 Geoffrey Garen <ggaren@apple.com> |
| 14605 | |
| 14606 | Reviewed by Sam Weinig. |
| 14607 | |
| 14608 | Changed the SymbolTable API to use int instead of size_t. It has been |
| 14609 | using int internally for a while now (since squirrelfish symbols can |
| 14610 | have negative indices). |
| 14611 | |
| 14612 | 2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14613 | |
| 14614 | Reviewed by Maciej. |
| 14615 | |
| 14616 | Add support for FunctionCallValueNode. |
| 14617 | |
| 14618 | * kjs/nodes.cpp: |
| 14619 | (KJS::FunctionCallValueNode::emitCode): |
| 14620 | * kjs/nodes.h: |
| 14621 | |
| 14622 | 2008-03-31 Maciej Stachowiak <mjs@apple.com> |
| 14623 | |
| 14624 | Reviewed by Oliver. |
| 14625 | |
| 14626 | 1) Implemented array literals |
| 14627 | |
| 14628 | 2) Renamed op_object_get and op_object_put to op_get_prop_id and |
| 14629 | op_put_prop_id in preparation for new variants. |
| 14630 | |
| 14631 | * VM/CodeBlock.cpp: |
| 14632 | (KJS::CodeBlock::dump): |
| 14633 | * VM/CodeGenerator.cpp: |
| 14634 | (KJS::CodeGenerator::emitNewArray): |
| 14635 | (KJS::CodeGenerator::emitGetPropId): |
| 14636 | (KJS::CodeGenerator::emitPutPropId): |
| 14637 | (KJS::CodeGenerator::emitPutPropIndex): |
| 14638 | * VM/CodeGenerator.h: |
| 14639 | (KJS::CodeGenerator::CodeGenerator): |
| 14640 | (KJS::CodeGenerator::propertyNames): |
| 14641 | * VM/Machine.cpp: |
| 14642 | (KJS::Machine::privateExecute): |
| 14643 | * VM/Opcode.h: |
| 14644 | * kjs/nodes.cpp: |
| 14645 | (KJS::ArrayNode::emitCode): |
| 14646 | (KJS::PropertyListNode::emitCode): |
| 14647 | (KJS::DotAccessorNode::emitCode): |
| 14648 | (KJS::PostIncResolveNode::emitCode): |
| 14649 | (KJS::PreIncResolveNode::emitCode): |
| 14650 | (KJS::AssignResolveNode::emitCode): |
| 14651 | (KJS::AssignDotNode::emitCode): |
| 14652 | * kjs/nodes.h: |
| 14653 | |
| 14654 | 2008-03-30 Geoffrey Garen <ggaren@apple.com> |
| 14655 | |
| 14656 | Reviewed by Oliver Hunt. |
| 14657 | |
| 14658 | Implemented native function calls. (Re-entering from native code back |
| 14659 | to JS doesn't work yet, though.) |
| 14660 | |
| 14661 | 0.2% speedup overall, due to some inlining tweaks. 3.6% regression on |
| 14662 | function-empty.js, since we're making a new virtual call and taking a |
| 14663 | new branch inside every op_call. |
| 14664 | |
| 14665 | I adjusted the JavaScriptCore calling convention to minimize overhead, |
| 14666 | like so: |
| 14667 | |
| 14668 | The machine calls a single virtual function, "getCallData", to get all |
| 14669 | the data it needs for a function call. Native code still uses the old |
| 14670 | "isObject()" check followed by an "implementsCall()" check, which |
| 14671 | aliases to "getCallData". (We can optimize native code to use getCallData |
| 14672 | at our leisure.) |
| 14673 | |
| 14674 | To supply a list of arguments, the machine calls a new List constructor |
| 14675 | that just takes a pointer and a length, without copying. Native code |
| 14676 | still appends to the list one argument at a time. (We can optimize |
| 14677 | native code to use the new List constructor at our leisure.) |
| 14678 | |
| 14679 | * VM/Machine.cpp: |
| 14680 | (KJS::Machine::privateExecute): Changed resize() call to grow() call, |
| 14681 | to encourage the compiler to inline the Vector code. |
| 14682 | |
| 14683 | * kjs/CallData.h: Added. |
| 14684 | (KJS::): CallData is a union because eventually native calls will stuff |
| 14685 | a function pointer into it, to eliminate the callAsFunction virtual call. |
| 14686 | |
| 14687 | * kjs/function.cpp: |
| 14688 | (KJS::FunctionImp::callAsFunction): Changed this to an ASSERT since |
| 14689 | it's not implemented yet. |
| 14690 | |
| 14691 | * kjs/list.h: Made the List class two-faced, to support the old way and |
| 14692 | the new way during this transition phase: lists can be made read-only |
| 14693 | with just a pointer and a legnth, or you can append to them one item |
| 14694 | at a time. |
| 14695 | |
| 14696 | * kjs/value.h: |
| 14697 | (KJS::jsUndefined): Marked this function ALWAYS_INLINE for the benefit |
| 14698 | of a certain compiler that doesn't know what's best for it. |
| 14699 | |
| 14700 | 2008-03-30 Maciej Stachowiak <mjs@apple.com> |
| 14701 | |
| 14702 | Reviewed by Oliver. |
| 14703 | |
| 14704 | Dump code that codegen can't handle yet, so it's easier to prioritize missing nodes. |
| 14705 | |
| 14706 | * kjs/nodes.h: |
| 14707 | (KJS::Node::emitCode): |
| 14708 | |
| 14709 | 2008-03-30 Maciej Stachowiak <mjs@apple.com> |
| 14710 | |
| 14711 | Reviewed by Oliver. |
| 14712 | |
| 14713 | Improve dumping of bytecode and fix coding style accordingly. |
| 14714 | |
| 14715 | Registers are printed as lr1 for locals, tr1 for temp registers. Identifiers print as |
| 14716 | foobar(@id0) and constants print as "foo"(@k1) or 312.4(@k2) or the like. Constant and |
| 14717 | identifier tables are dumped for reference. |
| 14718 | |
| 14719 | * VM/CodeBlock.cpp: |
| 14720 | (KJS::escapeQuotes): |
| 14721 | (KJS::valueToSourceString): |
| 14722 | (KJS::registerName): |
| 14723 | (KJS::constantName): |
| 14724 | (KJS::idName): |
| 14725 | (KJS::printUnaryOp): |
| 14726 | (KJS::printBinaryOp): |
| 14727 | (KJS::CodeBlock::dump): |
| 14728 | * VM/Machine.cpp: |
| 14729 | (KJS::resolve): |
| 14730 | (KJS::resolveBase): |
| 14731 | (KJS::Machine::privateExecute): |
| 14732 | |
| 14733 | 2008-03-30 Maciej Stachowiak <mjs@apple.com> |
| 14734 | |
| 14735 | Reviewed by Oliver. |
| 14736 | |
| 14737 | Implement StringNode and VoidNode (both pretty trivial). |
| 14738 | |
| 14739 | * kjs/nodes.cpp: |
| 14740 | (KJS::StringNode::emitCode): |
| 14741 | (KJS::VoidNode::emitCode): |
| 14742 | * kjs/nodes.h: |
| 14743 | |
| 14744 | 2008-03-30 Maciej Stachowiak <mjs@apple.com> |
| 14745 | |
| 14746 | Reviewed by Sam. |
| 14747 | |
| 14748 | Implement CommaNode. |
| 14749 | |
| 14750 | * kjs/nodes.cpp: |
| 14751 | (KJS::CommaNode::emitCode): |
| 14752 | * kjs/nodes.h: |
| 14753 | |
| 14754 | 2008-03-30 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14755 | |
| 14756 | Reviewed by Maciej. |
| 14757 | |
| 14758 | Adds support for dot notation and object literals. |
| 14759 | |
| 14760 | * VM/CodeBlock.cpp: |
| 14761 | (KJS::CodeBlock::dump): |
| 14762 | * VM/CodeGenerator.cpp: |
| 14763 | (KJS::CodeGenerator::emitNewObject): |
| 14764 | * VM/CodeGenerator.h: |
| 14765 | * VM/Machine.cpp: |
| 14766 | (KJS::Machine::privateExecute): |
| 14767 | * VM/Opcode.h: |
| 14768 | * kjs/nodes.cpp: |
| 14769 | (KJS::ObjectLiteralNode::emitCode): |
| 14770 | (KJS::PropertyListNode::emitCode): |
| 14771 | (KJS::DotAccessorNode::emitCode): |
| 14772 | (KJS::AssignDotNode::emitCode): |
| 14773 | * kjs/nodes.h: |
| 14774 | |
| 14775 | 2008-03-29 Geoffrey Garen <ggaren@apple.com> |
| 14776 | |
| 14777 | Reviewed by Maciej Stachowiak. |
| 14778 | |
| 14779 | Mark the register file. |
| 14780 | |
| 14781 | It's a conservative mark for now, but once registers are typed, we can |
| 14782 | do an exact mark. |
| 14783 | |
| 14784 | 1.4% regression regardless of whether we actually do the marking. |
| 14785 | GCC is is worth every penny. |
| 14786 | |
| 14787 | * VM/Machine.cpp: |
| 14788 | (KJS::Machine::privateExecute): Most of the changes here are just for |
| 14789 | the fact that "registers" is a pointer now. |
| 14790 | |
| 14791 | * kjs/JSGlobalObject.cpp: The global object owns the register file now. |
| 14792 | |
| 14793 | 2008-03-28 Oliver Hunt <oliver@apple.com> |
| 14794 | |
| 14795 | Reviewed by Maciej. |
| 14796 | |
| 14797 | Bug 18204: SquirrelFish: continue/break do not correctly handle scope popping |
| 14798 | <http://bugs.webkit.org/show_bug.cgi?id=18204> |
| 14799 | |
| 14800 | We now track the scope depth as part of a loop context, and add an |
| 14801 | extra instruction op_jump_scopes that is used to perform a jump across |
| 14802 | dynamic scope boundaries. |
| 14803 | |
| 14804 | * VM/CodeBlock.cpp: |
| 14805 | (KJS::CodeBlock::dump): |
| 14806 | * VM/CodeGenerator.cpp: |
| 14807 | (KJS::CodeGenerator::emitJumpScopes): |
| 14808 | * VM/CodeGenerator.h: |
| 14809 | * VM/Machine.cpp: |
| 14810 | (KJS::Machine::privateExecute): |
| 14811 | * VM/Opcode.h: |
| 14812 | * kjs/nodes.cpp: |
| 14813 | (KJS::ContinueNode::emitCode): |
| 14814 | (KJS::BreakNode::emitCode): |
| 14815 | |
| 14816 | 2008-03-28 Sam Weinig <sam@webkit.org> |
| 14817 | |
| 14818 | Reviewed by Geoffrey Garen. |
| 14819 | |
| 14820 | Add emitCode support for ConditionalNode. |
| 14821 | |
| 14822 | * kjs/nodes.cpp: |
| 14823 | (KJS::ConditionalNode::emitCode): |
| 14824 | * kjs/nodes.h: |
| 14825 | |
| 14826 | 2008-03-28 Geoffrey Garen <ggaren@apple.com> |
| 14827 | |
| 14828 | Reviewed by Oliver Hunt. |
| 14829 | |
| 14830 | Responding to feedback, added some comments, fixed up a few names, and |
| 14831 | clarified that "locals" always means all local variables, functions, |
| 14832 | and parameters. |
| 14833 | |
| 14834 | 2008-03-28 Geoffrey Garen <ggaren@apple.com> |
| 14835 | |
| 14836 | Reviewed by Oliver Hunt. |
| 14837 | |
| 14838 | Added support for "this". |
| 14839 | |
| 14840 | Supply an implicit "this" value as the first argument to every function. |
| 14841 | Alias the "this" keyword to that argument. |
| 14842 | |
| 14843 | 1% regression overall, 2.5% regression on empty function calls. Seems |
| 14844 | like a reasonable cost for now, since we're doing more work. |
| 14845 | (Eventually, we might decide to create a version of op_call specialized |
| 14846 | for a known null "this" value.) |
| 14847 | |
| 14848 | * VM/CodeBlock.cpp: |
| 14849 | (KJS::CodeBlock::dump): |
| 14850 | * VM/CodeGenerator.cpp: |
| 14851 | (KJS::CodeGenerator::emitCall): |
| 14852 | * VM/CodeGenerator.h: |
| 14853 | (KJS::CodeGenerator::CodeGenerator): |
| 14854 | * VM/Machine.cpp: |
| 14855 | (KJS::Machine::privateExecute): |
| 14856 | * kjs/CommonIdentifiers.cpp: |
| 14857 | (KJS::CommonIdentifiers::CommonIdentifiers): |
| 14858 | * kjs/CommonIdentifiers.h: |
| 14859 | * kjs/nodes.cpp: |
| 14860 | (KJS::ThisNode::emitCode): |
| 14861 | (KJS::FunctionCallResolveNode::emitCode): |
| 14862 | * kjs/nodes.h: |
| 14863 | |
| 14864 | 2008-03-28 Oliver Hunt <oliver@apple.com> |
| 14865 | |
| 14866 | Reviewed by Geoff. |
| 14867 | |
| 14868 | Bug 18192: Squirrelfish needs support for break and continue |
| 14869 | <http://bugs.webkit.org/show_bug.cgi?id=18192> |
| 14870 | |
| 14871 | Added a loop context stack to the code generator to provide the |
| 14872 | correct jump labels for continue and goto. Added logic to the |
| 14873 | currently implemented loop constructs to manage entry and exit |
| 14874 | from the loop contexts. Finally, implemented codegen for break |
| 14875 | and continue (and a pass through for LabelNode) |
| 14876 | |
| 14877 | * VM/CodeGenerator.cpp: |
| 14878 | (KJS::CodeGenerator::pushLoopContext): |
| 14879 | (KJS::CodeGenerator::popLoopContext): |
| 14880 | (KJS::CodeGenerator::loopContextForIdentifier): |
| 14881 | (KJS::CodeGenerator::labelForContinue): |
| 14882 | (KJS::CodeGenerator::labelForBreak): |
| 14883 | * VM/CodeGenerator.h: |
| 14884 | * kjs/nodes.cpp: |
| 14885 | (KJS::DoWhileNode::emitCode): |
| 14886 | (KJS::WhileNode::emitCode): |
| 14887 | (KJS::ForNode::emitCode): |
| 14888 | (KJS::ContinueNode::emitCode): |
| 14889 | (KJS::BreakNode::emitCode): |
| 14890 | (KJS::LabelNode::emitCode): |
| 14891 | * kjs/nodes.h: |
| 14892 | |
| 14893 | 2008-03-27 Sam Weinig <sam@webkit.org> |
| 14894 | |
| 14895 | Reviewed by Geoffrey Garen. |
| 14896 | |
| 14897 | Add emitCode support for UnaryPlusNode, NegateNode, BitwiseNotNode and LogicalNotNode. |
| 14898 | |
| 14899 | * VM/CodeBlock.cpp: |
| 14900 | (KJS::printUnaryOp): |
| 14901 | (KJS::CodeBlock::dump): |
| 14902 | * VM/CodeGenerator.cpp: |
| 14903 | (KJS::CodeGenerator::emitToJSNumber): |
| 14904 | (KJS::CodeGenerator::emitNegate): |
| 14905 | (KJS::CodeGenerator::emitBitNot): |
| 14906 | (KJS::CodeGenerator::emitNot): |
| 14907 | * VM/CodeGenerator.h: |
| 14908 | * VM/Machine.cpp: |
| 14909 | (KJS::Machine::privateExecute): |
| 14910 | * VM/Opcode.h: |
| 14911 | * kjs/nodes.cpp: |
| 14912 | (KJS::UnaryPlusNode::emitCode): |
| 14913 | (KJS::NegateNode::emitCode): |
| 14914 | (KJS::BitwiseNotNode::emitCode): |
| 14915 | (KJS::LogicalNotNode::emitCode): |
| 14916 | * kjs/nodes.h: |
| 14917 | |
| 14918 | 2008-03-27 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 14919 | |
| 14920 | Reviewed by Maciej Stachowiak. |
| 14921 | |
| 14922 | Add support for LogicalAndNode and LogicalOrNode. |
| 14923 | |
| 14924 | * kjs/nodes.cpp: |
| 14925 | (KJS::LogicalAndNode::emitCode): |
| 14926 | (KJS::LogicalOrNode::emitCode): |
| 14927 | * kjs/nodes.h: |
| 14928 | |
| 14929 | 2008-03-27 Sam Weinig <sam@webkit.org> |
| 14930 | |
| 14931 | Clean up code and debug output. |
| 14932 | |
| 14933 | * VM/CodeBlock.cpp: |
| 14934 | (KJS::CodeBlock::dump): |
| 14935 | * VM/Machine.cpp: |
| 14936 | (KJS::Machine::privateExecute): |
| 14937 | |
| 14938 | 2008-03-27 Geoffrey Garen <ggaren@apple.com> |
| 14939 | |
| 14940 | Moved an ASSERT to a more logical place. |
| 14941 | |
| 14942 | * VM/Machine.cpp: |
| 14943 | (KJS::Machine::privateExecute): |
| 14944 | |
| 14945 | 2008-03-27 Sam Weinig <sam@webkit.org> |
| 14946 | |
| 14947 | Reviewed by Oliver Hunt. |
| 14948 | |
| 14949 | Add emitCode support for InstanceOfNode. |
| 14950 | |
| 14951 | * VM/CodeBlock.cpp: |
| 14952 | (KJS::CodeBlock::dump): |
| 14953 | * VM/CodeGenerator.cpp: |
| 14954 | (KJS::CodeGenerator::emitInstanceOf): |
| 14955 | * VM/CodeGenerator.h: |
| 14956 | * VM/Machine.cpp: |
| 14957 | (KJS::Machine::privateExecute): |
| 14958 | * VM/Opcode.h: |
| 14959 | * kjs/nodes.cpp: |
| 14960 | (KJS::InstanceOfNode::emitCode): |
| 14961 | * kjs/nodes.h: |
| 14962 | |
| 14963 | 2008-03-27 Oliver Hunt <oliver@apple.com> |
| 14964 | |
| 14965 | Reviewed by Maciej. |
| 14966 | |
| 14967 | Bug 18142: squirrelfish needs to support dynamic scoping/with |
| 14968 | <http://bugs.webkit.org/show_bug.cgi?id=18142> |
| 14969 | |
| 14970 | Add support for dynamic scoping and add code to handle 'with' |
| 14971 | statements. |
| 14972 | |
| 14973 | * VM/CodeBlock.cpp: |
| 14974 | (KJS::CodeBlock::dump): |
| 14975 | * VM/CodeBlock.h: |
| 14976 | (KJS::CodeBlock::CodeBlock): |
| 14977 | * VM/CodeGenerator.cpp: |
| 14978 | (KJS::CodeGenerator::getRegister): |
| 14979 | (KJS::CodeGenerator::emitPushScope): |
| 14980 | (KJS::CodeGenerator::emitPopScope): |
| 14981 | * VM/CodeGenerator.h: |
| 14982 | (KJS::CodeGenerator::CodeGenerator): |
| 14983 | * VM/Machine.cpp: |
| 14984 | (KJS::Machine::privateExecute): |
| 14985 | * VM/Opcode.h: |
| 14986 | * kjs/nodes.cpp: |
| 14987 | (KJS::WithNode::emitCode): |
| 14988 | * kjs/nodes.h: |
| 14989 | |
| 14990 | 2008-03-27 Sam Weinig <sam@webkit.org> |
| 14991 | |
| 14992 | Reviewed by Geoffrey Garen. |
| 14993 | |
| 14994 | Add emitCode support for NullNode, FalseNode, TrueNode, IfNode, IfElseNode, DoWhileNode and WhileNode |
| 14995 | |
| 14996 | * VM/CodeBlock.cpp: |
| 14997 | (KJS::CodeBlock::dump): Dump op_jfalse opcode. |
| 14998 | * VM/CodeGenerator.cpp: |
| 14999 | (KJS::CodeGenerator::emitJumpIfFalse): Identical to emitJumpIfTrue except it emits the op_jfalse opcode. |
| 15000 | (KJS::CodeGenerator::emitLoad): Add and emitLoad override for booleans. |
| 15001 | * VM/CodeGenerator.h: |
| 15002 | * VM/Machine.cpp: |
| 15003 | (KJS::Machine::privateExecute): Adds execution of op_jfalse. It is identical to op_jtrue, except the |
| 15004 | the condition is reversed. |
| 15005 | * VM/Opcode.h: Add op_jfalse. |
| 15006 | * kjs/nodes.cpp: |
| 15007 | (KJS::NullNode::emitCode): Added. |
| 15008 | (KJS::FalseNode::emitCode): Added. |
| 15009 | (KJS::TrueNode::emitCode): Added. |
| 15010 | (KJS::IfNode::emitCode): Added. |
| 15011 | (KJS::IfElseNode::emitCode): Added. |
| 15012 | (KJS::DoWhileNode::emitCode): Added. |
| 15013 | (KJS::WhileNode::emitCode): Added. |
| 15014 | * kjs/nodes.h: |
| 15015 | |
| 15016 | 2008-03-26 Geoffrey Garen <ggaren@apple.com> |
| 15017 | |
| 15018 | Nixed an unused List. |
| 15019 | |
| 15020 | The calm before my stormy war against the List class. |
| 15021 | |
| 15022 | * kjs/function_object.cpp: |
| 15023 | (KJS::FunctionObjectImp::construct): |
| 15024 | |
| 15025 | 2008-03-26 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 15026 | |
| 15027 | Reviewed by Geoffrey Garen. |
| 15028 | |
| 15029 | Adds support for EqualNode, NotEqualNode, StrictEqualNode, NotStrictEqualNode, |
| 15030 | LessEqNode, GreaterNode, GreaterEqNode, MultNode, DivNode, ModNode, SubNode, |
| 15031 | LeftShiftNode, RightShiftNode, UnsignedRightShiftNode, BitAndNode, BitXOrNode, |
| 15032 | and BitOrNode. |
| 15033 | |
| 15034 | * VM/CodeBlock.cpp: |
| 15035 | (KJS::CodeBlock::dump): |
| 15036 | * VM/CodeGenerator.cpp: |
| 15037 | (KJS::CodeGenerator::emitEqual): |
| 15038 | (KJS::CodeGenerator::emitNotEqual): |
| 15039 | (KJS::CodeGenerator::emitStrictEqual): |
| 15040 | (KJS::CodeGenerator::emitNotStrictEqual): |
| 15041 | (KJS::CodeGenerator::emitLessEq): |
| 15042 | (KJS::CodeGenerator::emitMult): |
| 15043 | (KJS::CodeGenerator::emitDiv): |
| 15044 | (KJS::CodeGenerator::emitMod): |
| 15045 | (KJS::CodeGenerator::emitSub): |
| 15046 | (KJS::CodeGenerator::emitLeftShift): |
| 15047 | (KJS::CodeGenerator::emitRightShift): |
| 15048 | (KJS::CodeGenerator::emitUnsignedRightShift): |
| 15049 | (KJS::CodeGenerator::emitBitAnd): |
| 15050 | (KJS::CodeGenerator::emitBitXOr): |
| 15051 | (KJS::CodeGenerator::emitBitOr): |
| 15052 | * VM/CodeGenerator.h: |
| 15053 | * VM/Machine.cpp: |
| 15054 | (KJS::jsLessEq): |
| 15055 | (KJS::Machine::privateExecute): |
| 15056 | * VM/Opcode.h: |
| 15057 | * kjs/nodes.cpp: |
| 15058 | (KJS::MultNode::emitCode): |
| 15059 | (KJS::DivNode::emitCode): |
| 15060 | (KJS::ModNode::emitCode): |
| 15061 | (KJS::SubNode::emitCode): |
| 15062 | (KJS::LeftShiftNode::emitCode): |
| 15063 | (KJS::RightShiftNode::emitCode): |
| 15064 | (KJS::UnsignedRightShiftNode::emitCode): |
| 15065 | (KJS::GreaterNode::emitCode): |
| 15066 | (KJS::LessEqNode::emitCode): |
| 15067 | (KJS::GreaterEqNode::emitCode): |
| 15068 | (KJS::EqualNode::emitCode): |
| 15069 | (KJS::NotEqualNode::emitCode): |
| 15070 | (KJS::StrictEqualNode::emitCode): |
| 15071 | (KJS::NotStrictEqualNode::emitCode): |
| 15072 | (KJS::BitAndNode::emitCode): |
| 15073 | (KJS::BitXOrNode::emitCode): |
| 15074 | (KJS::BitOrNode::emitCode): |
| 15075 | * kjs/nodes.h: |
| 15076 | |
| 15077 | 2008-03-26 Geoffrey Garen <ggaren@apple.com> |
| 15078 | |
| 15079 | Reviewed by Oliver Hunt. |
| 15080 | |
| 15081 | Only print debug dumps in debug builds. |
| 15082 | |
| 15083 | * VM/CodeGenerator.cpp: |
| 15084 | (KJS::CodeGenerator::generate): |
| 15085 | * VM/Machine.cpp: |
| 15086 | (KJS::Machine::privateExecute): |
| 15087 | |
| 15088 | 2008-03-26 Geoffrey Garen <ggaren@apple.com> |
| 15089 | |
| 15090 | Reviewed by Oliver Hunt. |
| 15091 | |
| 15092 | Moved a few files around in the XCode project. |
| 15093 | |
| 15094 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 15095 | |
| 15096 | 2008-03-26 Geoffrey Garen <ggaren@apple.com> |
| 15097 | |
| 15098 | Reviewed by Oliver Hunt. |
| 15099 | |
| 15100 | Made closures work. |
| 15101 | |
| 15102 | An activation object aliases to the register file until its associated |
| 15103 | function returns, at which point it copies the registers for locals and |
| 15104 | parameters into an independent storage buffer. |
| 15105 | |
| 15106 | 2008-03-24 Geoffrey Garen <ggaren@apple.com> |
| 15107 | |
| 15108 | Reviewed by Oliver Hunt. |
| 15109 | |
| 15110 | Fixed recent 25% regression on simple for loop test. GCC seems to be |
| 15111 | very finicky about the code that gets inlined into |
| 15112 | Machine::privateExecute. |
| 15113 | |
| 15114 | Everything in this patch is simply the result of experiment. |
| 15115 | |
| 15116 | The resolve and resolve_base opcodes do not seem to have gotten slower |
| 15117 | from this change. |
| 15118 | |
| 15119 | * VM/Machine.cpp: |
| 15120 | (KJS::resolve): |
| 15121 | (KJS::resolveBase): |
| 15122 | (KJS::Machine::privateExecute): |
| 15123 | * kjs/nodes.h: |
| 15124 | |
| 15125 | 2008-03-24 Oliver Hunt <oliver@apple.com> |
| 15126 | |
| 15127 | Reviewed by Geoff Garen. |
| 15128 | |
| 15129 | Bug 18059: squirrelfish needs to compile on platforms without computed goto |
| 15130 | <http://bugs.webkit.org/show_bug.cgi?id=18059> |
| 15131 | |
| 15132 | "Standard" macro style support for conditionalising the use of computed goto. |
| 15133 | |
| 15134 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 15135 | * VM/Machine.cpp: |
| 15136 | (KJS::Machine::isOpcode): |
| 15137 | (KJS::Machine::privateExecute): |
| 15138 | * VM/Machine.h: |
| 15139 | (KJS::Machine::getOpcode): |
| 15140 | (KJS::Machine::getOpcodeID): |
| 15141 | * VM/Opcode.h: |
| 15142 | * wtf/Platform.h: |
| 15143 | |
| 15144 | 2008-03-24 Geoffrey Garen <ggaren@apple.com> |
| 15145 | |
| 15146 | Moved my notes from nodes.h to the wiki. |
| 15147 | |
| 15148 | * kjs/nodes.h: |
| 15149 | |
| 15150 | 2008-03-24 Geoffrey Garen <ggaren@apple.com> |
| 15151 | |
| 15152 | SquirrelFish lives. |
| 15153 | |
| 15154 | Initial check-in of the code I've been carrying around. Lots of stuff |
| 15155 | doesn't work. Plus a bunch of empty files. |
| 15156 | |
| 15157 | === Start merge of squirrelfish === |
| 15158 | |
| 15159 | 2008-05-21 Darin Adler <darin@apple.com> |
| 15160 | |
| 15161 | - try to fix the Windows build |
| 15162 | |
| 15163 | * profiler/Profiler.cpp: |
| 15164 | (KJS::Profiler::stopProfiling): Use ptrdiff_t instead of the less-common but incredibly |
| 15165 | similar ssize_t type. |
| 15166 | * wtf/AVLTree.h: |
| 15167 | (KJS::AVLTree::search): Added a typename for a dependent name that's a type. |
| 15168 | |
| 15169 | 2008-05-21 Darin Adler <darin@apple.com> |
| 15170 | |
| 15171 | Reviewed by Anders. |
| 15172 | |
| 15173 | - fix <rdar://problem/5952721> bug in JavaScript arguments object property lookup |
| 15174 | |
| 15175 | Test: fast/js/arguments-bad-index.html |
| 15176 | |
| 15177 | * kjs/function.cpp: |
| 15178 | (KJS::IndexToNameMap::IndexToNameMap): Use unsigned instead of int. |
| 15179 | (KJS::IndexToNameMap::isMapped): Use unsigned instead of int, and also use the |
| 15180 | strict version of the numeric conversion function, since we don't want to allow |
| 15181 | trailing junk. |
| 15182 | (KJS::IndexToNameMap::unMap): Ditto. |
| 15183 | (KJS::IndexToNameMap::operator[]): Ditto. |
| 15184 | * kjs/function.h: Changed IndexToNameMap::size type from int to unsigned. |
| 15185 | |
| 15186 | 2008-05-21 Timothy Hatcher <timothy@apple.com> |
| 15187 | |
| 15188 | Change the Profiler to allow multiple profiles to be running at |
| 15189 | the same time. This can happen when you have nested console.profile() |
| 15190 | calls. This required two changes. First, the Profiler needed to keep a |
| 15191 | Vector of current profiles, instead of one. Second, a Profile needs |
| 15192 | to keep track of the global ExecState it started in and the page group |
| 15193 | identifier it is tracking. |
| 15194 | |
| 15195 | The stopProfiling call now takes the same arguments as startProfiling. |
| 15196 | This makes sure the correct profile is stopped. Passing a null UString |
| 15197 | as the title will stop the last profile for the matching ExecState. |
| 15198 | |
| 15199 | <rdar://problem/5951559> Multiple pages profiling can interfere with each other |
| 15200 | |
| 15201 | Reviewed by Kevin McCullough. |
| 15202 | |
| 15203 | * JavaScriptCore.exp: Added new exports. Removed old symbols. |
| 15204 | * profiler/Profile.cpp: |
| 15205 | (KJS::Profile::Profile): New constructor arguments for the |
| 15206 | originatingGlobalExec and pageGroupIdentifier. |
| 15207 | (KJS::Profile::stopProfiling): Set the m_originatingGlobalExec to null. |
| 15208 | * profiler/Profile.h: |
| 15209 | (KJS::Profile::create): Additional arguments. |
| 15210 | (KJS::Profile::originatingGlobalExec): Return m_originatingGlobalExec. |
| 15211 | (KJS::Profile::pageGroupIdentifier): Return m_pageGroupIdentifier. |
| 15212 | * profiler/Profiler.cpp: |
| 15213 | (KJS::Profiler::findProfile): Added. Finds a Profile that matches |
| 15214 | the ExecState and title. |
| 15215 | (KJS::Profiler::startProfiling): Return early if there is already |
| 15216 | a Profile with the ExecState and title. If not, create a new profile |
| 15217 | and append it to m_currentProfiles. |
| 15218 | (KJS::Profiler::stopProfiling): Loops through m_currentProfiles |
| 15219 | and find the one matching the ExecState and title. If one is found |
| 15220 | call stopProfiling and return the Profile after removing it |
| 15221 | from m_currentProfiles. |
| 15222 | (KJS::dispatchFunctionToProfiles): Helper inline function to loop through |
| 15223 | m_currentProfiles and call a Profile function. |
| 15224 | (KJS::Profiler::willExecute): Call dispatchFunctionToProfiles. |
| 15225 | (KJS::Profiler::didExecute): Ditto. |
| 15226 | * profiler/Profiler.h: |
| 15227 | |
| 15228 | 2008-05-21 Alexey Proskuryakov <ap@webkit.org> |
| 15229 | |
| 15230 | Reviewed by Darin. |
| 15231 | |
| 15232 | <rdar://problem/5908520> REGRESSION (3.1.1-r33033): Crash in WebKit when opening or |
| 15233 | refreshing page on people.com |
| 15234 | |
| 15235 | The problem was that STL algorithms do not work with non-conformant comparators, and the |
| 15236 | site used sort(function() { return 0.5 - Math.random(); } to randomly shuffle an array. |
| 15237 | |
| 15238 | https://bugs.webkit.org/show_bug.cgi?id=18687 |
| 15239 | REGRESSION(r32220): ecma/Array/15.4.4.5-3.js test now fails in GMT(BST) |
| 15240 | |
| 15241 | Besides relying on sort stability, this test was just broken, and kept failing with the |
| 15242 | new stable sort. |
| 15243 | |
| 15244 | Tests: fast/js/sort-randomly.html |
| 15245 | fast/js/sort-stability.html |
| 15246 | fast/js/comparefn-sort-stability.html |
| 15247 | |
| 15248 | * kjs/avl_tree.h: Added an AVL tree implementation. |
| 15249 | |
| 15250 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 15251 | * wtf/AVLTree.h: Added. |
| 15252 | Added an AVL tree implementation. |
| 15253 | |
| 15254 | * kjs/array_instance.cpp: |
| 15255 | (KJS::ArrayInstance::increaseVectorLength): |
| 15256 | (KJS::ArrayInstance::sort): |
| 15257 | (KJS::AVLTreeAbstractorForArrayCompare::get_less): |
| 15258 | (KJS::AVLTreeAbstractorForArrayCompare::set_less): |
| 15259 | (KJS::AVLTreeAbstractorForArrayCompare::get_greater): |
| 15260 | (KJS::AVLTreeAbstractorForArrayCompare::set_greater): |
| 15261 | (KJS::AVLTreeAbstractorForArrayCompare::get_balance_factor): |
| 15262 | (KJS::AVLTreeAbstractorForArrayCompare::set_balance_factor): |
| 15263 | (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key): |
| 15264 | (KJS::AVLTreeAbstractorForArrayCompare::compare_key_node): |
| 15265 | (KJS::AVLTreeAbstractorForArrayCompare::compare_node_node): |
| 15266 | (KJS::AVLTreeAbstractorForArrayCompare::null): |
| 15267 | (KJS::ArrayInstance::compactForSorting): |
| 15268 | |
| 15269 | * kjs/array_instance.h: increaseVectorLength() now returns a bool to indicate whether it was |
| 15270 | successful. |
| 15271 | |
| 15272 | * wtf/Vector.h: |
| 15273 | (WTF::Vector::Vector): |
| 15274 | (WTF::::operator=): |
| 15275 | (WTF::::fill): |
| 15276 | Make these methods fail instead of crash when allocation fails, matching resize() and |
| 15277 | reserveCapacity(), which already had this behavior. Callers need to check for null buffer |
| 15278 | after making any Vector call that can try to allocate. |
| 15279 | |
| 15280 | * tests/mozilla/ecma/Array/15.4.4.5-3.js: Fixed the test to use a consistent sort function, |
| 15281 | as suggested in comments to a Mozilla bug filed about it (I'll keep tracking the bug to see |
| 15282 | what the final resolution is). |
| 15283 | |
| 15284 | 2008-05-20 Kevin McCullough <kmccullough@apple.com> |
| 15285 | |
| 15286 | Reviewed by Tim. |
| 15287 | |
| 15288 | <rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a |
| 15289 | profile node. |
| 15290 | - Implements focus by adding the idea of a profileNode being visible and |
| 15291 | adding the ability to reset all of the visible flags. |
| 15292 | |
| 15293 | * profiler/Profile.h: |
| 15294 | (KJS::Profile::focus): |
| 15295 | * profiler/ProfileNode.cpp: |
| 15296 | (KJS::ProfileNode::ProfileNode): Initialize the visible flag. |
| 15297 | (KJS::ProfileNode::setTreeVisible): Set the visibility of this node and |
| 15298 | all of its descendents. |
| 15299 | (KJS::ProfileNode::focus): Determine if this node should be visible when |
| 15300 | focusing, if the functionName matches this node's function name or if any |
| 15301 | of this node's children are visible. |
| 15302 | (KJS::ProfileNode::restoreAll): Restore all nodes' visible flag. |
| 15303 | (KJS::ProfileNode::debugPrintData): |
| 15304 | * profiler/ProfileNode.h: |
| 15305 | (KJS::ProfileNode::visible): |
| 15306 | (KJS::ProfileNode::setVisible): |
| 15307 | |
| 15308 | 2008-05-20 Timothy Hatcher <timothy@apple.com> |
| 15309 | |
| 15310 | Fixes a couple performance issues with the profiler. Also fixes |
| 15311 | a regression where some nodes wouldn't be added to the tree. |
| 15312 | |
| 15313 | Reviewed by Kevin McCullough. |
| 15314 | |
| 15315 | * profiler/ProfileNode.cpp: |
| 15316 | (KJS::ProfileNode::addChild): Compare callIdentifier instead |
| 15317 | of functionName. |
| 15318 | * profiler/ProfileNode.h: |
| 15319 | (CallIdentifier.operator==): Compare the CallIdentifiers in |
| 15320 | an order that fails sooner for non-matches. |
| 15321 | (CallIdentifier.callIdentifier): Return the CallIdentifier by |
| 15322 | reference to prevent making a new copy each time. |
| 15323 | |
| 15324 | 2008-05-20 Kevin McCullough <kmccullough@apple.com> |
| 15325 | |
| 15326 | Reviewed by Darin. |
| 15327 | |
| 15328 | <rdar://problem/5950796> JSProfiler: dump functions are in the code |
| 15329 | Removed dump and logging functions from the Release version of the code |
| 15330 | and renamed them to be obviously for debugging only. |
| 15331 | |
| 15332 | * JavaScriptCore.exp: |
| 15333 | * profiler/Profile.cpp: |
| 15334 | (KJS::Profile::debugPrintData): |
| 15335 | (KJS::Profile::debugPrintDataSampleStyle): |
| 15336 | * profiler/Profile.h: |
| 15337 | * profiler/ProfileNode.cpp: |
| 15338 | (KJS::ProfileNode::debugPrintData): |
| 15339 | (KJS::ProfileNode::debugPrintDataSampleStyle): |
| 15340 | * profiler/ProfileNode.h: |
| 15341 | * profiler/Profiler.cpp: |
| 15342 | * profiler/Profiler.h: |
| 15343 | |
| 15344 | 2008-05-20 Kevin McCullough <kmccullough@apple.com> |
| 15345 | |
| 15346 | Reviewed by Adam. |
| 15347 | |
| 15348 | <rdar://problem/5950538> JSProfiler: Keep track of non-JS execution time |
| 15349 | We now have an extra node that represents the excess non-JS time. |
| 15350 | - Also changed "SCRIPT" and "anonymous function" to be more consistent |
| 15351 | with the debugger. |
| 15352 | |
| 15353 | * profiler/ProfileNode.cpp: |
| 15354 | (KJS::ProfileNode::stopProfiling): If this ProfileNode is the head node |
| 15355 | create a new child that has the excess execution time. |
| 15356 | (KJS::ProfileNode::calculatePercentages): Moved calculation of the |
| 15357 | percentages into a function since it's called from multiple places. |
| 15358 | * profiler/ProfileNode.h: Add the newly needed functions used above. |
| 15359 | (KJS::ProfileNode::setTotalTime): |
| 15360 | (KJS::ProfileNode::setSelfTime): |
| 15361 | (KJS::ProfileNode::setNumberOfCalls): |
| 15362 | * profiler/Profiler.cpp: renamed "SCRIPT" and "anonymous function" to be |
| 15363 | consistent with the debugger and use constants that can be localized |
| 15364 | more easily. |
| 15365 | (KJS::getCallIdentifiers): |
| 15366 | (KJS::getCallIdentifierFromFunctionImp): |
| 15367 | |
| 15368 | 2008-05-20 Kevin McCullough <kmccullough@apple.com> |
| 15369 | |
| 15370 | Reviewed by Tim. |
| 15371 | |
| 15372 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15373 | Removed only profiler-internal use of currentProfile since that concept |
| 15374 | is changing. |
| 15375 | |
| 15376 | * profiler/Profile.h: Now stopProfiling takes a time and bool as |
| 15377 | arguments. The time is used to calculate %s from and the bool tells |
| 15378 | if this node is the head node and should be the one calculating the time. |
| 15379 | (KJS::Profile::stopProfiling): |
| 15380 | * profiler/ProfileNode.cpp: Ditto. |
| 15381 | (KJS::ProfileNode::stopProfiling): |
| 15382 | * profiler/ProfileNode.h: Ditto. |
| 15383 | |
| 15384 | 2008-05-20 Kevin McCullough <kmccullough@apple.com> |
| 15385 | |
| 15386 | Accidentally turned on the profiler. |
| 15387 | |
| 15388 | * kjs/config.h: |
| 15389 | |
| 15390 | |
| 15391 | 2008-05-20 Kevin McCullough <kmccullough@apple.com> |
| 15392 | |
| 15393 | Reviewed by Tim. |
| 15394 | |
| 15395 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15396 | Split function name into 3 parts so that the Web Inspector can link it to |
| 15397 | the resource location from whence it came. |
| 15398 | |
| 15399 | * kjs/ustring.cpp: Implemented operator> for UStrings |
| 15400 | (KJS::operator>): |
| 15401 | * kjs/ustring.h: |
| 15402 | * profiler/Profile.cpp: |
| 15403 | (KJS::Profile::Profile): Initialize all 3 values. |
| 15404 | (KJS::Profile::willExecute): Use CallIdentifier struct. |
| 15405 | (KJS::Profile::didExecute): Ditto. |
| 15406 | * profiler/Profile.h: Ditto and remove unused function. |
| 15407 | * profiler/ProfileNode.cpp: |
| 15408 | (KJS::ProfileNode::ProfileNode): Use CallIdentifier struct. |
| 15409 | (KJS::ProfileNode::willExecute): Ditto and fix an issue where we |
| 15410 | restarted the m_startTime even though it was already started. |
| 15411 | (KJS::ProfileNode::didExecute): Ditto. |
| 15412 | (KJS::ProfileNode::findChild): Ditto. |
| 15413 | (KJS::functionNameDescendingComparator): Ditto and use new comparator. |
| 15414 | (KJS::functionNameAscendingComparator): Ditto. |
| 15415 | (KJS::ProfileNode::printDataInspectorStyle): Use CallIdentifier struct. |
| 15416 | (KJS::ProfileNode::printDataSampleStyle): Ditto. |
| 15417 | * profiler/ProfileNode.h: |
| 15418 | (KJS::CallIdentifier::CallIdentifier): Describe the CallIdentifier struct |
| 15419 | (KJS::CallIdentifier::operator== ): |
| 15420 | (KJS::ProfileNode::create): Use the CallIdentifier struct. |
| 15421 | (KJS::ProfileNode::callIdentifier): |
| 15422 | (KJS::ProfileNode::functionName): Now only return the function name, not |
| 15423 | the url and line number too. |
| 15424 | (KJS::ProfileNode::url): |
| 15425 | (KJS::ProfileNode::lineNumber): |
| 15426 | * profiler/Profiler.cpp: Use the CallIdentifier struct. |
| 15427 | (KJS::Profiler::startProfiling): |
| 15428 | (KJS::Profiler::willExecute): |
| 15429 | (KJS::Profiler::didExecute): |
| 15430 | (KJS::getCallIdentifiers): |
| 15431 | (KJS::getCallIdentifierFromFunctionImp): |
| 15432 | |
| 15433 | 2008-05-20 Timothy Hatcher <timothy@apple.com> |
| 15434 | |
| 15435 | Rename sortFileName{Ascending,Descending} to |
| 15436 | sortFunctionName{Ascending,Descending}. |
| 15437 | |
| 15438 | Reviewed by Kevin McCullough. |
| 15439 | |
| 15440 | * JavaScriptCore.exp: |
| 15441 | * kjs/config.h: |
| 15442 | * profiler/Profile.h: |
| 15443 | * profiler/ProfileNode.cpp: |
| 15444 | (KJS::functionNameDescendingComparator): |
| 15445 | (KJS::ProfileNode::sortFunctionNameDescending): |
| 15446 | (KJS::functionNameAscendingComparator): |
| 15447 | (KJS::ProfileNode::sortFunctionNameAscending): |
| 15448 | * profiler/ProfileNode.h: |
| 15449 | |
| 15450 | 2008-05-19 Timothy Hatcher <timothy@apple.com> |
| 15451 | |
| 15452 | Make the profiler use higher than millisecond resolution time-stamps. |
| 15453 | |
| 15454 | Reviewed by Kevin McCullough. |
| 15455 | |
| 15456 | * kjs/DateMath.cpp: |
| 15457 | (KJS::getCurrentUTCTime): Call getCurrentUTCTimeWithMicroseconds and |
| 15458 | floor the result. |
| 15459 | (KJS::getCurrentUTCTimeWithMicroseconds): Copied from the previous |
| 15460 | implementation of getCurrentUTCTime without the floor call. |
| 15461 | * kjs/DateMath.h: Addded getCurrentUTCTimeWithMicroseconds. |
| 15462 | * profiler/ProfileNode.cpp: |
| 15463 | (KJS::ProfileNode::ProfileNode): Use getCurrentUTCTimeWithMicroseconds. |
| 15464 | |
| 15465 | 2008-05-19 Timothy Hatcher <timothy@apple.com> |
| 15466 | |
| 15467 | Fixes a bug in the profiler where call and apply would show up |
| 15468 | and double the time spent in a function. We don't want to show call |
| 15469 | and apply at all in the profiles. This change excludes them. |
| 15470 | |
| 15471 | Reviewed by Kevin McCullough. |
| 15472 | |
| 15473 | * profiler/ProfileNode.cpp: |
| 15474 | (KJS::ProfileNode::stopProfiling): Remove a second for loop and |
| 15475 | calculate self time in the existing loop. |
| 15476 | * profiler/Profiler.cpp: |
| 15477 | (KJS::shouldExcludeFunction): Helper inline function that returns |
| 15478 | true in the current function in an InternalFunctionImp and it is |
| 15479 | has the functionName call or apply. |
| 15480 | (KJS::Profiler::willExecute): Call shouldExcludeFunction and return |
| 15481 | early if if returns true. |
| 15482 | (KJS::Profiler::didExecute): Ditto. |
| 15483 | |
| 15484 | 2008-05-19 Kevin McCullough <kmccullough@apple.com> |
| 15485 | |
| 15486 | Reviewed by Tim. |
| 15487 | |
| 15488 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15489 | - Implement sorting by function name. |
| 15490 | |
| 15491 | * JavaScriptCore.exp: |
| 15492 | * profiler/Profile.h: |
| 15493 | (KJS::Profile::sortFileNameDescending): |
| 15494 | (KJS::Profile::sortFileNameAscending): |
| 15495 | * profiler/ProfileNode.cpp: |
| 15496 | (KJS::fileNameDescendingComparator): |
| 15497 | (KJS::ProfileNode::sortFileNameDescending): |
| 15498 | (KJS::fileNameAscendingComparator): |
| 15499 | (KJS::ProfileNode::sortFileNameAscending): |
| 15500 | * profiler/ProfileNode.h: |
| 15501 | |
| 15502 | 2008-05-19 Kevin McCullough <kmccullough@apple.com> |
| 15503 | |
| 15504 | Reviewed by Adam. |
| 15505 | |
| 15506 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15507 | - Pass the exec state to profiler when calling startProfiling so that if |
| 15508 | profiling is started within an execution context that location is |
| 15509 | recorded correctly. |
| 15510 | |
| 15511 | * JavaScriptCore.exp: |
| 15512 | * profiler/ProfileNode.cpp: |
| 15513 | (KJS::ProfileNode::printDataInspectorStyle): Dump more info for debugging |
| 15514 | purposes. |
| 15515 | * profiler/Profiler.cpp: |
| 15516 | (KJS::Profiler::startProfiling): |
| 15517 | * profiler/Profiler.h: |
| 15518 | |
| 15519 | 2008-05-19 Kevin McCullough <kmccullough@apple.com> |
| 15520 | |
| 15521 | Rubberstamped by Geoff. |
| 15522 | |
| 15523 | Turn off the profiler because it is a performance regression. |
| 15524 | |
| 15525 | * kjs/config.h: |
| 15526 | |
| 15527 | 2008-05-19 Alp Toker <alp@nuanti.com> |
| 15528 | |
| 15529 | Reviewed by Anders and Beth. |
| 15530 | |
| 15531 | http://bugs.webkit.org/show_bug.cgi?id=16495 |
| 15532 | [GTK] Accessibility support with ATK/AT-SPI |
| 15533 | |
| 15534 | Initial ATK/AT-SPI accessibility support for the GTK+ port. |
| 15535 | |
| 15536 | * wtf/Platform.h: |
| 15537 | |
| 15538 | 2008-05-19 Kevin McCullough <kmccullough@apple.com> |
| 15539 | |
| 15540 | Reviewed by Tim. |
| 15541 | |
| 15542 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15543 | -In an effort to make the profiler as efficient as possible instead of |
| 15544 | prepending to a vector we keep the vector in reverse order and operate |
| 15545 | over it backwards. |
| 15546 | |
| 15547 | * profiler/Profile.cpp: |
| 15548 | (KJS::Profile::willExecute): |
| 15549 | (KJS::Profile::didExecute): |
| 15550 | * profiler/ProfileNode.cpp: |
| 15551 | (KJS::ProfileNode::didExecute): |
| 15552 | (KJS::ProfileNode::endAndRecordCall): |
| 15553 | * profiler/ProfileNode.h: |
| 15554 | * profiler/Profiler.cpp: |
| 15555 | (KJS::getStackNames): |
| 15556 | |
| 15557 | 2008-05-16 Kevin McCullough <kmccullough@apple.com> |
| 15558 | |
| 15559 | Reviewed by Tim. |
| 15560 | |
| 15561 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15562 | Implement sorting for the profiler. |
| 15563 | I chose to sort the profileNodes in place since there is no reason they |
| 15564 | need to retain their original order. |
| 15565 | |
| 15566 | * JavaScriptCore.exp: Export the symbols. |
| 15567 | * profiler/Profile.h: Add the different ways a profile can be sorted. |
| 15568 | (KJS::Profile::sortTotalTimeDescending): |
| 15569 | (KJS::Profile::sortTotalTimeAscending): |
| 15570 | (KJS::Profile::sortSelfTimeDescending): |
| 15571 | (KJS::Profile::sortSelfTimeAscending): |
| 15572 | (KJS::Profile::sortCallsDescending): |
| 15573 | (KJS::Profile::sortCallsAscending): |
| 15574 | * profiler/ProfileNode.cpp: Implement those ways. |
| 15575 | (KJS::totalTimeDescendingComparator): |
| 15576 | (KJS::ProfileNode::sortTotalTimeDescending): |
| 15577 | (KJS::totalTimeAscendingComparator): |
| 15578 | (KJS::ProfileNode::sortTotalTimeAscending): |
| 15579 | (KJS::selfTimeDescendingComparator): |
| 15580 | (KJS::ProfileNode::sortSelfTimeDescending): |
| 15581 | (KJS::selfTimeAscendingComparator): |
| 15582 | (KJS::ProfileNode::sortSelfTimeAscending): |
| 15583 | (KJS::callsDescendingComparator): |
| 15584 | (KJS::ProfileNode::sortCallsDescending): |
| 15585 | (KJS::callsAscendingComparator): |
| 15586 | (KJS::ProfileNode::sortCallsAscending): |
| 15587 | * profiler/ProfileNode.h: No longer use a Deque since it cannot be |
| 15588 | sorted by std::sort and there was no reason not to use a Vector. I |
| 15589 | previously had though I would do prepending but am not. |
| 15590 | (KJS::ProfileNode::selfTime): |
| 15591 | (KJS::ProfileNode::totalPercent): |
| 15592 | (KJS::ProfileNode::selfPercent): |
| 15593 | (KJS::ProfileNode::children): |
| 15594 | * profiler/Profiler.cpp: Removed these functions as they can be called |
| 15595 | directoy on the Profile object after getting the Vector of them. |
| 15596 | (KJS::getStackNames): |
| 15597 | * profiler/Profiler.h: |
| 15598 | |
| 15599 | 2008-05-15 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 15600 | |
| 15601 | Reviewed by Simon. |
| 15602 | |
| 15603 | Since WebKitGtk is fully using autotools now, clean-up the .pro/.pri files |
| 15604 | from gtk-port. |
| 15605 | |
| 15606 | * JavaScriptCore.pro: |
| 15607 | * kjs/testkjs.pro: |
| 15608 | |
| 15609 | 2008-05-15 Kevin McCullough <kmccullough@apple.com> |
| 15610 | |
| 15611 | - Build fix. |
| 15612 | |
| 15613 | * JavaScriptCore.exp: |
| 15614 | |
| 15615 | 2008-05-15 Kevin McCullough <kmccullough@apple.com> |
| 15616 | |
| 15617 | Reviewed by Tim. |
| 15618 | |
| 15619 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15620 | - Cache some values to save on computing them repetitively. This will be |
| 15621 | a big savings when we sort since we won't have to walk the tree for |
| 15622 | every comparison! |
| 15623 | - We cache these values when we end profiling because otherwise we won't |
| 15624 | know which profile to get the totalTime for the whole profile from without |
| 15625 | retaining a reference to the head profile or looking up the profile from |
| 15626 | the list of all profiles. |
| 15627 | - Also it's safe to assume we won't be asked for these values while we |
| 15628 | are still profiling since the WebInspector only get's profileNodes from |
| 15629 | profiles that are in the allProfiles() list and a profile is only added |
| 15630 | to that list after it has finished and these values will no longer |
| 15631 | change. |
| 15632 | |
| 15633 | * JavaScriptCore.exp: |
| 15634 | * profiler/ProfileNode.cpp: |
| 15635 | (KJS::ProfileNode::ProfileNode): |
| 15636 | (KJS::ProfileNode::stopProfiling): |
| 15637 | (KJS::ProfileNode::printDataInspectorStyle): |
| 15638 | (KJS::ProfileNode::printDataSampleStyle): |
| 15639 | (KJS::ProfileNode::endAndRecordCall): |
| 15640 | * profiler/ProfileNode.h: |
| 15641 | (KJS::ProfileNode::totalTime): |
| 15642 | (KJS::ProfileNode::selfTime): |
| 15643 | (KJS::ProfileNode::totalPercent): |
| 15644 | (KJS::ProfileNode::selfPercent): |
| 15645 | * profiler/Profiler.cpp: |
| 15646 | (KJS::Profiler::stopProfiling): |
| 15647 | |
| 15648 | 2008-05-15 Simon Hausmann <shausman@trolltech.com> |
| 15649 | |
| 15650 | Reviewed by Holger. |
| 15651 | |
| 15652 | Fix compilation when compiling with MSVC and wchar_t support. |
| 15653 | |
| 15654 | * wtf/unicode/qt4/UnicodeQt4.h: |
| 15655 | (WTF::Unicode::foldCase): |
| 15656 | (WTF::Unicode::umemcasecmp): |
| 15657 | |
| 15658 | 2008-05-14 Kevin McCullough <kmccullough@apple.com> |
| 15659 | |
| 15660 | Reviewed by Tim. |
| 15661 | |
| 15662 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15663 | - Turn on the profiler. |
| 15664 | |
| 15665 | * kjs/config.h: |
| 15666 | |
| 15667 | 2008-05-14 Kevin McCullough <kmccullough@apple.com> |
| 15668 | |
| 15669 | Reviewed by Tim. |
| 15670 | |
| 15671 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15672 | - Expose the new profiler functions to the WebInspector. |
| 15673 | |
| 15674 | * JavaScriptCore.exp: |
| 15675 | |
| 15676 | 2008-05-14 Kevin McCullough <kmccullough@apple.com> |
| 15677 | |
| 15678 | Giving credit where credit is due. |
| 15679 | |
| 15680 | * ChangeLog: |
| 15681 | |
| 15682 | 2008-05-14 Kevin McCullough <kmccullough@apple.com> |
| 15683 | |
| 15684 | Reviewed by Geoff and Sam. |
| 15685 | |
| 15686 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15687 | Add the ability to get percentages of total and self time for displaying |
| 15688 | in the WebInspector. |
| 15689 | |
| 15690 | * profiler/Profile.h: |
| 15691 | (KJS::Profile::totalProfileTime): |
| 15692 | * profiler/ProfileNode.cpp: |
| 15693 | (KJS::ProfileNode::totalPercent): |
| 15694 | (KJS::ProfileNode::selfPercent): |
| 15695 | * profiler/ProfileNode.h: |
| 15696 | * profiler/Profiler.h: |
| 15697 | (KJS::Profiler::currentProfile): |
| 15698 | |
| 15699 | 2008-05-14 Kevin McCullough <kmccullough@apple.com> |
| 15700 | |
| 15701 | Reviewed by Sam. |
| 15702 | |
| 15703 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15704 | - Rename FunctionCallProfile to ProfileNode. |
| 15705 | |
| 15706 | * GNUmakefile.am: |
| 15707 | * JavaScriptCore.exp: |
| 15708 | * JavaScriptCore.pri: |
| 15709 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 15710 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 15711 | * JavaScriptCoreSources.bkl: |
| 15712 | * profiler/FunctionCallProfile.cpp: Removed. |
| 15713 | * profiler/FunctionCallProfile.h: Removed. |
| 15714 | * profiler/Profile.cpp: |
| 15715 | (KJS::Profile::Profile): |
| 15716 | (KJS::Profile::willExecute): |
| 15717 | * profiler/Profile.h: |
| 15718 | (KJS::Profile::callTree): |
| 15719 | * profiler/ProfileNode.cpp: Copied from profiler/FunctionCallProfile.cpp. |
| 15720 | (KJS::ProfileNode::ProfileNode): |
| 15721 | (KJS::ProfileNode::willExecute): |
| 15722 | (KJS::ProfileNode::didExecute): |
| 15723 | (KJS::ProfileNode::addChild): |
| 15724 | (KJS::ProfileNode::findChild): |
| 15725 | (KJS::ProfileNode::stopProfiling): |
| 15726 | (KJS::ProfileNode::selfTime): |
| 15727 | (KJS::ProfileNode::printDataInspectorStyle): |
| 15728 | (KJS::ProfileNode::printDataSampleStyle): |
| 15729 | (KJS::ProfileNode::endAndRecordCall): |
| 15730 | * profiler/ProfileNode.h: Copied from profiler/FunctionCallProfile.h. |
| 15731 | (KJS::ProfileNode::create): |
| 15732 | (KJS::ProfileNode::children): |
| 15733 | * profiler/Profiler.cpp: |
| 15734 | |
| 15735 | 2008-05-14 Kevin McCullough <kmccullough@apple.com> |
| 15736 | |
| 15737 | Reviewed by John. |
| 15738 | |
| 15739 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15740 | - Have each FunctionCallProfile be able to return it's total and self time. |
| 15741 | |
| 15742 | * JavaScriptCore.exp: |
| 15743 | * profiler/FunctionCallProfile.cpp: |
| 15744 | (KJS::FunctionCallProfile::selfTime): |
| 15745 | * profiler/FunctionCallProfile.h: |
| 15746 | (KJS::FunctionCallProfile::totalTime): |
| 15747 | |
| 15748 | 2008-05-14 Alexey Proskuryakov <ap@webkit.org> |
| 15749 | |
| 15750 | Reviewed by Darin. |
| 15751 | |
| 15752 | <rdar://problem/5934376> REGRESSION: A script fails because of a straw BOM character in it. |
| 15753 | |
| 15754 | <https://bugs.webkit.org/show_bug.cgi?id=4931> |
| 15755 | Unicode format characters (Cf) should be removed from JavaScript source |
| 15756 | |
| 15757 | Of all Cf characters, we are only removing BOM, because this is what Firefox trunk has |
| 15758 | settled upon, after extensive discussion and investigation. |
| 15759 | |
| 15760 | Based on Darin's work on this bug. |
| 15761 | |
| 15762 | Test: fast/js/removing-Cf-characters.html |
| 15763 | |
| 15764 | * kjs/lexer.cpp: |
| 15765 | (KJS::Lexer::setCode): Tweak formatting. Use a call to shift(4) to read in the |
| 15766 | first characters, instead of having special case code here. |
| 15767 | (KJS::Lexer::shift): Add a loop when reading a character to skip BOM characters. |
| 15768 | |
| 15769 | 2008-05-13 Matt Lilek <webkit@mattlilek.com> |
| 15770 | |
| 15771 | Not reviewed, build fix. |
| 15772 | |
| 15773 | * kjs/date_object.cpp: |
| 15774 | (KJS::DateObjectFuncImp::callAsFunction): |
| 15775 | |
| 15776 | 2008-05-13 Anders Carlsson <andersca@apple.com> |
| 15777 | |
| 15778 | Reviewed by Sam. |
| 15779 | |
| 15780 | <rdar://problem/5933644> Implement Date.now |
| 15781 | |
| 15782 | Implement Date.now which returns the number of milliseconds since the epoch. |
| 15783 | |
| 15784 | * kjs/CommonIdentifiers.h: |
| 15785 | * kjs/date_object.cpp: |
| 15786 | (KJS::DateObjectFuncImp::): |
| 15787 | (KJS::DateObjectImp::DateObjectImp): |
| 15788 | (KJS::DateObjectFuncImp::callAsFunction): |
| 15789 | |
| 15790 | 2008-05-13 Kevin McCullough <kmccullough@apple.com> |
| 15791 | |
| 15792 | Giving credit where credit is due. |
| 15793 | |
| 15794 | * ChangeLog: |
| 15795 | |
| 15796 | 2008-05-13 Kevin McCullough <kmccullough@apple.com> |
| 15797 | |
| 15798 | Reviewed by Adam and Geoff. |
| 15799 | |
| 15800 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15801 | Use PassRefPtrs instead of RefPtrs when appropriate. |
| 15802 | |
| 15803 | * profiler/FunctionCallProfile.cpp: |
| 15804 | (KJS::FunctionCallProfile::addChild): |
| 15805 | * profiler/FunctionCallProfile.h: |
| 15806 | * profiler/Profile.h: |
| 15807 | (KJS::Profile::callTree): |
| 15808 | |
| 15809 | 2008-05-13 Kevin McCullough <kmccullough@apple.com> |
| 15810 | |
| 15811 | Reviewed by Sam. |
| 15812 | |
| 15813 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 15814 | - Made some functions static (as per Adam) and changed from using raw |
| 15815 | pointers to RefPtr for making these JavaScript Objects. |
| 15816 | |
| 15817 | * profiler/FunctionCallProfile.cpp: |
| 15818 | (KJS::FunctionCallProfile::addChild): |
| 15819 | (KJS::FunctionCallProfile::findChild): |
| 15820 | * profiler/FunctionCallProfile.h: |
| 15821 | (KJS::FunctionCallProfile::create): |
| 15822 | * profiler/Profile.cpp: |
| 15823 | (KJS::Profile::Profile): |
| 15824 | (KJS::Profile::willExecute): |
| 15825 | (KJS::Profile::didExecute): |
| 15826 | (KJS::functionNameCountPairComparator): |
| 15827 | * profiler/Profile.h: |
| 15828 | (KJS::Profile::create): |
| 15829 | (KJS::Profile::title): |
| 15830 | (KJS::Profile::callTree): |
| 15831 | * profiler/Profiler.cpp: |
| 15832 | (KJS::Profiler::startProfiling): |
| 15833 | * profiler/Profiler.h: |
| 15834 | (KJS::Profiler::allProfiles): |
| 15835 | (KJS::Profiler::clearProfiles): |
| 15836 | |
| 15837 | 2008-05-13 Alexey Proskuryakov <ap@webkit.org> |
| 15838 | |
| 15839 | Reviewed by Geoffrey Garen. |
| 15840 | |
| 15841 | <rdar://problem/4949018> JavaScriptCore API claims to work with UTF8 strings, but only works |
| 15842 | with ASCII strings |
| 15843 | |
| 15844 | * kjs/ustring.h: |
| 15845 | * kjs/ustring.cpp: |
| 15846 | (KJS::UString::Rep::createFromUTF8): |
| 15847 | Added. Implementation adapted from JSStringCreateWithUTF8CString(). |
| 15848 | |
| 15849 | * API/JSStringRef.cpp: |
| 15850 | (JSStringCreateWithUTF8CString): |
| 15851 | * API/JSClassRef.cpp: |
| 15852 | (OpaqueJSClass::OpaqueJSClass): |
| 15853 | Use UString::Rep::createFromUTF8(). |
| 15854 | |
| 15855 | 2008-05-12 Mark Rowe <mrowe@apple.com> |
| 15856 | |
| 15857 | Reviewed by Tim Hatcher. |
| 15858 | |
| 15859 | <rdar://problem/4859666> WebKit needs availability macros in order to deprecate APIs |
| 15860 | |
| 15861 | Create WebKit availability macros that key off the Mac OS X version being targeted to |
| 15862 | determine the WebKit version being targeted. Applications can define |
| 15863 | WEBKIT_VERSION_MIN_REQUIRED before including WebKit headers in order to target a specific |
| 15864 | version of WebKit. |
| 15865 | |
| 15866 | The availability header is being added to JavaScriptCore rather than WebKit as JavaScriptCore |
| 15867 | is the lowest-level portion of the public WebKit API. |
| 15868 | |
| 15869 | * API/WebKitAvailability.h: Added. |
| 15870 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 15871 | |
| 15872 | 2008-05-12 Alexey Proskuryakov <ap@webkit.org> |
| 15873 | |
| 15874 | Reviewed by Maciej. |
| 15875 | |
| 15876 | https://bugs.webkit.org/show_bug.cgi?id=18828 |
| 15877 | Reproducible crash with PAC file |
| 15878 | |
| 15879 | Naively moving JavaScriptCore into thread-specific data was inappropriate in the face of |
| 15880 | exiting JavaScriptCore API clients, which expect a different therading model. Temporarily |
| 15881 | disabling ThreadSpecific implementation until this can be sorted out. |
| 15882 | |
| 15883 | * wtf/ThreadSpecific.h: |
| 15884 | (WTF::::ThreadSpecific): |
| 15885 | (WTF::::~ThreadSpecific): |
| 15886 | (WTF::::get): |
| 15887 | (WTF::::set): |
| 15888 | |
| 15889 | 2008-05-12 Alexey Proskuryakov <ap@webkit.org> |
| 15890 | |
| 15891 | Roll out recent threading changes (r32807, r32810, r32819, r32822) to simplify |
| 15892 | SquirrelFish merging. |
| 15893 | |
| 15894 | * API/JSBase.cpp: |
| 15895 | (JSGarbageCollect): |
| 15896 | * API/JSCallbackObjectFunctions.h: |
| 15897 | (KJS::::staticFunctionGetter): |
| 15898 | * API/JSClassRef.cpp: |
| 15899 | (OpaqueJSClass::prototype): |
| 15900 | * API/JSObjectRef.cpp: |
| 15901 | (JSObjectMake): |
| 15902 | (JSObjectMakeFunctionWithCallback): |
| 15903 | (JSObjectMakeConstructor): |
| 15904 | (JSObjectMakeFunction): |
| 15905 | * API/JSValueRef.cpp: |
| 15906 | (JSValueMakeNumber): |
| 15907 | (JSValueMakeString): |
| 15908 | * JavaScriptCore.exp: |
| 15909 | * kjs/ExecState.h: |
| 15910 | * kjs/InitializeThreading.cpp: |
| 15911 | (KJS::initializeThreadingOnce): |
| 15912 | * kjs/JSGlobalObject.cpp: |
| 15913 | (KJS::JSGlobalObject::~JSGlobalObject): |
| 15914 | (KJS::JSGlobalObject::init): |
| 15915 | (KJS::JSGlobalObject::put): |
| 15916 | (KJS::JSGlobalObject::reset): |
| 15917 | (KJS::JSGlobalObject::tearOffActivation): |
| 15918 | * kjs/JSGlobalObject.h: |
| 15919 | (KJS::JSGlobalObject::head): |
| 15920 | (KJS::JSGlobalObject::perThreadData): |
| 15921 | * kjs/JSLock.cpp: |
| 15922 | (KJS::JSLock::registerThread): |
| 15923 | * kjs/JSLock.h: |
| 15924 | (KJS::JSLock::JSLock): |
| 15925 | * kjs/array_instance.cpp: |
| 15926 | (KJS::ArrayInstance::ArrayInstance): |
| 15927 | (KJS::ArrayInstance::lengthGetter): |
| 15928 | * kjs/array_object.cpp: |
| 15929 | (KJS::arrayProtoFuncToString): |
| 15930 | (KJS::arrayProtoFuncToLocaleString): |
| 15931 | (KJS::arrayProtoFuncJoin): |
| 15932 | (KJS::arrayProtoFuncConcat): |
| 15933 | (KJS::arrayProtoFuncPop): |
| 15934 | (KJS::arrayProtoFuncPush): |
| 15935 | (KJS::arrayProtoFuncShift): |
| 15936 | (KJS::arrayProtoFuncSlice): |
| 15937 | (KJS::arrayProtoFuncSplice): |
| 15938 | (KJS::arrayProtoFuncUnShift): |
| 15939 | (KJS::arrayProtoFuncFilter): |
| 15940 | (KJS::arrayProtoFuncMap): |
| 15941 | (KJS::arrayProtoFuncEvery): |
| 15942 | (KJS::arrayProtoFuncForEach): |
| 15943 | (KJS::arrayProtoFuncSome): |
| 15944 | (KJS::arrayProtoFuncIndexOf): |
| 15945 | (KJS::arrayProtoFuncLastIndexOf): |
| 15946 | (KJS::ArrayObjectImp::ArrayObjectImp): |
| 15947 | (KJS::ArrayObjectImp::construct): |
| 15948 | * kjs/bool_object.cpp: |
| 15949 | (KJS::BooleanPrototype::BooleanPrototype): |
| 15950 | (KJS::booleanProtoFuncToString): |
| 15951 | (KJS::BooleanObjectImp::BooleanObjectImp): |
| 15952 | (KJS::BooleanObjectImp::construct): |
| 15953 | * kjs/collector.cpp: |
| 15954 | (KJS::allocateBlock): |
| 15955 | (KJS::Collector::recordExtraCost): |
| 15956 | (KJS::Collector::heapAllocate): |
| 15957 | (KJS::Collector::allocate): |
| 15958 | (KJS::Collector::allocateNumber): |
| 15959 | (KJS::Collector::registerAsMainThread): |
| 15960 | (KJS::onMainThread): |
| 15961 | (KJS::PlatformThread::PlatformThread): |
| 15962 | (KJS::getCurrentPlatformThread): |
| 15963 | (KJS::Collector::Thread::Thread): |
| 15964 | (KJS::destroyRegisteredThread): |
| 15965 | (KJS::initializeRegisteredThreadKey): |
| 15966 | (KJS::Collector::registerThread): |
| 15967 | (KJS::Collector::markStackObjectsConservatively): |
| 15968 | (KJS::Collector::markCurrentThreadConservativelyInternal): |
| 15969 | (KJS::Collector::markCurrentThreadConservatively): |
| 15970 | (KJS::suspendThread): |
| 15971 | (KJS::resumeThread): |
| 15972 | (KJS::getPlatformThreadRegisters): |
| 15973 | (KJS::otherThreadStackPointer): |
| 15974 | (KJS::Collector::markOtherThreadConservatively): |
| 15975 | (KJS::protectedValues): |
| 15976 | (KJS::Collector::protect): |
| 15977 | (KJS::Collector::unprotect): |
| 15978 | (KJS::Collector::collectOnMainThreadOnly): |
| 15979 | (KJS::Collector::markProtectedObjects): |
| 15980 | (KJS::Collector::markMainThreadOnlyObjects): |
| 15981 | (KJS::Collector::sweep): |
| 15982 | (KJS::Collector::collect): |
| 15983 | (KJS::Collector::size): |
| 15984 | (KJS::Collector::globalObjectCount): |
| 15985 | (KJS::Collector::protectedGlobalObjectCount): |
| 15986 | (KJS::Collector::protectedObjectCount): |
| 15987 | (KJS::Collector::protectedObjectTypeCounts): |
| 15988 | (KJS::Collector::isBusy): |
| 15989 | (KJS::Collector::reportOutOfMemoryToAllExecStates): |
| 15990 | * kjs/collector.h: |
| 15991 | (KJS::Collector::cellBlock): |
| 15992 | (KJS::Collector::cellOffset): |
| 15993 | (KJS::Collector::isCellMarked): |
| 15994 | (KJS::Collector::markCell): |
| 15995 | (KJS::Collector::reportExtraMemoryCost): |
| 15996 | * kjs/date_object.cpp: |
| 15997 | (KJS::formatLocaleDate): |
| 15998 | (KJS::DatePrototype::DatePrototype): |
| 15999 | (KJS::DateObjectImp::DateObjectImp): |
| 16000 | (KJS::DateObjectImp::construct): |
| 16001 | (KJS::DateObjectImp::callAsFunction): |
| 16002 | (KJS::DateObjectFuncImp::DateObjectFuncImp): |
| 16003 | (KJS::DateObjectFuncImp::callAsFunction): |
| 16004 | (KJS::dateProtoFuncToString): |
| 16005 | (KJS::dateProtoFuncToUTCString): |
| 16006 | (KJS::dateProtoFuncToDateString): |
| 16007 | (KJS::dateProtoFuncToTimeString): |
| 16008 | (KJS::dateProtoFuncToLocaleString): |
| 16009 | (KJS::dateProtoFuncToLocaleDateString): |
| 16010 | (KJS::dateProtoFuncToLocaleTimeString): |
| 16011 | (KJS::dateProtoFuncValueOf): |
| 16012 | (KJS::dateProtoFuncGetTime): |
| 16013 | (KJS::dateProtoFuncGetFullYear): |
| 16014 | (KJS::dateProtoFuncGetUTCFullYear): |
| 16015 | (KJS::dateProtoFuncToGMTString): |
| 16016 | (KJS::dateProtoFuncGetMonth): |
| 16017 | (KJS::dateProtoFuncGetUTCMonth): |
| 16018 | (KJS::dateProtoFuncGetDate): |
| 16019 | (KJS::dateProtoFuncGetUTCDate): |
| 16020 | (KJS::dateProtoFuncGetDay): |
| 16021 | (KJS::dateProtoFuncGetUTCDay): |
| 16022 | (KJS::dateProtoFuncGetHours): |
| 16023 | (KJS::dateProtoFuncGetUTCHours): |
| 16024 | (KJS::dateProtoFuncGetMinutes): |
| 16025 | (KJS::dateProtoFuncGetUTCMinutes): |
| 16026 | (KJS::dateProtoFuncGetSeconds): |
| 16027 | (KJS::dateProtoFuncGetUTCSeconds): |
| 16028 | (KJS::dateProtoFuncGetMilliSeconds): |
| 16029 | (KJS::dateProtoFuncGetUTCMilliseconds): |
| 16030 | (KJS::dateProtoFuncGetTimezoneOffset): |
| 16031 | (KJS::dateProtoFuncSetTime): |
| 16032 | (KJS::setNewValueFromTimeArgs): |
| 16033 | (KJS::setNewValueFromDateArgs): |
| 16034 | (KJS::dateProtoFuncSetYear): |
| 16035 | (KJS::dateProtoFuncGetYear): |
| 16036 | * kjs/error_object.cpp: |
| 16037 | (KJS::ErrorPrototype::ErrorPrototype): |
| 16038 | (KJS::errorProtoFuncToString): |
| 16039 | (KJS::ErrorObjectImp::ErrorObjectImp): |
| 16040 | (KJS::ErrorObjectImp::construct): |
| 16041 | (KJS::NativeErrorPrototype::NativeErrorPrototype): |
| 16042 | (KJS::NativeErrorImp::NativeErrorImp): |
| 16043 | (KJS::NativeErrorImp::construct): |
| 16044 | * kjs/function.cpp: |
| 16045 | (KJS::FunctionImp::lengthGetter): |
| 16046 | (KJS::FunctionImp::construct): |
| 16047 | (KJS::Arguments::Arguments): |
| 16048 | (KJS::ActivationImp::createArgumentsObject): |
| 16049 | (KJS::encode): |
| 16050 | (KJS::decode): |
| 16051 | (KJS::globalFuncParseInt): |
| 16052 | (KJS::globalFuncParseFloat): |
| 16053 | (KJS::globalFuncEscape): |
| 16054 | (KJS::globalFuncUnescape): |
| 16055 | (KJS::PrototypeFunction::PrototypeFunction): |
| 16056 | (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction): |
| 16057 | * kjs/function_object.cpp: |
| 16058 | (KJS::FunctionPrototype::FunctionPrototype): |
| 16059 | (KJS::functionProtoFuncToString): |
| 16060 | (KJS::FunctionObjectImp::FunctionObjectImp): |
| 16061 | (KJS::FunctionObjectImp::construct): |
| 16062 | * kjs/internal.cpp: |
| 16063 | (KJS::StringImp::toObject): |
| 16064 | * kjs/internal.h: |
| 16065 | (KJS::StringImp::StringImp): |
| 16066 | (KJS::NumberImp::operator new): |
| 16067 | * kjs/list.cpp: |
| 16068 | (KJS::List::markSet): |
| 16069 | (KJS::List::markProtectedListsSlowCase): |
| 16070 | (KJS::List::expandAndAppend): |
| 16071 | * kjs/list.h: |
| 16072 | (KJS::List::List): |
| 16073 | (KJS::List::~List): |
| 16074 | (KJS::List::markProtectedLists): |
| 16075 | * kjs/lookup.h: |
| 16076 | (KJS::staticFunctionGetter): |
| 16077 | (KJS::cacheGlobalObject): |
| 16078 | * kjs/math_object.cpp: |
| 16079 | (KJS::MathObjectImp::getValueProperty): |
| 16080 | (KJS::mathProtoFuncAbs): |
| 16081 | (KJS::mathProtoFuncACos): |
| 16082 | (KJS::mathProtoFuncASin): |
| 16083 | (KJS::mathProtoFuncATan): |
| 16084 | (KJS::mathProtoFuncATan2): |
| 16085 | (KJS::mathProtoFuncCeil): |
| 16086 | (KJS::mathProtoFuncCos): |
| 16087 | (KJS::mathProtoFuncExp): |
| 16088 | (KJS::mathProtoFuncFloor): |
| 16089 | (KJS::mathProtoFuncLog): |
| 16090 | (KJS::mathProtoFuncMax): |
| 16091 | (KJS::mathProtoFuncMin): |
| 16092 | (KJS::mathProtoFuncPow): |
| 16093 | (KJS::mathProtoFuncRandom): |
| 16094 | (KJS::mathProtoFuncRound): |
| 16095 | (KJS::mathProtoFuncSin): |
| 16096 | (KJS::mathProtoFuncSqrt): |
| 16097 | (KJS::mathProtoFuncTan): |
| 16098 | * kjs/nodes.cpp: |
| 16099 | (KJS::ParserRefCounted::ParserRefCounted): |
| 16100 | (KJS::ParserRefCounted::ref): |
| 16101 | (KJS::ParserRefCounted::deref): |
| 16102 | (KJS::ParserRefCounted::refcount): |
| 16103 | (KJS::ParserRefCounted::deleteNewObjects): |
| 16104 | (KJS::Node::handleException): |
| 16105 | (KJS::NumberNode::evaluate): |
| 16106 | (KJS::StringNode::evaluate): |
| 16107 | (KJS::ArrayNode::evaluate): |
| 16108 | (KJS::PostIncResolveNode::evaluate): |
| 16109 | (KJS::PostIncLocalVarNode::evaluate): |
| 16110 | (KJS::PostDecResolveNode::evaluate): |
| 16111 | (KJS::PostDecLocalVarNode::evaluate): |
| 16112 | (KJS::PostDecLocalVarNode::inlineEvaluateToNumber): |
| 16113 | (KJS::PostIncBracketNode::evaluate): |
| 16114 | (KJS::PostDecBracketNode::evaluate): |
| 16115 | (KJS::PostIncDotNode::evaluate): |
| 16116 | (KJS::PostDecDotNode::evaluate): |
| 16117 | (KJS::typeStringForValue): |
| 16118 | (KJS::LocalVarTypeOfNode::evaluate): |
| 16119 | (KJS::TypeOfResolveNode::evaluate): |
| 16120 | (KJS::TypeOfValueNode::evaluate): |
| 16121 | (KJS::PreIncLocalVarNode::evaluate): |
| 16122 | (KJS::PreIncResolveNode::evaluate): |
| 16123 | (KJS::PreDecLocalVarNode::evaluate): |
| 16124 | (KJS::PreDecResolveNode::evaluate): |
| 16125 | (KJS::PreIncConstNode::evaluate): |
| 16126 | (KJS::PreDecConstNode::evaluate): |
| 16127 | (KJS::PostIncConstNode::evaluate): |
| 16128 | (KJS::PostDecConstNode::evaluate): |
| 16129 | (KJS::PreIncBracketNode::evaluate): |
| 16130 | (KJS::PreDecBracketNode::evaluate): |
| 16131 | (KJS::PreIncDotNode::evaluate): |
| 16132 | (KJS::PreDecDotNode::evaluate): |
| 16133 | (KJS::NegateNode::evaluate): |
| 16134 | (KJS::BitwiseNotNode::evaluate): |
| 16135 | (KJS::MultNode::evaluate): |
| 16136 | (KJS::DivNode::evaluate): |
| 16137 | (KJS::ModNode::evaluate): |
| 16138 | (KJS::addSlowCase): |
| 16139 | (KJS::add): |
| 16140 | (KJS::AddNumbersNode::evaluate): |
| 16141 | (KJS::AddStringsNode::evaluate): |
| 16142 | (KJS::AddStringLeftNode::evaluate): |
| 16143 | (KJS::AddStringRightNode::evaluate): |
| 16144 | (KJS::SubNode::evaluate): |
| 16145 | (KJS::LeftShiftNode::evaluate): |
| 16146 | (KJS::RightShiftNode::evaluate): |
| 16147 | (KJS::UnsignedRightShiftNode::evaluate): |
| 16148 | (KJS::BitXOrNode::evaluate): |
| 16149 | (KJS::BitOrNode::evaluate): |
| 16150 | (KJS::valueForReadModifyAssignment): |
| 16151 | (KJS::ForInNode::execute): |
| 16152 | (KJS::TryNode::execute): |
| 16153 | (KJS::FuncDeclNode::makeFunction): |
| 16154 | (KJS::FuncExprNode::evaluate): |
| 16155 | * kjs/nodes.h: |
| 16156 | * kjs/number_object.cpp: |
| 16157 | (KJS::NumberPrototype::NumberPrototype): |
| 16158 | (KJS::numberProtoFuncToString): |
| 16159 | (KJS::numberProtoFuncToLocaleString): |
| 16160 | (KJS::numberProtoFuncToFixed): |
| 16161 | (KJS::numberProtoFuncToExponential): |
| 16162 | (KJS::numberProtoFuncToPrecision): |
| 16163 | (KJS::NumberObjectImp::NumberObjectImp): |
| 16164 | (KJS::NumberObjectImp::getValueProperty): |
| 16165 | (KJS::NumberObjectImp::construct): |
| 16166 | (KJS::NumberObjectImp::callAsFunction): |
| 16167 | * kjs/object.cpp: |
| 16168 | (KJS::JSObject::call): |
| 16169 | (KJS::JSObject::get): |
| 16170 | (KJS::JSObject::put): |
| 16171 | (KJS::JSObject::defineGetter): |
| 16172 | (KJS::JSObject::defineSetter): |
| 16173 | (KJS::JSObject::putDirect): |
| 16174 | (KJS::Error::create): |
| 16175 | * kjs/object.h: |
| 16176 | * kjs/object_object.cpp: |
| 16177 | (KJS::ObjectPrototype::ObjectPrototype): |
| 16178 | (KJS::objectProtoFuncToLocaleString): |
| 16179 | (KJS::objectProtoFuncToString): |
| 16180 | (KJS::ObjectObjectImp::ObjectObjectImp): |
| 16181 | (KJS::ObjectObjectImp::construct): |
| 16182 | * kjs/property_map.h: |
| 16183 | (KJS::SavedProperty::SavedProperty): |
| 16184 | (KJS::SavedProperty::init): |
| 16185 | (KJS::SavedProperty::~SavedProperty): |
| 16186 | (KJS::SavedProperty::name): |
| 16187 | (KJS::SavedProperty::value): |
| 16188 | (KJS::SavedProperty::attributes): |
| 16189 | * kjs/protect.h: |
| 16190 | (KJS::gcProtect): |
| 16191 | (KJS::gcUnprotect): |
| 16192 | * kjs/regexp_object.cpp: |
| 16193 | (KJS::RegExpPrototype::RegExpPrototype): |
| 16194 | (KJS::regExpProtoFuncToString): |
| 16195 | (KJS::RegExpImp::getValueProperty): |
| 16196 | (KJS::RegExpObjectImp::RegExpObjectImp): |
| 16197 | (KJS::RegExpObjectImp::arrayOfMatches): |
| 16198 | (KJS::RegExpObjectImp::getBackref): |
| 16199 | (KJS::RegExpObjectImp::getLastParen): |
| 16200 | (KJS::RegExpObjectImp::getLeftContext): |
| 16201 | (KJS::RegExpObjectImp::getRightContext): |
| 16202 | (KJS::RegExpObjectImp::getValueProperty): |
| 16203 | (KJS::RegExpObjectImp::createRegExpImp): |
| 16204 | * kjs/regexp_object.h: |
| 16205 | * kjs/string_object.cpp: |
| 16206 | (KJS::StringInstance::StringInstance): |
| 16207 | (KJS::StringInstance::lengthGetter): |
| 16208 | (KJS::StringInstance::indexGetter): |
| 16209 | (KJS::stringInstanceNumericPropertyGetter): |
| 16210 | (KJS::StringPrototype::StringPrototype): |
| 16211 | (KJS::replace): |
| 16212 | (KJS::stringProtoFuncCharAt): |
| 16213 | (KJS::stringProtoFuncCharCodeAt): |
| 16214 | (KJS::stringProtoFuncConcat): |
| 16215 | (KJS::stringProtoFuncIndexOf): |
| 16216 | (KJS::stringProtoFuncLastIndexOf): |
| 16217 | (KJS::stringProtoFuncMatch): |
| 16218 | (KJS::stringProtoFuncSearch): |
| 16219 | (KJS::stringProtoFuncReplace): |
| 16220 | (KJS::stringProtoFuncSlice): |
| 16221 | (KJS::stringProtoFuncSplit): |
| 16222 | (KJS::stringProtoFuncSubstr): |
| 16223 | (KJS::stringProtoFuncSubstring): |
| 16224 | (KJS::stringProtoFuncToLowerCase): |
| 16225 | (KJS::stringProtoFuncToUpperCase): |
| 16226 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 16227 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 16228 | (KJS::stringProtoFuncLocaleCompare): |
| 16229 | (KJS::stringProtoFuncBig): |
| 16230 | (KJS::stringProtoFuncSmall): |
| 16231 | (KJS::stringProtoFuncBlink): |
| 16232 | (KJS::stringProtoFuncBold): |
| 16233 | (KJS::stringProtoFuncFixed): |
| 16234 | (KJS::stringProtoFuncItalics): |
| 16235 | (KJS::stringProtoFuncStrike): |
| 16236 | (KJS::stringProtoFuncSub): |
| 16237 | (KJS::stringProtoFuncSup): |
| 16238 | (KJS::stringProtoFuncFontcolor): |
| 16239 | (KJS::stringProtoFuncFontsize): |
| 16240 | (KJS::stringProtoFuncAnchor): |
| 16241 | (KJS::stringProtoFuncLink): |
| 16242 | (KJS::StringObjectImp::StringObjectImp): |
| 16243 | (KJS::StringObjectImp::construct): |
| 16244 | (KJS::StringObjectImp::callAsFunction): |
| 16245 | (KJS::StringObjectFuncImp::StringObjectFuncImp): |
| 16246 | (KJS::StringObjectFuncImp::callAsFunction): |
| 16247 | * kjs/string_object.h: |
| 16248 | (KJS::StringInstanceThatMasqueradesAsUndefined::StringInstanceThatMasqueradesAsUndefined): |
| 16249 | * kjs/testkjs.cpp: |
| 16250 | (GlobalObject::GlobalObject): |
| 16251 | (functionGC): |
| 16252 | (functionRun): |
| 16253 | (functionReadline): |
| 16254 | (kjsmain): |
| 16255 | * kjs/ustring.h: |
| 16256 | * kjs/value.cpp: |
| 16257 | (KJS::JSCell::operator new): |
| 16258 | (KJS::jsString): |
| 16259 | (KJS::jsOwnedString): |
| 16260 | (KJS::jsNumberCell): |
| 16261 | * kjs/value.h: |
| 16262 | (KJS::jsNaN): |
| 16263 | (KJS::jsNumber): |
| 16264 | (KJS::jsNumberFromAnd): |
| 16265 | (KJS::JSCell::marked): |
| 16266 | (KJS::JSCell::mark): |
| 16267 | (KJS::JSValue::toJSNumber): |
| 16268 | * wtf/ThreadSpecific.h: |
| 16269 | (WTF::T): |
| 16270 | |
| 16271 | 2008-05-10 Julien Chaffraix <jchaffraix@webkit.org> |
| 16272 | |
| 16273 | Qt & wx build fix. |
| 16274 | |
| 16275 | * JavaScriptCore.pri: Add profiler/Profile.cpp. |
| 16276 | * JavaScriptCoreSources.bkl: Ditto. |
| 16277 | |
| 16278 | 2008-05-10 Jan Michael Alonzo <jmalonzo@unpluggable.com> |
| 16279 | |
| 16280 | Reviewed by Maciej. |
| 16281 | |
| 16282 | Gtk+ build fix |
| 16283 | |
| 16284 | * GNUmakefile.am: Add Profile.cpp in _sources |
| 16285 | |
| 16286 | 2008-05-09 Brady Eidson <beidson@apple.com> |
| 16287 | |
| 16288 | Build Fix. Kevin is an idiot. |
| 16289 | ("My name is Kevin McCullough and I approve this message.") |
| 16290 | |
| 16291 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 16292 | |
| 16293 | 2008-05-09 Kevin McCullough <kmccullough@apple.com> |
| 16294 | |
| 16295 | Reviewed by Tim. |
| 16296 | |
| 16297 | -<rdar://problem/5770054> JavaScript profiler (10928) |
| 16298 | -Add Profile class so that all profiles can be stored and retrieved by |
| 16299 | the WebInspector when that time comes. |
| 16300 | |
| 16301 | * JavaScriptCore.exp: Export the new function signatures. |
| 16302 | * JavaScriptCore.xcodeproj/project.pbxproj: Add the new files to the |
| 16303 | project |
| 16304 | * profiler/Profile.cpp: Added. This class represents a single run of the |
| 16305 | profiler. |
| 16306 | (KJS::Profile::Profile): |
| 16307 | (KJS::Profile::willExecute): |
| 16308 | (KJS::Profile::didExecute): |
| 16309 | (KJS::Profile::printDataInspectorStyle): |
| 16310 | (KJS::functionNameCountPairComparator): |
| 16311 | (KJS::Profile::printDataSampleStyle): |
| 16312 | * profiler/Profile.h: Added. Ditto |
| 16313 | (KJS::Profile::stopProfiling): |
| 16314 | * profiler/Profiler.cpp: Now the profiler keeps track of many profiles |
| 16315 | but only runs one at a time. |
| 16316 | (KJS::Profiler::startProfiling): |
| 16317 | (KJS::Profiler::stopProfiling): |
| 16318 | (KJS::Profiler::willExecute): |
| 16319 | (KJS::Profiler::didExecute): |
| 16320 | (KJS::Profiler::printDataInspectorStyle): |
| 16321 | (KJS::Profiler::printDataSampleStyle): |
| 16322 | * profiler/Profiler.h: Ditto. |
| 16323 | (KJS::Profiler::~Profiler): |
| 16324 | (KJS::Profiler::allProfiles): |
| 16325 | (KJS::Profiler::clearProfiles): |
| 16326 | |
| 16327 | 2008-05-08 Anders Carlsson <andersca@apple.com> |
| 16328 | |
| 16329 | Reviewed by Mark. |
| 16330 | |
| 16331 | Enable NPAPI plug-ins on 64-bit. |
| 16332 | |
| 16333 | * wtf/Platform.h: |
| 16334 | |
| 16335 | 2008-05-07 Julien Chaffraix <jchaffraix@webkit.org> |
| 16336 | |
| 16337 | Reviewed by Adam Roben. |
| 16338 | |
| 16339 | wx & Gtk build fix. |
| 16340 | |
| 16341 | Add SIZE_MAX definition for the wx port. |
| 16342 | |
| 16343 | * os-win32/stdint.h: |
| 16344 | |
| 16345 | 2008-05-07 Ariya Hidayat <ariya.hidayat@trolltech.com> |
| 16346 | |
| 16347 | Reviewed by Simon. |
| 16348 | |
| 16349 | Support for isMainThread in the Qt port. |
| 16350 | |
| 16351 | * wtf/ThreadingQt.cpp: |
| 16352 | (WTF::initializeThreading): Adjusted. |
| 16353 | (WTF::isMainThread): Added. |
| 16354 | |
| 16355 | 2008-05-05 Darin Adler <darin@apple.com> |
| 16356 | |
| 16357 | Reviewed by John Sullivan. |
| 16358 | |
| 16359 | - fix debug-only leak seen on buildbot |
| 16360 | |
| 16361 | * wtf/HashTable.h: |
| 16362 | (WTF::HashTable::checkKey): After writing an empty value in, but before constructing a |
| 16363 | deleted value on top of it, call the destructor so the empty value doesn't leak. |
| 16364 | |
| 16365 | 2008-05-02 Alexey Proskuryakov <ap@webkit.org> |
| 16366 | |
| 16367 | Reviewed by Geoffrey Garen. |
| 16368 | |
| 16369 | Get rid of static data in nodes.cpp (well, at least of non-debug one). |
| 16370 | |
| 16371 | No measurable change on SunSpider. |
| 16372 | |
| 16373 | * kjs/InitializeThreading.cpp: |
| 16374 | (KJS::initializeThreadingOnce): |
| 16375 | * kjs/nodes.cpp: |
| 16376 | (KJS::newTrackedObjects): |
| 16377 | (KJS::trackedObjectExtraRefCounts): |
| 16378 | (KJS::initializeNodesThreading): |
| 16379 | (KJS::ParserRefCounted::ParserRefCounted): |
| 16380 | (KJS::ParserRefCounted::ref): |
| 16381 | (KJS::ParserRefCounted::deref): |
| 16382 | (KJS::ParserRefCounted::refcount): |
| 16383 | (KJS::ParserRefCounted::deleteNewObjects): |
| 16384 | * kjs/nodes.h: |
| 16385 | Made newTrackedObjects and trackedObjectExtraRefCounts per-thread. |
| 16386 | |
| 16387 | 2008-05-02 Alexey Proskuryakov <ap@webkit.org> |
| 16388 | |
| 16389 | Reviewed by Darin. |
| 16390 | |
| 16391 | Move call stack depth counter to global object. |
| 16392 | |
| 16393 | * kjs/ExecState.h: (KJS::ExecState::functionCallDepth): Added a recursion depth counter to |
| 16394 | per-thread data. |
| 16395 | * kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::init): Initialize PerThreadData.functionCallDepth. |
| 16396 | * kjs/JSGlobalObject.h: (KJS::JSGlobalObject::perThreadData): Made the result non-const. |
| 16397 | |
| 16398 | * kjs/object.cpp: |
| 16399 | (KJS::throwStackSizeExceededError): Moved throwError to a separate function, since it is now |
| 16400 | the only thing in JSObject::call that needs a PIC branch. |
| 16401 | (KJS::JSObject::call): Use a per-thread variable instead of local static for recursion depth |
| 16402 | tracking. |
| 16403 | |
| 16404 | 2008-05-02 Alexey Proskuryakov <ap@webkit.org> |
| 16405 | |
| 16406 | Reviewed by Darin. |
| 16407 | |
| 16408 | Make JavaScriptGlue and JavaScriptCore API functions implicitly call initializeThreading |
| 16409 | for the sake of non-WebKit clients. |
| 16410 | |
| 16411 | * API/JSBase.cpp: |
| 16412 | (JSGarbageCollect): |
| 16413 | * API/JSContextRef.cpp: |
| 16414 | (JSGlobalContextCreate): |
| 16415 | These are the JavaScriptCore API bottlenecks. There are a few other JSStringRef |
| 16416 | and JSClassRef functions that can be called earlier, but they do not do anything that |
| 16417 | requires initializeThreading. |
| 16418 | |
| 16419 | * kjs/InitializeThreading.cpp: |
| 16420 | (KJS::doInitializeThreading): |
| 16421 | (KJS::initializeThreading): |
| 16422 | On Darwin, make the initialization happen under pthread_once, since there is no guarantee |
| 16423 | that non-WebKit clients won't try to call this function re-entrantly. |
| 16424 | |
| 16425 | * kjs/InitializeThreading.h: |
| 16426 | * wtf/Threading.h: |
| 16427 | Spell out initializeThreading contract. |
| 16428 | |
| 16429 | * wtf/ThreadingPthreads.cpp: (WTF::isMainThread): Make sure that results are correct on |
| 16430 | Darwin, even if threading was initialized from a secondary thread. |
| 16431 | |
| 16432 | 2008-05-02 Alexey Proskuryakov <ap@webkit.org> |
| 16433 | |
| 16434 | Reviewed by Geoffrey Garen. |
| 16435 | |
| 16436 | https://bugs.webkit.org/show_bug.cgi?id=18826 |
| 16437 | Make JavaScript heap per-thread |
| 16438 | |
| 16439 | * wtf/ThreadSpecific.h: Make sure to initialize POD thread-specific varaibles, too |
| 16440 | (replaced "new T" with "new T()"). |
| 16441 | |
| 16442 | * kjs/collector.h: Renamed Collector to Heap, made the heap per-thread. Removed support for |
| 16443 | multithreaded access to a heap. |
| 16444 | (KJS::CollectorBlock): Removed collectOnMainThreadOnly bitmap, added a reference to owner heap. |
| 16445 | (KJS::SmallCellCollectorBlock): Ditto. |
| 16446 | (KJS::Heap::markListSet): Moved from a static variable in List.cpp to a per-thread one here. |
| 16447 | (KJS::Heap::heap): Added a method to find which heap a JSValue is allocated in. |
| 16448 | |
| 16449 | * kjs/collector.cpp: Changed "const size_t" constants to #defines, to avoid a PIC branch |
| 16450 | (gcc was using one to access a constant used in std::max(), because it takes a reference, |
| 16451 | even though std::max() itself was inlined). |
| 16452 | (KJS::Heap::threadHeap): JS heap is now per-thread. |
| 16453 | (KJS::Heap::Heap): Zero-initialize the heap. |
| 16454 | (KJS::allocateBlock): Added NEVER_INLINE, because this function uses a PIC branch, so |
| 16455 | inlining it in Heap::heapAllocate() is bad for performance, now that the latter doesn't |
| 16456 | use any global data. |
| 16457 | (KJS::Heap::heapAllocate): Initialize Block::heap. |
| 16458 | (KJS::Heap::markCurrentThreadConservatively): Moved into markStackObjectsConservatively(), |
| 16459 | as GC only works with a current thread's heap now. |
| 16460 | (KJS::Heap::sweep): Removed collectOnMainThreadOnly checks. |
| 16461 | (KJS::Heap::collect): Ditto. |
| 16462 | |
| 16463 | * kjs/JSLock.cpp: |
| 16464 | * kjs/JSLock.h: |
| 16465 | (KJS::JSLock::JSLock): |
| 16466 | Removed registerThread(), as the heap no longer cares. |
| 16467 | |
| 16468 | * kjs/InitializeThreading.cpp: (KJS::initializeThreading): Initialize new per-thread |
| 16469 | variables in Heap and JSGlobalObject. |
| 16470 | |
| 16471 | * kjs/ExecState.h: (KJS::ExecState::heap): Added a heap pointer for faster access to |
| 16472 | per-thread heap, and an accessor for it. |
| 16473 | |
| 16474 | * kjs/JSGlobalObject.h: Made JSGlobalObject linked list per-thread. |
| 16475 | * kjs/JSGlobalObject.cpp: |
| 16476 | (KJS::JSGlobalObject::~JSGlobalObject): Fixed a bug in linked list handling. It only worked |
| 16477 | right if the removed object was the head one! |
| 16478 | (KJS::JSGlobalObject::head): Return a per-thread list head. |
| 16479 | (KJS::JSGlobalObject::init): Store a reference to per-thread heap. |
| 16480 | (KJS::JSGlobalObject::reset): Pass ExecState to functions that need it. |
| 16481 | (KJS::JSGlobalObject::tearOffActivation): Ditto. |
| 16482 | (KJS::JSGlobalObject::operator new): JSGlobalObject allocation cannot use an ExecState, |
| 16483 | so it needs a custom operator new that directly accesses per-thread heap. |
| 16484 | |
| 16485 | * kjs/list.h: |
| 16486 | (KJS::List::List): Replaced m_isInMarkSet boolean with an actual pointer to the set, since it |
| 16487 | is no longer a single static object. |
| 16488 | (KJS::List::~List): Ditto. |
| 16489 | * kjs/list.cpp: |
| 16490 | (KJS::List::markSet): Removed, this is now stored in Heap. |
| 16491 | (KJS::List::markProtectedLists): Take a reference to the list. |
| 16492 | (KJS::List::expandAndAppend): Ask the current thread heap for a mark set reference. |
| 16493 | |
| 16494 | * kjs/protect.h: |
| 16495 | (KJS::gcProtect): |
| 16496 | (KJS::gcUnprotect): |
| 16497 | Use the newly added Heap::heap() method to find out which heap the value to be (un)protected |
| 16498 | belongs to. |
| 16499 | |
| 16500 | * kjs/property_map.h: Removed unused SavedProperty class. |
| 16501 | |
| 16502 | * JavaScriptCore.exp: |
| 16503 | * API/JSBase.cpp: |
| 16504 | (JSGarbageCollect): |
| 16505 | * API/JSCallbackObjectFunctions.h: |
| 16506 | (KJS::::staticFunctionGetter): |
| 16507 | * API/JSClassRef.cpp: |
| 16508 | (OpaqueJSClass::prototype): |
| 16509 | * API/JSObjectRef.cpp: |
| 16510 | (JSObjectMake): |
| 16511 | (JSObjectMakeFunctionWithCallback): |
| 16512 | (JSObjectMakeConstructor): |
| 16513 | (JSObjectMakeFunction): |
| 16514 | * API/JSValueRef.cpp: |
| 16515 | (JSValueMakeNumber): |
| 16516 | (JSValueMakeString): |
| 16517 | * kjs/array_instance.cpp: |
| 16518 | (KJS::ArrayInstance::ArrayInstance): |
| 16519 | (KJS::ArrayInstance::lengthGetter): |
| 16520 | * kjs/array_object.cpp: |
| 16521 | (KJS::arrayProtoFuncToString): |
| 16522 | (KJS::arrayProtoFuncToLocaleString): |
| 16523 | (KJS::arrayProtoFuncJoin): |
| 16524 | (KJS::arrayProtoFuncConcat): |
| 16525 | (KJS::arrayProtoFuncPop): |
| 16526 | (KJS::arrayProtoFuncPush): |
| 16527 | (KJS::arrayProtoFuncShift): |
| 16528 | (KJS::arrayProtoFuncSlice): |
| 16529 | (KJS::arrayProtoFuncSplice): |
| 16530 | (KJS::arrayProtoFuncUnShift): |
| 16531 | (KJS::arrayProtoFuncFilter): |
| 16532 | (KJS::arrayProtoFuncMap): |
| 16533 | (KJS::arrayProtoFuncEvery): |
| 16534 | (KJS::arrayProtoFuncForEach): |
| 16535 | (KJS::arrayProtoFuncSome): |
| 16536 | (KJS::arrayProtoFuncIndexOf): |
| 16537 | (KJS::arrayProtoFuncLastIndexOf): |
| 16538 | (KJS::ArrayObjectImp::ArrayObjectImp): |
| 16539 | (KJS::ArrayObjectImp::construct): |
| 16540 | * kjs/bool_object.cpp: |
| 16541 | (KJS::BooleanPrototype::BooleanPrototype): |
| 16542 | (KJS::booleanProtoFuncToString): |
| 16543 | (KJS::BooleanObjectImp::BooleanObjectImp): |
| 16544 | (KJS::BooleanObjectImp::construct): |
| 16545 | * kjs/date_object.cpp: |
| 16546 | (KJS::formatLocaleDate): |
| 16547 | (KJS::DatePrototype::DatePrototype): |
| 16548 | (KJS::DateObjectImp::DateObjectImp): |
| 16549 | (KJS::DateObjectImp::construct): |
| 16550 | (KJS::DateObjectImp::callAsFunction): |
| 16551 | (KJS::DateObjectFuncImp::DateObjectFuncImp): |
| 16552 | (KJS::DateObjectFuncImp::callAsFunction): |
| 16553 | (KJS::dateProtoFuncToString): |
| 16554 | (KJS::dateProtoFuncToUTCString): |
| 16555 | (KJS::dateProtoFuncToDateString): |
| 16556 | (KJS::dateProtoFuncToTimeString): |
| 16557 | (KJS::dateProtoFuncToLocaleString): |
| 16558 | (KJS::dateProtoFuncToLocaleDateString): |
| 16559 | (KJS::dateProtoFuncToLocaleTimeString): |
| 16560 | (KJS::dateProtoFuncValueOf): |
| 16561 | (KJS::dateProtoFuncGetTime): |
| 16562 | (KJS::dateProtoFuncGetFullYear): |
| 16563 | (KJS::dateProtoFuncGetUTCFullYear): |
| 16564 | (KJS::dateProtoFuncToGMTString): |
| 16565 | (KJS::dateProtoFuncGetMonth): |
| 16566 | (KJS::dateProtoFuncGetUTCMonth): |
| 16567 | (KJS::dateProtoFuncGetDate): |
| 16568 | (KJS::dateProtoFuncGetUTCDate): |
| 16569 | (KJS::dateProtoFuncGetDay): |
| 16570 | (KJS::dateProtoFuncGetUTCDay): |
| 16571 | (KJS::dateProtoFuncGetHours): |
| 16572 | (KJS::dateProtoFuncGetUTCHours): |
| 16573 | (KJS::dateProtoFuncGetMinutes): |
| 16574 | (KJS::dateProtoFuncGetUTCMinutes): |
| 16575 | (KJS::dateProtoFuncGetSeconds): |
| 16576 | (KJS::dateProtoFuncGetUTCSeconds): |
| 16577 | (KJS::dateProtoFuncGetMilliSeconds): |
| 16578 | (KJS::dateProtoFuncGetUTCMilliseconds): |
| 16579 | (KJS::dateProtoFuncGetTimezoneOffset): |
| 16580 | (KJS::dateProtoFuncSetTime): |
| 16581 | (KJS::setNewValueFromTimeArgs): |
| 16582 | (KJS::setNewValueFromDateArgs): |
| 16583 | (KJS::dateProtoFuncSetYear): |
| 16584 | (KJS::dateProtoFuncGetYear): |
| 16585 | * kjs/error_object.cpp: |
| 16586 | (KJS::ErrorPrototype::ErrorPrototype): |
| 16587 | (KJS::errorProtoFuncToString): |
| 16588 | (KJS::ErrorObjectImp::ErrorObjectImp): |
| 16589 | (KJS::ErrorObjectImp::construct): |
| 16590 | (KJS::NativeErrorPrototype::NativeErrorPrototype): |
| 16591 | (KJS::NativeErrorImp::NativeErrorImp): |
| 16592 | (KJS::NativeErrorImp::construct): |
| 16593 | * kjs/function.cpp: |
| 16594 | (KJS::FunctionImp::lengthGetter): |
| 16595 | (KJS::FunctionImp::construct): |
| 16596 | (KJS::Arguments::Arguments): |
| 16597 | (KJS::ActivationImp::createArgumentsObject): |
| 16598 | (KJS::encode): |
| 16599 | (KJS::decode): |
| 16600 | (KJS::globalFuncParseInt): |
| 16601 | (KJS::globalFuncParseFloat): |
| 16602 | (KJS::globalFuncEscape): |
| 16603 | (KJS::globalFuncUnescape): |
| 16604 | (KJS::PrototypeFunction::PrototypeFunction): |
| 16605 | (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction): |
| 16606 | * kjs/function_object.cpp: |
| 16607 | (KJS::FunctionPrototype::FunctionPrototype): |
| 16608 | (KJS::functionProtoFuncToString): |
| 16609 | (KJS::FunctionObjectImp::FunctionObjectImp): |
| 16610 | (KJS::FunctionObjectImp::construct): |
| 16611 | * kjs/internal.cpp: |
| 16612 | (KJS::StringImp::toObject): |
| 16613 | * kjs/internal.h: |
| 16614 | (KJS::StringImp::StringImp): |
| 16615 | (KJS::NumberImp::operator new): |
| 16616 | * kjs/lookup.h: |
| 16617 | (KJS::staticFunctionGetter): |
| 16618 | (KJS::cacheGlobalObject): |
| 16619 | * kjs/math_object.cpp: |
| 16620 | (KJS::MathObjectImp::getValueProperty): |
| 16621 | (KJS::mathProtoFuncAbs): |
| 16622 | (KJS::mathProtoFuncACos): |
| 16623 | (KJS::mathProtoFuncASin): |
| 16624 | (KJS::mathProtoFuncATan): |
| 16625 | (KJS::mathProtoFuncATan2): |
| 16626 | (KJS::mathProtoFuncCeil): |
| 16627 | (KJS::mathProtoFuncCos): |
| 16628 | (KJS::mathProtoFuncExp): |
| 16629 | (KJS::mathProtoFuncFloor): |
| 16630 | (KJS::mathProtoFuncLog): |
| 16631 | (KJS::mathProtoFuncMax): |
| 16632 | (KJS::mathProtoFuncMin): |
| 16633 | (KJS::mathProtoFuncPow): |
| 16634 | (KJS::mathProtoFuncRandom): |
| 16635 | (KJS::mathProtoFuncRound): |
| 16636 | (KJS::mathProtoFuncSin): |
| 16637 | (KJS::mathProtoFuncSqrt): |
| 16638 | (KJS::mathProtoFuncTan): |
| 16639 | * kjs/nodes.cpp: |
| 16640 | (KJS::Node::handleException): |
| 16641 | (KJS::NumberNode::evaluate): |
| 16642 | (KJS::StringNode::evaluate): |
| 16643 | (KJS::ArrayNode::evaluate): |
| 16644 | (KJS::PostIncResolveNode::evaluate): |
| 16645 | (KJS::PostIncLocalVarNode::evaluate): |
| 16646 | (KJS::PostDecResolveNode::evaluate): |
| 16647 | (KJS::PostDecLocalVarNode::evaluate): |
| 16648 | (KJS::PostDecLocalVarNode::inlineEvaluateToNumber): |
| 16649 | (KJS::PostIncBracketNode::evaluate): |
| 16650 | (KJS::PostDecBracketNode::evaluate): |
| 16651 | (KJS::PostIncDotNode::evaluate): |
| 16652 | (KJS::PostDecDotNode::evaluate): |
| 16653 | (KJS::typeStringForValue): |
| 16654 | (KJS::LocalVarTypeOfNode::evaluate): |
| 16655 | (KJS::TypeOfResolveNode::evaluate): |
| 16656 | (KJS::TypeOfValueNode::evaluate): |
| 16657 | (KJS::PreIncLocalVarNode::evaluate): |
| 16658 | (KJS::PreIncResolveNode::evaluate): |
| 16659 | (KJS::PreDecLocalVarNode::evaluate): |
| 16660 | (KJS::PreDecResolveNode::evaluate): |
| 16661 | (KJS::PreIncConstNode::evaluate): |
| 16662 | (KJS::PreDecConstNode::evaluate): |
| 16663 | (KJS::PostIncConstNode::evaluate): |
| 16664 | (KJS::PostDecConstNode::evaluate): |
| 16665 | (KJS::PreIncBracketNode::evaluate): |
| 16666 | (KJS::PreDecBracketNode::evaluate): |
| 16667 | (KJS::PreIncDotNode::evaluate): |
| 16668 | (KJS::PreDecDotNode::evaluate): |
| 16669 | (KJS::NegateNode::evaluate): |
| 16670 | (KJS::BitwiseNotNode::evaluate): |
| 16671 | (KJS::MultNode::evaluate): |
| 16672 | (KJS::DivNode::evaluate): |
| 16673 | (KJS::ModNode::evaluate): |
| 16674 | (KJS::addSlowCase): |
| 16675 | (KJS::add): |
| 16676 | (KJS::AddNumbersNode::evaluate): |
| 16677 | (KJS::AddStringsNode::evaluate): |
| 16678 | (KJS::AddStringLeftNode::evaluate): |
| 16679 | (KJS::AddStringRightNode::evaluate): |
| 16680 | (KJS::SubNode::evaluate): |
| 16681 | (KJS::LeftShiftNode::evaluate): |
| 16682 | (KJS::RightShiftNode::evaluate): |
| 16683 | (KJS::UnsignedRightShiftNode::evaluate): |
| 16684 | (KJS::BitXOrNode::evaluate): |
| 16685 | (KJS::BitOrNode::evaluate): |
| 16686 | (KJS::valueForReadModifyAssignment): |
| 16687 | (KJS::ForInNode::execute): |
| 16688 | (KJS::TryNode::execute): |
| 16689 | (KJS::FuncDeclNode::makeFunction): |
| 16690 | (KJS::FuncExprNode::evaluate): |
| 16691 | * kjs/number_object.cpp: |
| 16692 | (KJS::NumberPrototype::NumberPrototype): |
| 16693 | (KJS::numberProtoFuncToString): |
| 16694 | (KJS::numberProtoFuncToLocaleString): |
| 16695 | (KJS::numberProtoFuncToFixed): |
| 16696 | (KJS::numberProtoFuncToExponential): |
| 16697 | (KJS::numberProtoFuncToPrecision): |
| 16698 | (KJS::NumberObjectImp::NumberObjectImp): |
| 16699 | (KJS::NumberObjectImp::getValueProperty): |
| 16700 | (KJS::NumberObjectImp::construct): |
| 16701 | (KJS::NumberObjectImp::callAsFunction): |
| 16702 | * kjs/object.cpp: |
| 16703 | (KJS::JSObject::defineGetter): |
| 16704 | (KJS::JSObject::defineSetter): |
| 16705 | (KJS::JSObject::putDirect): |
| 16706 | (KJS::Error::create): |
| 16707 | * kjs/object.h: |
| 16708 | * kjs/object_object.cpp: |
| 16709 | (KJS::ObjectPrototype::ObjectPrototype): |
| 16710 | (KJS::objectProtoFuncToLocaleString): |
| 16711 | (KJS::objectProtoFuncToString): |
| 16712 | (KJS::ObjectObjectImp::ObjectObjectImp): |
| 16713 | (KJS::ObjectObjectImp::construct): |
| 16714 | * kjs/regexp_object.cpp: |
| 16715 | (KJS::RegExpPrototype::RegExpPrototype): |
| 16716 | (KJS::regExpProtoFuncToString): |
| 16717 | (KJS::RegExpImp::getValueProperty): |
| 16718 | (KJS::RegExpObjectImp::RegExpObjectImp): |
| 16719 | (KJS::RegExpObjectImp::arrayOfMatches): |
| 16720 | (KJS::RegExpObjectImp::getBackref): |
| 16721 | (KJS::RegExpObjectImp::getLastParen): |
| 16722 | (KJS::RegExpObjectImp::getLeftContext): |
| 16723 | (KJS::RegExpObjectImp::getRightContext): |
| 16724 | (KJS::RegExpObjectImp::getValueProperty): |
| 16725 | (KJS::RegExpObjectImp::createRegExpImp): |
| 16726 | * kjs/regexp_object.h: |
| 16727 | * kjs/string_object.cpp: |
| 16728 | (KJS::StringInstance::StringInstance): |
| 16729 | (KJS::StringInstance::lengthGetter): |
| 16730 | (KJS::StringInstance::indexGetter): |
| 16731 | (KJS::stringInstanceNumericPropertyGetter): |
| 16732 | (KJS::StringPrototype::StringPrototype): |
| 16733 | (KJS::replace): |
| 16734 | (KJS::stringProtoFuncCharAt): |
| 16735 | (KJS::stringProtoFuncCharCodeAt): |
| 16736 | (KJS::stringProtoFuncConcat): |
| 16737 | (KJS::stringProtoFuncIndexOf): |
| 16738 | (KJS::stringProtoFuncLastIndexOf): |
| 16739 | (KJS::stringProtoFuncMatch): |
| 16740 | (KJS::stringProtoFuncSearch): |
| 16741 | (KJS::stringProtoFuncReplace): |
| 16742 | (KJS::stringProtoFuncSlice): |
| 16743 | (KJS::stringProtoFuncSplit): |
| 16744 | (KJS::stringProtoFuncSubstr): |
| 16745 | (KJS::stringProtoFuncSubstring): |
| 16746 | (KJS::stringProtoFuncToLowerCase): |
| 16747 | (KJS::stringProtoFuncToUpperCase): |
| 16748 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 16749 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 16750 | (KJS::stringProtoFuncLocaleCompare): |
| 16751 | (KJS::stringProtoFuncBig): |
| 16752 | (KJS::stringProtoFuncSmall): |
| 16753 | (KJS::stringProtoFuncBlink): |
| 16754 | (KJS::stringProtoFuncBold): |
| 16755 | (KJS::stringProtoFuncFixed): |
| 16756 | (KJS::stringProtoFuncItalics): |
| 16757 | (KJS::stringProtoFuncStrike): |
| 16758 | (KJS::stringProtoFuncSub): |
| 16759 | (KJS::stringProtoFuncSup): |
| 16760 | (KJS::stringProtoFuncFontcolor): |
| 16761 | (KJS::stringProtoFuncFontsize): |
| 16762 | (KJS::stringProtoFuncAnchor): |
| 16763 | (KJS::stringProtoFuncLink): |
| 16764 | (KJS::StringObjectImp::StringObjectImp): |
| 16765 | (KJS::StringObjectImp::construct): |
| 16766 | (KJS::StringObjectImp::callAsFunction): |
| 16767 | (KJS::StringObjectFuncImp::StringObjectFuncImp): |
| 16768 | (KJS::StringObjectFuncImp::callAsFunction): |
| 16769 | * kjs/string_object.h: |
| 16770 | (KJS::StringInstanceThatMasqueradesAsUndefined::StringInstanceThatMasqueradesAsUndefined): |
| 16771 | * kjs/testkjs.cpp: |
| 16772 | (GlobalObject::GlobalObject): |
| 16773 | (functionGC): |
| 16774 | (functionRun): |
| 16775 | (functionReadline): |
| 16776 | (kjsmain): |
| 16777 | * kjs/ustring.h: |
| 16778 | * kjs/value.cpp: |
| 16779 | (KJS::JSCell::operator new): |
| 16780 | (KJS::jsString): |
| 16781 | (KJS::jsOwnedString): |
| 16782 | (KJS::jsNumberCell): |
| 16783 | * kjs/value.h: |
| 16784 | (KJS::jsNaN): |
| 16785 | (KJS::jsNumber): |
| 16786 | (KJS::jsNumberFromAnd): |
| 16787 | (KJS::JSCell::marked): |
| 16788 | (KJS::JSCell::mark): |
| 16789 | (KJS::JSValue::toJSNumber): |
| 16790 | Removed collectOnMainThreadOnly, as this is the only way to collect now. Replaced calls to |
| 16791 | static Collector methods with calls to per-thread Heap ones. |
| 16792 | |
| 16793 | 2008-05-02 Dan Bernstein <mitz@apple.com> |
| 16794 | |
| 16795 | Reviewed by Maciej Stachowiak. |
| 16796 | |
| 16797 | - Mac build fix |
| 16798 | |
| 16799 | * wtf/StrHash.h: Added header guards and removed #include "config.h". |
| 16800 | |
| 16801 | 2008-05-01 Ada Chan <adachan@apple.com> |
| 16802 | |
| 16803 | #include <wtf/StrHash.h> in identifier.cpp. |
| 16804 | |
| 16805 | Reviewed by Maciej. |
| 16806 | |
| 16807 | * kjs/identifier.cpp: |
| 16808 | |
| 16809 | 2008-05-01 Steve Falkenburg <sfalken@apple.com> |
| 16810 | |
| 16811 | Build fix. |
| 16812 | |
| 16813 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 16814 | |
| 16815 | 2008-05-01 Sam Weinig <sam@webkit.org> |
| 16816 | |
| 16817 | Fix build. |
| 16818 | |
| 16819 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 16820 | |
| 16821 | 2008-05-01 Kevin McCullough <kmccullough@apple.com> |
| 16822 | |
| 16823 | Reviewed by Darin. |
| 16824 | |
| 16825 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 16826 | - Fix "sample" output so that it can be imported into Instruments |
| 16827 | - Also keep track of number of times a function is profiled. |
| 16828 | |
| 16829 | * JavaScriptCore.xcodeproj/project.pbxproj: Add StrHash.h which needed |
| 16830 | to be pulled out of identifier.cpp so that it could be used by the |
| 16831 | profiler and identifiers. |
| 16832 | * kjs/identifier.cpp: Ditto. |
| 16833 | * profiler/FunctionCallProfile.cpp: |
| 16834 | (KJS::FunctionCallProfile::printDataInspectorStyle): Inspector style |
| 16835 | printing should show microseconds. |
| 16836 | (KJS::FunctionCallProfile::printDataSampleStyle): Sample style printing |
| 16837 | now counts the number of times a function is in the stack tree and does |
| 16838 | not print microseconds since that does not make sense for a sampler. |
| 16839 | * profiler/FunctionCallProfile.h: Keep track of number of times a |
| 16840 | function is profiled. |
| 16841 | (KJS::FunctionCallProfile::numberOfCalls): |
| 16842 | * profiler/Profiler.cpp: |
| 16843 | (KJS::functionNameCountPairComparator): Comparator for sort function in |
| 16844 | printDataSampleStyle. |
| 16845 | (KJS::Profiler::printDataSampleStyle): Print the number of times that a |
| 16846 | function is listed in the stack tree in order of most times listed. |
| 16847 | * wtf/HashCountedSet.h: Added copyToVector since it didn't exist and is |
| 16848 | a more standard way to copy a HashSet to a Vector. I added on variant |
| 16849 | that takes a pair as the Vector's type and so the HashCountedSet simply |
| 16850 | fills in that pair with its internal pair, and another variant that |
| 16851 | takes a Vector of the type of the HashCountedSet and only fills in the |
| 16852 | Vector with the first element of the pair. |
| 16853 | (WTF::copyToVector): |
| 16854 | * wtf/StrHash.h: Added. |
| 16855 | (WTF::): |
| 16856 | |
| 16857 | 2008-04-29 David Kilzer <ddkilzer@apple.com> |
| 16858 | |
| 16859 | BUILD FIX for ENABLE(DASHBOARD_SUPPORT) |
| 16860 | |
| 16861 | * wtf/Platform.h: Defined ENABLE(DASHBOARD_SUPPORT) to 1 only for |
| 16862 | PLATFORM(MAC) and PLATFORM(WIN). Changed default to 0 for other |
| 16863 | ports. |
| 16864 | |
| 16865 | 2008-04-29 Greg Bolsinga <bolsinga@apple.com> |
| 16866 | |
| 16867 | Reviewed by Darin. |
| 16868 | |
| 16869 | Wrapped Dashboard code with ENABLE(DASHBOARD_SUPPORT) |
| 16870 | |
| 16871 | * wtf/Platform.h: |
| 16872 | |
| 16873 | 2008-04-29 Kevin McCullough <kmccullough@apple.com> |
| 16874 | |
| 16875 | Reviewed by Geoff. |
| 16876 | |
| 16877 | -<rdar://problem/5770054> JavaScript profiler (10928) |
| 16878 | -Keep call count. |
| 16879 | |
| 16880 | * profiler/FunctionCallProfile.cpp: |
| 16881 | (KJS::FunctionCallProfile::FunctionCallProfile): |
| 16882 | (KJS::FunctionCallProfile::didExecute): Implements call count and fixed a bug where a stackIndex |
| 16883 | of 0 was causing the assert to be hit. |
| 16884 | (KJS::FunctionCallProfile::stopProfiling): |
| 16885 | (KJS::FunctionCallProfile::endAndRecordCall): |
| 16886 | * profiler/FunctionCallProfile.h: |
| 16887 | |
| 16888 | 2008-04-29 Simon Hausmann <hausmann@webkit.org> |
| 16889 | |
| 16890 | Qt/Windows build fix. The externally declared hash tables are actually |
| 16891 | declared const and the const is mangled in the symbol name, so when |
| 16892 | importing they also need to be marked const. |
| 16893 | |
| 16894 | When compiling without MULTIPLE_THREADS use a const HashTable& |
| 16895 | instead of a HashTable& in ThreadClassInfoHashTables to avoid |
| 16896 | initializing the latter with a const reference. |
| 16897 | |
| 16898 | * kjs/JSGlobalObject.cpp: |
| 16899 | |
| 16900 | 2008-04-28 Alexey Proskuryakov <ap@webkit.org> |
| 16901 | |
| 16902 | Windows build fix. |
| 16903 | |
| 16904 | * kjs/ExecState.h: For whatever reason, MSVC couldn't generate a default constructor for |
| 16905 | a struct that had a "const List" member. Removing the const qulifier makes the problem go away. |
| 16906 | |
| 16907 | 2008-04-28 Alexey Proskuryakov <ap@webkit.org> |
| 16908 | |
| 16909 | Reviewed by Darin. |
| 16910 | |
| 16911 | Fix run-webkit-tests --threading |
| 16912 | and provisionally fix <https://bugs.webkit.org/show_bug.cgi?id=18661> |
| 16913 | Proxy server issue in Sunday's Nightly |
| 16914 | |
| 16915 | Changed ClassInfo objects for built-in objects to hold a getter function returning |
| 16916 | a per-thread instance. This makes it safe to share these ClassInfo objects between threads - |
| 16917 | and these are the only ones that need to be shared. |
| 16918 | |
| 16919 | * kjs/lexer.cpp: |
| 16920 | (KJS::Lexer::Lexer): |
| 16921 | (KJS::Lexer::~Lexer): |
| 16922 | * kjs/lexer.h: |
| 16923 | Made mainTable a member of Lexer, so that it no longer needs to be shared between threads. |
| 16924 | |
| 16925 | * kjs/object.cpp: |
| 16926 | (KJS::JSObject::deleteProperty): |
| 16927 | (KJS::JSObject::findPropertyHashEntry): |
| 16928 | (KJS::JSObject::propertyIsEnumerable): |
| 16929 | (KJS::JSObject::getPropertyAttributes): |
| 16930 | (KJS::JSObject::getPropertyNames): |
| 16931 | * kjs/object.h: |
| 16932 | (KJS::ClassInfo::propHashTable): |
| 16933 | Added a new classPropHashTableGetterFunction field to ClassInfo. If it is non-zero, the |
| 16934 | static table is not used. |
| 16935 | |
| 16936 | * kjs/JSGlobalObject.cpp: |
| 16937 | (KJS::ThreadClassInfoHashTables::ThreadClassInfoHashTables): This new class holds per-thread |
| 16938 | HashTables for built-in classes. The old static structs are copied to create per-thread |
| 16939 | instances. |
| 16940 | (KJS::JSGlobalObject::threadClassInfoHashTables): An accessor/initializer for the above. |
| 16941 | (KJS::JSGlobalObject::init): Copy per-thread data into a single structure for faster access. |
| 16942 | Also, construct globalExec. |
| 16943 | (KJS::JSGlobalObject::reset): Adapted for globalExec now being an OwnPtr. |
| 16944 | (KJS::JSGlobalObject::mark): Ditto. |
| 16945 | (KJS::JSGlobalObject::globalExec): Ditto. |
| 16946 | * kjs/JSGlobalObject.h: |
| 16947 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Made JSGlobalObject::JSGlobalObjectData::globalExec an OwnPtr, so that it can |
| 16948 | be initialized from JSGlobalObject::init() after them. Otherwise, ExecState constructor was |
| 16949 | trying to access half-initialized JSGlobalObject to make its own copy of these table |
| 16950 | references, and failed. |
| 16951 | (KJS::JSGlobalObject::JSGlobalObject): Pass "this" value to init() to create globalExec. |
| 16952 | (KJS::JSGlobalObject::perThreadData): An accessor for per-thread data. |
| 16953 | |
| 16954 | * kjs/ExecState.cpp: |
| 16955 | (KJS::ExecState::ExecState): |
| 16956 | * kjs/ExecState.h: |
| 16957 | (KJS::ExecState::propertyNames): |
| 16958 | (KJS::ExecState::emptyList): |
| 16959 | (KJS::ExecState::arrayTable): |
| 16960 | (KJS::ExecState::dateTable): |
| 16961 | (KJS::ExecState::mathTable): |
| 16962 | (KJS::ExecState::numberTable): |
| 16963 | (KJS::ExecState::RegExpImpTable): |
| 16964 | (KJS::ExecState::RegExpObjectImpTable): |
| 16965 | (KJS::ExecState::stringTable): |
| 16966 | * kjs/ExecStateInlines.h: |
| 16967 | (KJS::ExecState::ExecState): |
| 16968 | Each ExecState holds its own reference to per-thread data, for even faster access. Moved |
| 16969 | m_emptyList and m_propertyNames to the same structure, making ExecState faster to construct |
| 16970 | and take less space on the stack. |
| 16971 | |
| 16972 | * kjs/InitializeThreading.cpp: (KJS::initializeThreading): Initialize thread-static data |
| 16973 | added to JSGlobalObject. |
| 16974 | |
| 16975 | * API/JSCallbackConstructor.cpp: |
| 16976 | * API/JSCallbackFunction.cpp: |
| 16977 | * API/JSCallbackObject.cpp: |
| 16978 | * JavaScriptCore.exp: |
| 16979 | * kjs/JSVariableObject.cpp: |
| 16980 | (KJS::JSVariableObject::getPropertyAttributes): |
| 16981 | * kjs/JSVariableObject.h: |
| 16982 | * kjs/array_instance.cpp: |
| 16983 | * kjs/array_object.cpp: |
| 16984 | (KJS::ArrayPrototype::getOwnPropertySlot): |
| 16985 | * kjs/bool_object.cpp: |
| 16986 | * kjs/create_hash_table: |
| 16987 | * kjs/date_object.cpp: |
| 16988 | (KJS::DatePrototype::getOwnPropertySlot): |
| 16989 | (KJS::DateObjectImp::DateObjectImp): |
| 16990 | * kjs/error_object.cpp: |
| 16991 | * kjs/function.cpp: |
| 16992 | * kjs/function_object.cpp: |
| 16993 | (KJS::FunctionPrototype::FunctionPrototype): |
| 16994 | * kjs/internal.cpp: |
| 16995 | * kjs/lookup.h: |
| 16996 | * kjs/math_object.cpp: |
| 16997 | (KJS::MathObjectImp::getOwnPropertySlot): |
| 16998 | * kjs/number_object.cpp: |
| 16999 | (KJS::NumberObjectImp::getOwnPropertySlot): |
| 17000 | * kjs/object_object.cpp: |
| 17001 | (KJS::ObjectPrototype::ObjectPrototype): |
| 17002 | * kjs/regexp_object.cpp: |
| 17003 | (KJS::RegExpPrototype::RegExpPrototype): |
| 17004 | (KJS::RegExpImp::getOwnPropertySlot): |
| 17005 | (KJS::RegExpImp::put): |
| 17006 | (KJS::RegExpObjectImp::getOwnPropertySlot): |
| 17007 | (KJS::RegExpObjectImp::put): |
| 17008 | * kjs/string_object.cpp: |
| 17009 | (KJS::StringPrototype::getOwnPropertySlot): |
| 17010 | Adjust for the above changes. |
| 17011 | |
| 17012 | 2008-04-28 Darin Adler <darin@apple.com> |
| 17013 | |
| 17014 | Reviewed by Adam. |
| 17015 | |
| 17016 | - make sure RefPtr's default hash doesn't ref/deref when computing the hash |
| 17017 | - remove remnants of the hash table storage type optimization |
| 17018 | |
| 17019 | * wtf/HashFunctions.h: Used "using" to get the hash and equal functions |
| 17020 | from PtrHash<P*> into PtrHash<RefPtr<P>>. |
| 17021 | |
| 17022 | * wtf/HashMap.h: Replaced uses of PairBaseHashTraits with PairHashTraits. |
| 17023 | Eliminated storage-related typedefs. Removed constructor, destructor, |
| 17024 | copy constructor, and destructor since the compiler-generated ones are |
| 17025 | fine. Removed refAll and derefAll. Took out unnnecessary typecasts. |
| 17026 | Removed use of RefCounter. |
| 17027 | |
| 17028 | * wtf/HashSet.h: Eliminated storage-related typedefs. Removed constructor, |
| 17029 | destructor, copy constructor, and destructor since the compiler-generated |
| 17030 | ones are fine. Removed refAll and derefAll. Removed unneeded template |
| 17031 | arguents from HashSetTranslatorAdapter. Eliminated unneeded HashSetTranslator |
| 17032 | template. |
| 17033 | |
| 17034 | * wtf/HashTable.h: Tweaked formatting. Removed NeedsRef, RefCounterBase, |
| 17035 | RefCounter, HashTableRefCounterBase, HashTableRefCounter, and Assigner |
| 17036 | class templates. |
| 17037 | |
| 17038 | * wtf/HashTraits.h: Removed StorageTraits, needsRef, PairBaseHashTraits, |
| 17039 | and HashKeyStorageTraits. |
| 17040 | |
| 17041 | * wtf/RefPtrHashMap.h: Made all the same fixes as in HashMap. Also made |
| 17042 | the corresponding changes to RefPtrHashMapRawKeyTranslator. |
| 17043 | |
| 17044 | 2008-04-28 Darin Adler <darin@apple.com> |
| 17045 | |
| 17046 | Reviewed by Mitz. |
| 17047 | |
| 17048 | - fix assertion hit every time you view www.apple.com |
| 17049 | |
| 17050 | * kjs/PropertyNameArray.cpp: |
| 17051 | (KJS::PropertyNameArray::add): Changed assertion to allow null and empty strings. |
| 17052 | Now to find out why we have a property named "" and if that's a bug! |
| 17053 | |
| 17054 | 2008-04-27 Mark Rowe <mrowe@apple.com> |
| 17055 | |
| 17056 | Reviewed by Maciej Stachowiak. |
| 17057 | |
| 17058 | Fix crash inside PtrHash::hash when loading a page. |
| 17059 | |
| 17060 | * wtf/HashFunctions.h: Explicitly use the superclass implementation of hash to avoid infinite recursion. |
| 17061 | |
| 17062 | 2008-04-27 Darin Adler <darin@apple.com> |
| 17063 | |
| 17064 | Reviewed by Maciej. |
| 17065 | |
| 17066 | - fix <rdar://problem/5657459> REGRESSION: JavaScriptCore no longer builds with |
| 17067 | GCC 4.2 due to pointer aliasing warnings |
| 17068 | |
| 17069 | Fix this by removing the HashTable optimizations that allowed us to share a back end |
| 17070 | implementation between hash tables with integers, pointers, RefPtr, and String objects |
| 17071 | as keys. The way it worked was incompatible with strict aliasing. |
| 17072 | |
| 17073 | This increases code size. On Mac OS X we'll have to regenerate .order files to avoid |
| 17074 | slowing down Safari startup times. |
| 17075 | |
| 17076 | This creates a slight slowdown in SunSpider, mitigated by the following four speedups: |
| 17077 | |
| 17078 | - speed up array put slightly by moving a branch (was already done for get) |
| 17079 | |
| 17080 | - speed up symbol table access by adding a function named inlineGet to HashMap |
| 17081 | and using that in symbolTableGet/Put |
| 17082 | |
| 17083 | - speed up PropertyNameArray creation by reducing the amount of reference count |
| 17084 | churn and uniqueness checking when adding names and not doing any allocation at |
| 17085 | all when building small arrays |
| 17086 | |
| 17087 | - speed up conversion of strings to floating point numbers by eliminating the |
| 17088 | malloc/free of the buffer for the ASCII copy of the string; a way to make |
| 17089 | things even faster would be to change strtod to take a UTF-16 string |
| 17090 | |
| 17091 | Note that there is considerable unused complexity now in HashSet/Map/Table to support |
| 17092 | "storage types", which is no longer used. Will do in a separate patch. |
| 17093 | |
| 17094 | * API/JSCallbackObjectFunctions.h: |
| 17095 | (KJS::JSCallbackObject<Base>::getPropertyNames): Removed explicit cast to Identifier to |
| 17096 | take advantage of the new PropertyNameArray::add overload and avoid reference count churn. |
| 17097 | * API/JSObjectRef.cpp: |
| 17098 | (JSPropertyNameAccumulatorAddName): Ditto. |
| 17099 | * JavaScriptCore.exp: Updated PropertyNameArray::add entry point name. |
| 17100 | |
| 17101 | * kjs/JSVariableObject.cpp: Removed now-unneeded IdentifierRepHashTraits::nullRepPtr |
| 17102 | definition (see below). |
| 17103 | (KJS::JSVariableObject::getPropertyNames): Removed explicit cast to Identifier. |
| 17104 | |
| 17105 | * kjs/JSVariableObject.h: |
| 17106 | (KJS::JSVariableObject::symbolTableGet): Use inlineGet for speed. Also changed to do |
| 17107 | early exit instead of nesting the body inside an if. |
| 17108 | (KJS::JSVariableObject::symbolTablePut): Ditto. |
| 17109 | |
| 17110 | * kjs/PropertyNameArray.cpp: |
| 17111 | (KJS::PropertyNameArray::add): Changed implementation to take a raw pointer instead of |
| 17112 | a reference to an identifier. Do uniqueness checking by searching the vector when the |
| 17113 | vector is short, only building the set once the vector is large enough. |
| 17114 | |
| 17115 | * kjs/PropertyNameArray.h: Added an overload of add for a raw pointer, and made the old |
| 17116 | add function call that one. Added an addKnownUnique function for use when the new |
| 17117 | name is known to be different from any other in the array. Changed the vector to have |
| 17118 | an inline capacity of 20. |
| 17119 | |
| 17120 | * kjs/SymbolTable.h: Changed IdentifierRepHash to inherit from the default hash for |
| 17121 | a RefPtr so we don't have to define so much. Added an overload of the hash function for |
| 17122 | a raw pointer as required by the new RefPtrHashMap. Got rid of the now-unneeded |
| 17123 | IdentifierRepHashTraits -- the default traits now work fine. Added a definition of |
| 17124 | empthValueIsZero to SymbolTableIndexHashTraits; not having it was incorrect, but harmless. |
| 17125 | |
| 17126 | * kjs/array_instance.cpp: |
| 17127 | (KJS::ArrayInstance::put): Move the maxArrayIndex check inside the branch that checks |
| 17128 | the index against the length, as done in the get function. |
| 17129 | |
| 17130 | * kjs/function.cpp: |
| 17131 | (KJS::globalFuncKJSPrint): Changed to use the new getCString instead of cstring. |
| 17132 | |
| 17133 | * kjs/internal.cpp: Removed printInfo debugging function, a client of cstring. |
| 17134 | If we need a debugging function we can easily make a better one and we haven't |
| 17135 | used this one in a long time. |
| 17136 | * kjs/internal.h: Ditto. |
| 17137 | |
| 17138 | * kjs/object.cpp: |
| 17139 | (KJS::JSObject::getPropertyNames): Removed explicit cast to Identifier. |
| 17140 | * kjs/property_map.cpp: |
| 17141 | (KJS::PropertyMap::getEnumerablePropertyNames): Ditto. Also added a special case for |
| 17142 | the case where the propertyNames array is empty -- in that case we know we're adding |
| 17143 | a set of names that are non-overlapping so we can use addKnownUnique. |
| 17144 | * kjs/ustring.cpp: |
| 17145 | (KJS::UString::getCString): Replaces cstring. Puts the C string into a CStringBuffer, |
| 17146 | which is a char Vector with an inline capacity. Also returns a boolean to indicate if |
| 17147 | the converion was lossy, which eliminates the need for a separate is8Bit call. |
| 17148 | (KJS::UString::toDouble): Changed to call getCString instead of cstring. |
| 17149 | * kjs/ustring.h: Ditto. |
| 17150 | |
| 17151 | * wtf/HashFunctions.h: Overload the hash and equal functions for RefPtr's default |
| 17152 | hash to take raw pointers. This works with the changes to RefPtrHashMap to avoid |
| 17153 | introducing refcount churn. |
| 17154 | |
| 17155 | * wtf/HashMap.h: Removed special code to convert the deleted value to the empty value |
| 17156 | when writing a new value into the map. This is now handled elsewhere. |
| 17157 | (WTF::HashMap::get): Removed code that checks for an empty hash table before calling |
| 17158 | HashTable::lookup; it's slightly more efficient to do this check inside lookup. |
| 17159 | |
| 17160 | * wtf/HashTable.h: |
| 17161 | (WTF::HashTable::isDeletedBucket): Changed to use isDeletedValue instead of using |
| 17162 | deletedValue and the equality operator. |
| 17163 | (WTF::HashTable::deleteBucket): Changed to use constructDeletedValue instead of |
| 17164 | using deletedValue and the assignment operator. |
| 17165 | (WTF::HashTable::checkKey): Added. Factors out the check for values that are empty |
| 17166 | or deleted keys that's used in various functions below. |
| 17167 | (WTF::HashTable::lookup): Changed to use checkKey, check for a 0 table, and also |
| 17168 | made public for use by RefPtrHashMap. |
| 17169 | (WTF::HashTable::lookupForWriting): Changed to use checkKey. |
| 17170 | (WTF::HashTable::fullLookupForWriting): Changed to use checkKey. |
| 17171 | (WTF::HashTable::add): Changed to use checkKey, and call initializeBucket on a |
| 17172 | deleted bucket before putting a new entry into it. |
| 17173 | (WTF::HashTable::addPassingHashCode): Ditto. |
| 17174 | (WTF::HashTable::deallocateTable): Check isDeletedBucket before calling ~ValueType. |
| 17175 | |
| 17176 | * wtf/HashTraits.h: Got ridd of all the HashTraits specialization for the integer |
| 17177 | types, since GeneicHashTraitsBase already deals with integers separately. Put the |
| 17178 | deleted value support into GenericHashTraitsBase. Changed FloatHashTraits to |
| 17179 | inherit from GenericHashTraits, and define construct/isDeletedValue rather than |
| 17180 | deletedValue. Removed the ref and deref functions from RefPtr's HashTraits, and |
| 17181 | defined construct/isDeletedValue. Eliminated DeletedValueAssigner. Changed |
| 17182 | PairHashTraits to define construct/isDeletedValue, and also merged |
| 17183 | PairBaseHashTraits in with PairHashTraits. Got rid of all specialization of |
| 17184 | HashKeyStorageTraits. We'll remove that, and the needsRef data member, later. |
| 17185 | |
| 17186 | * wtf/RefPtr.h: Added HashTableDeletedValueType, an enum type with a single value, |
| 17187 | HashTableDeletedValue. Used that type to make a new constructor to construct |
| 17188 | deleted values and also added an isHashTableDeletedValue function. |
| 17189 | |
| 17190 | * wtf/RefPtrHashMap.h: Added RefPtrHashMapRawKeyTranslator and used it to implement |
| 17191 | the raw pointer functions. This is a way to continue to avoid refcount thrash. We |
| 17192 | can't use the old way because it depended on the underlying map using a non-RefPtr |
| 17193 | type. |
| 17194 | (WTF::HashMap::find): Use find with RefPtrHashMapRawKeyTranslator. |
| 17195 | (WTF::HashMap::contains): Use contains with RefPtrHashMapRawKeyTranslator. |
| 17196 | (WTF::HashMap::inlineAdd): Use add with RefPtrHashMapRawKeyTranslator. |
| 17197 | (WTF::HashMap::get): Removed code that checks for an empty hash table before calling |
| 17198 | HashTable::lookup; it's slightly more efficient to do this check inside lookup. |
| 17199 | (WTF::HashMap::inlineGet): Added. Just like get, but marked inline for use in the |
| 17200 | symbol table code. |
| 17201 | |
| 17202 | 2008-04-25 Sam Weinig <sam@webkit.org> |
| 17203 | |
| 17204 | Rubber-stamped by Mark Rowe. |
| 17205 | |
| 17206 | Remove SavedBuiltins and SavedProperties classes and the methods used to |
| 17207 | save data to them. The CachedPage now stores a the JSGlobalObject in full. |
| 17208 | |
| 17209 | * JavaScriptCore.exp: |
| 17210 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 17211 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 17212 | * kjs/JSGlobalObject.cpp: |
| 17213 | * kjs/JSGlobalObject.h: |
| 17214 | * kjs/JSVariableObject.cpp: |
| 17215 | * kjs/JSVariableObject.h: |
| 17216 | (KJS::JSVariableObject::localStorage): |
| 17217 | * kjs/SavedBuiltins.h: Removed. |
| 17218 | * kjs/object.h: |
| 17219 | * kjs/property_map.cpp: |
| 17220 | * kjs/property_map.h: |
| 17221 | |
| 17222 | 2008-04-25 Mark Rowe <mrowe@apple.com> |
| 17223 | |
| 17224 | Rubber-stamped by Sam Weinig. |
| 17225 | |
| 17226 | Add some content to an empty ICU header file to prevent verification errors. |
| 17227 | |
| 17228 | * icu/unicode/utf_old.h: |
| 17229 | |
| 17230 | 2008-04-25 David Kilzer <ddkilzer@apple.com> |
| 17231 | |
| 17232 | <rdar://problem/5819422> REGRESSION: Wrong line number passed to -willLeaveCallFrame |
| 17233 | |
| 17234 | Patch by George Dicker and Michael Kahl. Reviewed by Darin. |
| 17235 | |
| 17236 | When -[NSObject(WebScriptDebugDelegate) webView:willLeaveCallFrame:sourceId:line:forWebFrame:] |
| 17237 | is invoked, the first line number of the function is returned instead of the last |
| 17238 | line number. This regressed in r28458. |
| 17239 | |
| 17240 | * kjs/nodes.cpp: |
| 17241 | (KJS::FunctionBodyNodeWithDebuggerHooks::execute): Pass lastLine() instead of lineNo() |
| 17242 | when calling Debugger::returnEvent(). |
| 17243 | |
| 17244 | 2008-04-25 Darin Adler <darin@apple.com> |
| 17245 | |
| 17246 | Done with Stephanie Lewis. |
| 17247 | |
| 17248 | * JavaScriptCore.xcodeproj/project.pbxproj: Prepare for compilation with gcc 4.2 by |
| 17249 | adding -fno-strict-aliasing to CollatorICU.cpp. |
| 17250 | |
| 17251 | 2008-04-24 Sam Weinig <sam@webkit.org> |
| 17252 | |
| 17253 | Reviewed by Geoffrey Garen. |
| 17254 | |
| 17255 | Add a #define to easily enable collecting on every allocation to aid |
| 17256 | debugging GC bugs. |
| 17257 | |
| 17258 | * kjs/collector.cpp: |
| 17259 | (KJS::Collector::heapAllocate): |
| 17260 | |
| 17261 | 2008-04-24 Kevin McCullough <kmccullough@apple.com> |
| 17262 | |
| 17263 | Reviewed by Adam and Sam. |
| 17264 | |
| 17265 | -<rdar://problem/5770054> JavaScript profiler (10928) |
| 17266 | -Only profile the page group that starts profiling to avoid profiling |
| 17267 | tools that shouldn't be profiled unless explicitly requested to. |
| 17268 | |
| 17269 | * JavaScriptCore.exp: Export new signature. |
| 17270 | * kjs/JSGlobalObject.cpp: Add unique identifiers to the JSGlobalObject. |
| 17271 | (KJS::JSGlobalObject::init): |
| 17272 | * kjs/JSGlobalObject.h: Ditto. |
| 17273 | (KJS::JSGlobalObject::setPageGroupIdentifier): |
| 17274 | (KJS::JSGlobalObject::pageGroupIdentifier): |
| 17275 | * profiler/Profiler.cpp: Check the identifier of the page group of the |
| 17276 | lexical global exec state and only profile if it matches the given page |
| 17277 | group identifier. |
| 17278 | (KJS::Profiler::startProfiling): |
| 17279 | (KJS::Profiler::willExecute): |
| 17280 | (KJS::Profiler::didExecute): |
| 17281 | * profiler/Profiler.h: Ditto. |
| 17282 | (KJS::Profiler::Profiler): |
| 17283 | |
| 17284 | 2008-04-24 Julien Chaffraix <jchaffraix@webkit.org> |
| 17285 | |
| 17286 | Reviewed by Simon. |
| 17287 | |
| 17288 | Bug 15940: Implement threading API for Qt |
| 17289 | https://bugs.webkit.org/show_bug.cgi?id=15940 |
| 17290 | |
| 17291 | Original patch by Justin Haygood, tweaked by me. |
| 17292 | |
| 17293 | * JavaScriptCore.pri: |
| 17294 | * wtf/ThreadingQt.cpp: Added. |
| 17295 | (WTF::threadMapMutex): |
| 17296 | (WTF::threadMap): |
| 17297 | (WTF::establishIdentifierForThread): |
| 17298 | (WTF::clearThreadForIdentifier): |
| 17299 | (WTF::threadForIdentifier): |
| 17300 | (WTF::initializeThreading): |
| 17301 | (WTF::ThreadPrivate::getReturnValue): |
| 17302 | (WTF::ThreadPrivate::ThreadPrivate): |
| 17303 | (WTF::ThreadPrivate::run): |
| 17304 | (WTF::createThread): |
| 17305 | (WTF::waitForThreadCompletion): return !res to return |
| 17306 | 0 on success (to match the pthreads implementation). |
| 17307 | (WTF::detachThread): |
| 17308 | (WTF::identifierByQthreadHandle): |
| 17309 | (WTF::currentThread): |
| 17310 | (WTF::Mutex::Mutex): |
| 17311 | (WTF::Mutex::~Mutex): |
| 17312 | (WTF::Mutex::lock): |
| 17313 | (WTF::Mutex::tryLock): |
| 17314 | (WTF::Mutex::unlock): |
| 17315 | (WTF::ThreadCondition::ThreadCondition): |
| 17316 | (WTF::ThreadCondition::~ThreadCondition): |
| 17317 | (WTF::ThreadCondition::wait): |
| 17318 | (WTF::ThreadCondition::timedWait): |
| 17319 | (WTF::ThreadCondition::signal): |
| 17320 | |
| 17321 | 2008-04-22 Darin Adler <darin@apple.com> |
| 17322 | |
| 17323 | Reviewed by Anders. |
| 17324 | |
| 17325 | - simplify use of HashTraits to prepare for some upcoming hash table changes |
| 17326 | |
| 17327 | * kjs/SymbolTable.h: Made SymbolTableIndexHashTraits derive from HashTraits<size_t> |
| 17328 | and specialize only the empty value. |
| 17329 | |
| 17330 | 2008-04-23 Holger Hans Peter Freyther <zecke@selfish.org> |
| 17331 | |
| 17332 | Reviewed by Simon. |
| 17333 | |
| 17334 | Removed the #define for USE_SYSTEM_MALLOC that we set in WebKit.pri |
| 17335 | already. |
| 17336 | |
| 17337 | * wtf/Platform.h: |
| 17338 | |
| 17339 | 2008-04-21 Kevin McCullough <kmccullough@apple.com> |
| 17340 | |
| 17341 | Reviewed by Adam. |
| 17342 | |
| 17343 | <rdar://problem/5770054> JavaScript profiler (10928) |
| 17344 | - When stop profiling is called we need to stop the timers on all the |
| 17345 | functions that are still running. |
| 17346 | |
| 17347 | * profiler/FunctionCallProfile.cpp: |
| 17348 | (KJS::FunctionCallProfile::didExecute): |
| 17349 | (KJS::FunctionCallProfile::stopProfiling): |
| 17350 | * profiler/FunctionCallProfile.h: |
| 17351 | * profiler/Profiler.cpp: |
| 17352 | (KJS::Profiler::stopProfiling): |
| 17353 | |
| 17354 | 2008-04-21 Alexey Proskuryakov <ap@webkit.org> |
| 17355 | |
| 17356 | Reviewed by Darin. |
| 17357 | |
| 17358 | Move collector main thread initialization from WebKit/win to KJS::initializeThreading. |
| 17359 | |
| 17360 | * kjs/InitializeThreading.cpp: |
| 17361 | (KJS::initializeThreading): |
| 17362 | |
| 17363 | 2008-04-21 Adam Roben <aroben@apple.com> |
| 17364 | |
| 17365 | MSVC build fix |
| 17366 | |
| 17367 | Reviewed by Alexey Proskuryakov. |
| 17368 | |
| 17369 | * kjs/ustring.h: |
| 17370 | (KJS::UString::cost): Disable a warning about assigning a 32-bit |
| 17371 | size_t into a 31-bit size_t. |
| 17372 | |
| 17373 | 2008-04-21 Simon Hausmann <hausmann@webkit.org> |
| 17374 | |
| 17375 | Reviewed by Lars. |
| 17376 | |
| 17377 | Made convertValueToQVariant accessible from within WebKit/qt/Api |
| 17378 | |
| 17379 | * bindings/qt/qt_runtime.h: |
| 17380 | |
| 17381 | 2008-04-21 Holger Hans Peter Freyther <holger.freyther@trolltech.com> |
| 17382 | |
| 17383 | Reviewed by Simon. |
| 17384 | |
| 17385 | Build fix for Qt 4.3 |
| 17386 | |
| 17387 | * When building WebCore/internal make sure the QT_[BEGIN,END]_NAMESPACE is |
| 17388 | always defined. Do this by adding defines to the compiler line |
| 17389 | * For users of our API this is not feasible. Every public header file should |
| 17390 | include qwebkitglobal.h. Define the QT_BEGIN_NAMESPACE and QT_END_NAMESPACE |
| 17391 | when we are building everything < 4.4.0 and don't have them defined. |
| 17392 | |
| 17393 | * kjs/testkjs.pro: |
| 17394 | |
| 17395 | 2008-04-19 Matt Lilek <webkit@mattlilek.com> |
| 17396 | |
| 17397 | Not reviewed, Windows build fix - copy the profiler headers in all |
| 17398 | configurations, not just Debug_Internal. |
| 17399 | |
| 17400 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 17401 | |
| 17402 | 2008-04-19 Mike Hommey <glandium@debian.org> |
| 17403 | |
| 17404 | Reviewed by Alp Toker. |
| 17405 | |
| 17406 | Don't build testkjs with rpath. |
| 17407 | |
| 17408 | * GNUmakefile.am: |
| 17409 | |
| 17410 | 2008-04-18 Kevin Ollivier <kevino@theolliviers.com> |
| 17411 | |
| 17412 | wx build fixes. Rename LocalStorage.h to LocalStorageEntry.h |
| 17413 | to avoid header detection issues between WebCore/storage/LocalStorage.h |
| 17414 | and it, and add $(PROFILER_SOURCES) to the wx JSCore build. |
| 17415 | |
| 17416 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 17417 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 17418 | * jscore.bkl: |
| 17419 | * kjs/ExecState.h: |
| 17420 | * kjs/JSVariableObject.h: |
| 17421 | * kjs/LocalStorage.h: Removed. |
| 17422 | * kjs/LocalStorageEntry.h: Copied from JavaScriptCore/kjs/LocalStorage.h. |
| 17423 | * kjs/function.h: |
| 17424 | |
| 17425 | 2008-04-18 Jan Michael Alonzo <jmalonzo@unpluggable.com> |
| 17426 | |
| 17427 | Reviewed by Alp Toker. |
| 17428 | |
| 17429 | http://bugs.webkit.org/show_bug.cgi?id=16620 |
| 17430 | [GTK] Autotools make dist and make check support |
| 17431 | |
| 17432 | Cleanups. |
| 17433 | |
| 17434 | * GNUmakefile.am: |
| 17435 | |
| 17436 | 2008-04-18 Jon Honeycutt <jhoneycutt@apple.com> |
| 17437 | |
| 17438 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Windows |
| 17439 | build fix. |
| 17440 | |
| 17441 | 2008-04-11 Mark Rowe <mrowe@apple.com> |
| 17442 | |
| 17443 | Rubber-stamped by Antti Koivisto. |
| 17444 | |
| 17445 | Silence GCC 4.3 warnings by removing extraneous consts. |
| 17446 | |
| 17447 | * kjs/ustring.cpp: |
| 17448 | * kjs/ustring.h: |
| 17449 | |
| 17450 | 2008-04-18 Kevin McCullough <kmccullough@apple.com> |
| 17451 | |
| 17452 | Reviewed by Sam. |
| 17453 | |
| 17454 | -<rdar://problem/5770054> JavaScript profiler (10928) |
| 17455 | - Use Deque instead of Vector since the profiler uses prepend a lot |
| 17456 | and deque is faster at that. |
| 17457 | |
| 17458 | * profiler/FunctionCallProfile.h: |
| 17459 | (KJS::FunctionCallProfile::milliSecs): Corrected the name to match |
| 17460 | its output. |
| 17461 | * wtf/Deque.h: |
| 17462 | (WTF::deleteAllValues): |
| 17463 | |
| 17464 | 2008-04-18 Kevin McCullough <kmccullough@apple.com> |
| 17465 | |
| 17466 | Reviewed by Sam and Adam. |
| 17467 | |
| 17468 | -<rdar://problem/5770054> JavaScript profiler (10928) |
| 17469 | - Cleaned up the header file and made some functions static, added |
| 17470 | a new, sane, printing function, and fixed a few minor bugs. |
| 17471 | |
| 17472 | * JavaScriptCore.exp: |
| 17473 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 17474 | * profiler/FunctionCallProfile.cpp: |
| 17475 | (KJS::FunctionCallProfile::didExecute): Removed assertion that time is |
| 17476 | > 0 because at ms resolution that may not be true and only cross- |
| 17477 | platform way to get time differences is in ms. |
| 17478 | (KJS::FunctionCallProfile::printDataInspectorStyle): Added a new |
| 17479 | printing function for dumping data in a sane style. |
| 17480 | (KJS::FunctionCallProfile::printDataSampleStyle): Fixed a bug where we |
| 17481 | displayed too much precision when printing our floats. Also added logic |
| 17482 | to make sure we don't display 0 because that doesn't make sense for a |
| 17483 | sampling profile. |
| 17484 | * profiler/FunctionCallProfile.h: |
| 17485 | * profiler/Profiler.cpp: Moved functions that could be static into the |
| 17486 | implementation, and chaned the ASSERTs to early returns. I did this |
| 17487 | because console.profile() is a JS function and so was being profiled |
| 17488 | but asserting because the profiler had not been started! In the future |
| 17489 | I would like to put the ASSERTs back and not profile the calls to |
| 17490 | console.profile() and console.profileEnd(). |
| 17491 | (KJS::Profiler::willExecute): |
| 17492 | (KJS::Profiler::didExecute): |
| 17493 | (KJS::getStackNames): Fixed a bug where the wrong ExecState was being |
| 17494 | used. |
| 17495 | (KJS::getFunctionName): |
| 17496 | (KJS::Profiler::printDataInspectorStyle): |
| 17497 | * profiler/Profiler.h: |
| 17498 | |
| 17499 | 2008-04-18 Alexey Proskuryakov <ap@webkit.org> |
| 17500 | |
| 17501 | Reviewed by Darin. |
| 17502 | |
| 17503 | Fix leaks during plugin tests (which actually excercise background JS), and potential |
| 17504 | PAC brokenness that was not reported, but very likely. |
| 17505 | |
| 17506 | The leaks shadowed a bigger problem with Identifier destruction. Identifier::remove involves |
| 17507 | an IdentifierTable lookup, which is now a per-thread instance. Since garbage collection can |
| 17508 | currently happen on a different thread than allocation, a wrong table was used. |
| 17509 | |
| 17510 | No measurable change on SunSpider total, ~1% variation on individual tests. |
| 17511 | |
| 17512 | * kjs/ustring.cpp: |
| 17513 | (KJS::UString::Rep::create): |
| 17514 | (KJS::UString::Rep::destroy): |
| 17515 | * kjs/ustring.h: |
| 17516 | Replaced isIdentifier with a pointer to IdentifierTable, so that destruction can be done |
| 17517 | correctly. Took one bit from reportedCost, to avoid making UString::Rep larger (performance |
| 17518 | effect was measurable on SunSpider). |
| 17519 | |
| 17520 | * kjs/identifier.cpp: |
| 17521 | (KJS::IdentifierTable::IdentifierTable): |
| 17522 | (KJS::IdentifierTable::~IdentifierTable): |
| 17523 | (KJS::IdentifierTable::add): |
| 17524 | (KJS::IdentifierTable::remove): |
| 17525 | Make IdentifierTable a real class. Its destructor needs to zero out outstanding references, |
| 17526 | because some identifiers may briefly outlive it during thread destruction, and we don't want |
| 17527 | them to use their stale pointers. |
| 17528 | |
| 17529 | (KJS::LiteralIdentifierTable): |
| 17530 | (KJS::Identifier::add): |
| 17531 | Now that LiteralIdentifierTable is per-thread and can be destroyed not just during application |
| 17532 | shutdown, it is not appropriate to simply bump refcount for strings that get there; changed |
| 17533 | the table to hold RefPtrs. |
| 17534 | |
| 17535 | (KJS::CStringTranslator::translate): |
| 17536 | (KJS::UCharBufferTranslator::translate): |
| 17537 | (KJS::Identifier::addSlowCase): |
| 17538 | (KJS::Identifier::remove): |
| 17539 | * kjs/identifier.h: |
| 17540 | (KJS::Identifier::add): |
| 17541 | Use and update UString::Rep::identifierTable as appropriate. Updating it is now done in |
| 17542 | IdentifierTable::add, not in translators. |
| 17543 | |
| 17544 | 2008-04-18 Alexey Proskuryakov <ap@webkit.org> |
| 17545 | |
| 17546 | Reviewed by Darin. |
| 17547 | |
| 17548 | Get rid of static compareWithCompareFunctionArguments in array_instance.cpp. |
| 17549 | |
| 17550 | No change on SunSpider, CelticKane or iBench JavaScript. It is probable that in some cases, |
| 17551 | merge sort is still faster, but more investigation is needed to determine a new cutoff. |
| 17552 | Or possibly, it would be better to do what FIXME says (change to tree sort). |
| 17553 | |
| 17554 | Also, made arguments a local variable - not sure why it was a member of |
| 17555 | CompareWithCompareFunctionArguments. |
| 17556 | |
| 17557 | * kjs/array_instance.cpp: |
| 17558 | (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments): |
| 17559 | (KJS::CompareWithCompareFunctionArguments::operator()): |
| 17560 | (KJS::ArrayInstance::sort): |
| 17561 | |
| 17562 | 2008-04-18 Simon Hausmann <hausmann@webkit.org> |
| 17563 | |
| 17564 | Build fix for gcc 4.3. Include stdio.h for printf. |
| 17565 | |
| 17566 | * profiler/FunctionCallProfile.cpp: |
| 17567 | * profiler/Profiler.cpp: |
| 17568 | |
| 17569 | 2008-04-17 Jon Honeycutt <jhoneycutt@apple.com> |
| 17570 | |
| 17571 | Reviewed by mrowe. |
| 17572 | |
| 17573 | * wtf/Platform.h: Add HAVE_ACCESSIBILITY to Platform.h. |
| 17574 | |
| 17575 | 2008-04-17 Alexey Proskuryakov <ap@webkit.org> |
| 17576 | |
| 17577 | Reviewed by Maciej. |
| 17578 | |
| 17579 | Thread static data destructors are not guaranteed to be called in any particular order; |
| 17580 | turn ThreadSpecific into a phoenix-style singleton to avoid accessing freed memory when |
| 17581 | deleted objects are interdependent (e.g. CommonIdentifiers and internal identifier tables). |
| 17582 | |
| 17583 | No change on SunSpider. |
| 17584 | |
| 17585 | * wtf/ThreadSpecific.h: |
| 17586 | (WTF::ThreadSpecific::Data::Data): |
| 17587 | (WTF::::get): |
| 17588 | (WTF::::set): |
| 17589 | (WTF::::destroy): |
| 17590 | |
| 17591 | 2008-04-15 Srinivas Rao. M Hamse <msrinirao@gmail.com> |
| 17592 | |
| 17593 | Reviewed by Maciej Stachowiak. |
| 17594 | |
| 17595 | - gcc 3.x build fix |
| 17596 | |
| 17597 | * kjs/nodes.h: CallerType definition made public for gcc 3.x compilation |
| 17598 | |
| 17599 | 2008-04-16 Brady Eidson <beidson@apple.com> |
| 17600 | |
| 17601 | Reviewed by Sam Weinig |
| 17602 | |
| 17603 | Change ThreadSafeShared to act like RefCounted by starting out with a single ref by default |
| 17604 | |
| 17605 | * wtf/Threading.h: |
| 17606 | (WTF::ThreadSafeShared::ThreadSafeShared): |
| 17607 | |
| 17608 | 2008-04-16 Sam Weinig <sam@webkit.org> |
| 17609 | |
| 17610 | Reviewed by Geoffrey Garen. |
| 17611 | |
| 17612 | - To keep the behavior of the WebKit and JavaScriptCore API's the same, |
| 17613 | we need to hide the fact that the global object and the window object |
| 17614 | are no longer the same thing, and the the global object now changes on |
| 17615 | navigations. To do this, only the wrapper should ever be exposed. This |
| 17616 | fixes the two remaining spots where the internal global object is exposed, |
| 17617 | the windowScriptObject returned from [WebFrame windowObject] and the object |
| 17618 | return by calling JSContextGetGlobalObject on [WebFrame globalContext]. |
| 17619 | |
| 17620 | * API/JSContextRef.cpp: |
| 17621 | (JSContextGetGlobalObject): |
| 17622 | This is a bit of a hack, this returns the "this" representation of the globalObject |
| 17623 | which will be the WrapperWindow for WebCore and the globalObject for non-WebCore. |
| 17624 | |
| 17625 | * API/JSObjectRef.cpp: |
| 17626 | (JSObjectSetProperty): |
| 17627 | Call the new putWithAttributes method instead of relying on lower-level calls. |
| 17628 | This is needed so that the window wrapper can forward the calls. |
| 17629 | |
| 17630 | * JavaScriptCore.exp: |
| 17631 | * kjs/Activation.h: |
| 17632 | * kjs/JSGlobalObject.cpp: |
| 17633 | (KJS::JSGlobalObject::putWithAttributes): |
| 17634 | * kjs/JSGlobalObject.h: |
| 17635 | * kjs/JSVariableObject.h: |
| 17636 | (KJS::JSVariableObject::symbolTablePutWithAttributes): |
| 17637 | * kjs/function.cpp: |
| 17638 | (KJS::ActivationImp::putWithAttributes): |
| 17639 | * kjs/nodes.cpp: |
| 17640 | (KJS::ConstDeclNode::handleSlowCase): |
| 17641 | (KJS::ConstDeclNode::evaluateSingle): |
| 17642 | (KJS::EvalNode::processDeclarations): |
| 17643 | * kjs/object.cpp: |
| 17644 | (KJS::JSObject::putWithAttributes): |
| 17645 | * kjs/object.h: |
| 17646 | Rename initializeVariable to putWithAttributes and move it down to JSObject so it |
| 17647 | can be used for JSObjectSetProperty. |
| 17648 | |
| 17649 | 2008-04-16 Kevin McCullough <kmccullough@apple.com> |
| 17650 | |
| 17651 | Reviewed by Sam and Geoff. |
| 17652 | |
| 17653 | -<rdar://problem/5770054> JavaScript profiler (10928) |
| 17654 | Inital profiler prototype |
| 17655 | |
| 17656 | * GNUmakefile.am: Added new files to project |
| 17657 | * JavaScriptCore.pri: Ditto |
| 17658 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto |
| 17659 | * JavaScriptCore.xcodeproj/project.pbxproj: Ditto |
| 17660 | * JavaScriptCoreSources.bkl: Ditto |
| 17661 | * kjs/config.h: Put compiling flag in here. |
| 17662 | * kjs/function.cpp: Instrument calling the function eval(). |
| 17663 | (KJS::eval): |
| 17664 | * kjs/interpreter.cpp: Instrument evaluating global scopes. |
| 17665 | (KJS::Interpreter::evaluate): |
| 17666 | * kjs/object.cpp: Instrument JS function calls. |
| 17667 | (KJS::JSObject::call): |
| 17668 | * profiler: Added. |
| 17669 | * profiler/FunctionCallProfile.cpp: Added. |
| 17670 | (KJS::FunctionCallProfile::FunctionCallProfile): |
| 17671 | (KJS::FunctionCallProfile::~FunctionCallProfile): |
| 17672 | (KJS::FunctionCallProfile::willExecute): Call right before the JS function or executing context is executed to start the profiler's timer. |
| 17673 | (KJS::FunctionCallProfile::didExecute): Call right after the JS function or executing context is executed to stop the profiler's timer. |
| 17674 | (KJS::FunctionCallProfile::addChild): Add a child to the current FunctionCallProfile if it isn't already a child of the current FunctionalCallProfile. |
| 17675 | (KJS::FunctionCallProfile::findChild): Return the child that matches the given name if there is one. |
| 17676 | (KJS::FunctionCallProfile::printDataSampleStyle): Print the current profiled information in a format that matches sample's output. |
| 17677 | * profiler/FunctionCallProfile.h: Added. |
| 17678 | (KJS::FunctionCallProfile::FunctionCallProfile): |
| 17679 | (KJS::FunctionCallProfile::~FunctionCallProfile): |
| 17680 | (KJS::FunctionCallProfile::functionName): |
| 17681 | (KJS::FunctionCallProfile::microSecs): |
| 17682 | * profiler/Profiler.cpp: Added. |
| 17683 | (KJS::Profiler::profiler): |
| 17684 | (KJS::Profiler::sharedProfiler): Return global singleton (may change due to multi-threading concerns) |
| 17685 | (KJS::Profiler::startProfiling): Don't start collecting profiling information until the user starts the profiler. Also don't clear old prfiled data until the profiler is restarted. |
| 17686 | (KJS::Profiler::stopProfiling): Stop collecting profile information. |
| 17687 | (KJS::Profiler::willExecute): Same as above. |
| 17688 | (KJS::Profiler::didExecute): Same as above. |
| 17689 | (KJS::Profiler::insertStackNamesInTree): Follow the stack of the given names and if a sub-stack is not in the current tree, add it. |
| 17690 | (KJS::Profiler::getStackNames): Get the names from the different passed in parameters and order them as a stack. |
| 17691 | (KJS::Profiler::getFunctionName): Get the function name from the given parameter. |
| 17692 | (KJS::Profiler::printDataSampleStyle): Print the current profiled information in a format that matches sample's output. |
| 17693 | (KJS::Profiler::debugLog): |
| 17694 | * profiler/Profiler.h: Added. |
| 17695 | (KJS::Profiler::Profiler): |
| 17696 | |
| 17697 | 2008-04-16 Sam Weinig <sam@webkit.org> |
| 17698 | |
| 17699 | Reviewed by Darin Adler. |
| 17700 | |
| 17701 | - Remove kjs_ prefix from strtod, dtoa, and freedtoa and put it |
| 17702 | in the KJS namespace. |
| 17703 | - Make strtod, dtoa, and freedtoa c++ functions instead of extern "C". |
| 17704 | - Remove mode switching from dtoa. ~2% improvement on test 26. |
| 17705 | - Removes all unnecessary #defines from dtoa code. |
| 17706 | |
| 17707 | * JavaScriptCore.exp: |
| 17708 | * kjs/dtoa.cpp: |
| 17709 | (KJS::ulp): |
| 17710 | (KJS::b2d): |
| 17711 | (KJS::d2b): |
| 17712 | (KJS::ratio): |
| 17713 | (KJS::strtod): |
| 17714 | (KJS::freedtoa): |
| 17715 | (KJS::dtoa): |
| 17716 | * kjs/dtoa.h: |
| 17717 | * kjs/function.cpp: |
| 17718 | (KJS::parseInt): |
| 17719 | * kjs/lexer.cpp: |
| 17720 | (KJS::Lexer::lex): |
| 17721 | * kjs/number_object.cpp: |
| 17722 | (KJS::integer_part_noexp): |
| 17723 | (KJS::numberProtoFuncToExponential): |
| 17724 | * kjs/ustring.cpp: |
| 17725 | (KJS::UString::from): |
| 17726 | (KJS::UString::toDouble): |
| 17727 | |
| 17728 | 2008-04-16 Alexey Proskuryakov <ap@webkit.org> |
| 17729 | |
| 17730 | Reviewed by Darin. |
| 17731 | |
| 17732 | Get rid of static execForCompareByStringForQSort in array_instance.cpp. |
| 17733 | |
| 17734 | No change on SunSpider, CelticKane or iBench JavaScript. |
| 17735 | |
| 17736 | * kjs/array_instance.cpp: |
| 17737 | (KJS::ArraySortComparator::ArraySortComparator): |
| 17738 | (KJS::ArraySortComparator::operator()): |
| 17739 | (KJS::ArrayInstance::sort): |
| 17740 | Switch slow case to std::sort, so that ExecState can be passed in a comparator. |
| 17741 | |
| 17742 | 2008-04-16 Alexey Proskuryakov <ap@webkit.org> |
| 17743 | |
| 17744 | Reviewed by Adam Roben. |
| 17745 | |
| 17746 | MSVC build fix. |
| 17747 | |
| 17748 | * kjs/CommonIdentifiers.cpp: |
| 17749 | * kjs/CommonIdentifiers.h: |
| 17750 | * kjs/Parser.cpp: |
| 17751 | * kjs/Parser.h: |
| 17752 | * kjs/identifier.cpp: |
| 17753 | * kjs/lexer.h: |
| 17754 | * wtf/ThreadSpecific.h: |
| 17755 | |
| 17756 | 2008-04-16 Alexey Proskuryakov <ap@webkit.org> |
| 17757 | |
| 17758 | Build fix. |
| 17759 | |
| 17760 | * kjs/date_object.cpp: |
| 17761 | * kjs/date_object.h: |
| 17762 | Don't include DateMath.h from date_object.h, as the latter is used from WebCore, while |
| 17763 | where the former is not available. |
| 17764 | |
| 17765 | 2008-04-16 Holger Hans Peter Freyther <zecke@selfish.org> |
| 17766 | |
| 17767 | Unreviewed build fix for MSVC. It does not want to have |
| 17768 | WTF in the KJS namespace. |
| 17769 | |
| 17770 | * kjs/CommonIdentifiers.h: |
| 17771 | |
| 17772 | 2008-04-16 Holger Hans Peter Freyther <zecke@selfish.org> |
| 17773 | |
| 17774 | Unreviewed build fix for gcc. |
| 17775 | |
| 17776 | ::msToGregorianDateTime is not known to it. |
| 17777 | |
| 17778 | * kjs/date_object.cpp: |
| 17779 | (KJS::DateInstance::msToGregorianDateTime): |
| 17780 | |
| 17781 | 2008-04-16 Alexey Proskuryakov <ap@webkit.org> |
| 17782 | |
| 17783 | Reviewed by Oliver Hunt. |
| 17784 | |
| 17785 | Initialize threadMapMutex safely (as already done in ThreadingWin). |
| 17786 | |
| 17787 | * wtf/ThreadingGtk.cpp: |
| 17788 | (WTF::threadMapMutex): |
| 17789 | (WTF::initializeThreading): |
| 17790 | * wtf/ThreadingPthreads.cpp: |
| 17791 | (WTF::threadMapMutex): |
| 17792 | (WTF::initializeThreading): |
| 17793 | |
| 17794 | 2008-04-16 Alexey Proskuryakov <ap@webkit.org> |
| 17795 | |
| 17796 | Reviewed by Adam Roben. |
| 17797 | |
| 17798 | Cache Gregorian date/time structure on DateInstance objects for 1.027x SunSpider speedup |
| 17799 | (1.65x on date-format-xparb, 1.13x on date-format-tofte). |
| 17800 | |
| 17801 | * kjs/DateMath.h: |
| 17802 | (KJS::GregorianDateTime::copyFrom): Added. It presumably makes sense to keep GregorianDateTime |
| 17803 | Noncopyable, so it's not just operator=. |
| 17804 | |
| 17805 | * kjs/date_object.h: Added a per-object cache. |
| 17806 | |
| 17807 | * kjs/date_object.cpp: |
| 17808 | (KJS::DateInstance::DateInstance): |
| 17809 | (KJS::DateInstance::msToGregorianDateTime): |
| 17810 | (KJS::dateProtoFuncToString): |
| 17811 | (KJS::dateProtoFuncToUTCString): |
| 17812 | (KJS::dateProtoFuncToDateString): |
| 17813 | (KJS::dateProtoFuncToTimeString): |
| 17814 | (KJS::dateProtoFuncToLocaleString): |
| 17815 | (KJS::dateProtoFuncToLocaleDateString): |
| 17816 | (KJS::dateProtoFuncToLocaleTimeString): |
| 17817 | (KJS::dateProtoFuncGetFullYear): |
| 17818 | (KJS::dateProtoFuncGetUTCFullYear): |
| 17819 | (KJS::dateProtoFuncToGMTString): |
| 17820 | (KJS::dateProtoFuncGetMonth): |
| 17821 | (KJS::dateProtoFuncGetUTCMonth): |
| 17822 | (KJS::dateProtoFuncGetDate): |
| 17823 | (KJS::dateProtoFuncGetUTCDate): |
| 17824 | (KJS::dateProtoFuncGetDay): |
| 17825 | (KJS::dateProtoFuncGetUTCDay): |
| 17826 | (KJS::dateProtoFuncGetHours): |
| 17827 | (KJS::dateProtoFuncGetUTCHours): |
| 17828 | (KJS::dateProtoFuncGetMinutes): |
| 17829 | (KJS::dateProtoFuncGetUTCMinutes): |
| 17830 | (KJS::dateProtoFuncGetSeconds): |
| 17831 | (KJS::dateProtoFuncGetUTCSeconds): |
| 17832 | (KJS::dateProtoFuncGetTimezoneOffset): |
| 17833 | (KJS::setNewValueFromTimeArgs): |
| 17834 | (KJS::setNewValueFromDateArgs): |
| 17835 | (KJS::dateProtoFuncSetYear): |
| 17836 | (KJS::dateProtoFuncGetYear): |
| 17837 | Use the cache when converting. |
| 17838 | |
| 17839 | 2008-04-16 Alexey Proskuryakov <ap@webkit.org> |
| 17840 | |
| 17841 | Reviewed by Darin. |
| 17842 | |
| 17843 | Implement an abstraction for thread-specific storage, use it to get rid of some static objects. |
| 17844 | |
| 17845 | SunSpider results were not conclusive, possibly up to 0.2% slowdown. |
| 17846 | |
| 17847 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 17848 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 17849 | Added ThreadSpecific.h |
| 17850 | |
| 17851 | * wtf/ThreadSpecific.h: Added. |
| 17852 | (WTF::::ThreadSpecific): |
| 17853 | (WTF::::~ThreadSpecific): |
| 17854 | (WTF::::get): |
| 17855 | (WTF::::set): |
| 17856 | (WTF::::destroy): |
| 17857 | (WTF::T): |
| 17858 | (WTF::::operator): |
| 17859 | Only implemented for platforms that use pthreads. |
| 17860 | |
| 17861 | * kjs/CommonIdentifiers.cpp: |
| 17862 | (KJS::CommonIdentifiers::shared): |
| 17863 | * kjs/CommonIdentifiers.h: |
| 17864 | * kjs/InitializeThreading.cpp: |
| 17865 | (KJS::initializeThreading): |
| 17866 | * kjs/Parser.cpp: |
| 17867 | (KJS::parser): |
| 17868 | * kjs/Parser.h: |
| 17869 | * kjs/identifier.cpp: |
| 17870 | (KJS::identifierTable): |
| 17871 | (KJS::literalIdentifierTable): |
| 17872 | (KJS::Identifier::initializeIdentifierThreading): |
| 17873 | * kjs/identifier.h: |
| 17874 | * kjs/lexer.cpp: |
| 17875 | (KJS::lexer): |
| 17876 | * kjs/lexer.h: |
| 17877 | Make static instances per-thread. |
| 17878 | |
| 17879 | 2008-04-15 Anders Carlsson <andersca@apple.com> |
| 17880 | |
| 17881 | Reviewed by Adam. |
| 17882 | |
| 17883 | Add ENABLE_OFFLINE_WEB_APPLICATIONS to FEATURE_DEFINES. |
| 17884 | |
| 17885 | * Configurations/JavaScriptCore.xcconfig: |
| 17886 | |
| 17887 | 2008-04-15 Andre Poenitz <andre.poenitz@trolltech.com> |
| 17888 | |
| 17889 | Reviewed by Simon. |
| 17890 | |
| 17891 | Fix compilation with Qt namespaces |
| 17892 | |
| 17893 | Qt can be configured to have all of its classes inside a specified namespaces. |
| 17894 | This is for example used in plugin/component environments like Eclipse. |
| 17895 | |
| 17896 | This change makes it possible to let the Qt port compile against a namespaced |
| 17897 | Qt by the use of macros Qt provides to properly forward declare Qt classes in |
| 17898 | the namespace. |
| 17899 | |
| 17900 | * wtf/unicode/qt4/UnicodeQt4.h: |
| 17901 | |
| 17902 | 2008-04-14 Anders Carlsson <andersca@apple.com> |
| 17903 | |
| 17904 | Reviewed by Adam. |
| 17905 | |
| 17906 | Don't leak the prototype class. |
| 17907 | |
| 17908 | * API/JSClassRef.cpp: |
| 17909 | (OpaqueJSClass::create): |
| 17910 | |
| 17911 | 2008-04-14 Steve Falkenburg <sfalken@apple.com> |
| 17912 | |
| 17913 | Fix build. |
| 17914 | |
| 17915 | * wtf/ThreadingWin.cpp: |
| 17916 | |
| 17917 | 2008-04-14 Alexey Proskuryakov <ap@webkit.org> |
| 17918 | |
| 17919 | Reviewed by Adam Roben. |
| 17920 | |
| 17921 | https://bugs.webkit.org/show_bug.cgi?id=18488 |
| 17922 | FastMalloc doesn't release thread-specific data on Windows |
| 17923 | |
| 17924 | * wtf/ThreadingWin.cpp: |
| 17925 | (WTF::threadMapMutex): (WTF::initializeThreading): Call threadMapMutex once to initialize the static safely. |
| 17926 | (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation): Added a structure to wrap thread entry point and arguments. |
| 17927 | (WTF::wtfThreadEntryPoint): Make sure to end all WTF threads with pthread_exit(), to give pthreads-win32 a chance to call |
| 17928 | destructors of thread-specific data. |
| 17929 | (WTF::createThread): Use _beginthreadex instead of CreateThread, because MSDN says so. Also removed a call to CreateEvent, |
| 17930 | for which I could see no reason at all. |
| 17931 | |
| 17932 | 2008-04-14 Alexey Proskuryakov <ap@webkit.org> |
| 17933 | |
| 17934 | Touched a file to make JavaScriptCore.vcproj rebuild. |
| 17935 | |
| 17936 | * wtf/MathExtras.h: |
| 17937 | |
| 17938 | 2008-04-14 Adam Roben <aroben@apple.com> |
| 17939 | |
| 17940 | Windows build fix |
| 17941 | |
| 17942 | Rubberstamped by Alexey Proskuryakov. |
| 17943 | |
| 17944 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable |
| 17945 | the "potentially uninitialized variable" warning for grammar.cpp, as |
| 17946 | it seems to be incorrect. yylval gets initialized by the lexer, but |
| 17947 | MSVC doesn't seem to understand this. |
| 17948 | |
| 17949 | 2008-04-11 Antti Koivisto <antti@apple.com> |
| 17950 | |
| 17951 | Reviewed by Maciej. |
| 17952 | |
| 17953 | Add default hash for pairs of hashable types. |
| 17954 | |
| 17955 | * wtf/HashFunctions.h: |
| 17956 | (WTF::PairHash::hash): |
| 17957 | (WTF::PairHash::equal): |
| 17958 | (WTF::): |
| 17959 | |
| 17960 | 2008-04-11 Alexey Proskuryakov <ap@webkit.org> |
| 17961 | |
| 17962 | Reviewed by Geoff. |
| 17963 | |
| 17964 | Make DateMath.cpp thread safe. |
| 17965 | |
| 17966 | No measurable change on SunSpider (should be a very small speedup). |
| 17967 | |
| 17968 | * kjs/DateMath.cpp: |
| 17969 | (KJS::mimimumYearForDST): (KJS::equivalentYearForDST): Got rid of double caching of the |
| 17970 | same precomputed value. |
| 17971 | (KJS::calculateUTCOffset): (KJS::getUTCOffset): Factored actual UTC offset calculation code |
| 17972 | out of getUTCOffset(), and notification setup into initDateMath(). |
| 17973 | |
| 17974 | (KJS::initDateMath): Added. |
| 17975 | |
| 17976 | * kjs/DateMath.h: |
| 17977 | * kjs/InitializeThreading.cpp: |
| 17978 | (KJS::initializeThreading): |
| 17979 | Added initDateMath(). |
| 17980 | |
| 17981 | 2008-04-11 Alexey Proskuryakov <ap@webkit.org> |
| 17982 | |
| 17983 | Windows build fix. |
| 17984 | |
| 17985 | * kjs/grammar.y: |
| 17986 | |
| 17987 | 2008-04-11 Alexey Proskuryakov <ap@webkit.org> |
| 17988 | |
| 17989 | Tiger build fix. Forward declaring a union didn't work for whatever reason, make the |
| 17990 | parameters void*. |
| 17991 | |
| 17992 | * kjs/grammar.y: |
| 17993 | * kjs/lexer.cpp: |
| 17994 | (kjsyylex): |
| 17995 | (KJS::Lexer::lex): |
| 17996 | * kjs/lexer.h: |
| 17997 | |
| 17998 | 2008-04-11 Alexey Proskuryakov <ap@webkit.org> |
| 17999 | |
| 18000 | Reviewed by Geoff. |
| 18001 | |
| 18002 | Generate a pure (re-entrant) parser with Bison. |
| 18003 | |
| 18004 | No change on SunSpider. |
| 18005 | |
| 18006 | * kjs/Parser.cpp: |
| 18007 | (KJS::Parser::parse): |
| 18008 | * kjs/grammar.y: |
| 18009 | * kjs/lexer.cpp: |
| 18010 | (kjsyylex): |
| 18011 | (KJS::Lexer::lex): |
| 18012 | * kjs/lexer.h: |
| 18013 | Pass state as function arguments, instead of global data. Don't call lexer() as often as |
| 18014 | before, as this function is about to become slower due to thread-specific storage. |
| 18015 | |
| 18016 | * kjs/function.cpp: |
| 18017 | (KJS::isStrWhiteSpace): Don't call isSeparatorSpace() for 8-bit characters, as these are |
| 18018 | already taken care of. This is a small speedup, compensating for a small slowdown caused |
| 18019 | by switching Bison mode. |
| 18020 | |
| 18021 | 2008-04-10 Alexey Proskuryakov <ap@webkit.org> |
| 18022 | |
| 18023 | Reviewed by Geoff. |
| 18024 | |
| 18025 | https://bugs.webkit.org/show_bug.cgi?id=18402 |
| 18026 | REGRESSION: visited element handling is incorrect in nested join/toString calls |
| 18027 | |
| 18028 | No change on SunSpider total, possibly a tiny improvement (about 0.1%). |
| 18029 | |
| 18030 | Test: fast/js/array-tostring-and-join.html |
| 18031 | |
| 18032 | * kjs/JSGlobalObject.h: |
| 18033 | (KJS::JSGlobalObject::visitedElements): Store visited elements HashSet here, making it |
| 18034 | common to toString/toLocalizedString/join again. |
| 18035 | |
| 18036 | * kjs/array_object.cpp: |
| 18037 | (KJS::arrayProtoFuncToString): |
| 18038 | (KJS::arrayProtoFuncToLocaleString): |
| 18039 | (KJS::arrayProtoFuncJoin): |
| 18040 | Got rid of static variables. Replaced UString with Vector to avoid O(n^2) behavior and |
| 18041 | regain performance. |
| 18042 | |
| 18043 | * wtf/Vector.h: |
| 18044 | (WTF::::resize): |
| 18045 | (WTF::::grow): |
| 18046 | (WTF::::reserveCapacity): |
| 18047 | (WTF::::append): |
| 18048 | (WTF::::insert): |
| 18049 | Added null checks, so that Vector methods don't crash when out of memory. The caller should |
| 18050 | check that data pointer is not null before proceeding. |
| 18051 | |
| 18052 | 2008-04-10 Mark Rowe <mrowe@apple.com> |
| 18053 | |
| 18054 | Reviewed by Maciej Stachowiak. |
| 18055 | |
| 18056 | Fix https://bugs.webkit.org/show_bug.cgi?id=18367 and the many dupes. |
| 18057 | Bug 18367: Crash during celtic kane js speed 2007 test |
| 18058 | |
| 18059 | GCC 4.2 on x86_64 Linux decided to reorder the local variables in markCurrentThreadConservatively's |
| 18060 | stack frame. This lead to the range of addresses the collector treated as stack to exclude the |
| 18061 | contents of volatile registers that markCurrentThreadConservatively forces onto the stack. This was |
| 18062 | leading to objects being prematurely collected if the only reference to them was via a register at |
| 18063 | the time a collection occurred. |
| 18064 | |
| 18065 | The fix for this is to move the calculation of the top of the stack into a NEVER_INLINE function |
| 18066 | that is called from markCurrentThreadConservatively. This forces the dummy variable we use for |
| 18067 | determining the top of stack to be in a different stack frame which prevents the compiler from |
| 18068 | reordering it relative to the registers that markCurrentThreadConservatively forces onto the stack. |
| 18069 | |
| 18070 | * kjs/collector.cpp: |
| 18071 | (KJS::Collector::markCurrentThreadConservativelyInternal): |
| 18072 | (KJS::Collector::markCurrentThreadConservatively): |
| 18073 | * kjs/collector.h: |
| 18074 | |
| 18075 | 2008-04-10 Adam Roben <aroben@apple.com> |
| 18076 | |
| 18077 | VC++ Express build fix |
| 18078 | |
| 18079 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Link against user32.lib so |
| 18080 | that anyone who links against WTF.lib will get user32.lib |
| 18081 | automatically. |
| 18082 | |
| 18083 | 2008-04-09 Adam Roben <aroben@apple.com> |
| 18084 | |
| 18085 | VC++ Express build fix |
| 18086 | |
| 18087 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Link against |
| 18088 | user32.lib. |
| 18089 | |
| 18090 | 2008-04-09 Adam Roben <aroben@apple.com> |
| 18091 | |
| 18092 | Build fix |
| 18093 | |
| 18094 | * JavaScriptCore.exp: Export isMainThread. |
| 18095 | |
| 18096 | 2008-04-09 Adam Roben <aroben@apple.com> |
| 18097 | |
| 18098 | Build fix |
| 18099 | |
| 18100 | * wtf/AlwaysInline.h: Make sure to #include Platform.h before using |
| 18101 | the macros it defines. |
| 18102 | |
| 18103 | 2008-04-08 Mark Rowe <mrowe@apple.com> |
| 18104 | |
| 18105 | Export WTF::initializeThreading() from JavaScriptCore. |
| 18106 | |
| 18107 | * JavaScriptCore.exp: |
| 18108 | |
| 18109 | 2008-04-04 Sam Weinig <sam@webkit.org> |
| 18110 | |
| 18111 | Reviewed by Geoffrey Garen. |
| 18112 | |
| 18113 | First step in implementing the "split window" |
| 18114 | |
| 18115 | - Add a GlobalThisValue to ExecState which should be used |
| 18116 | in places that used to implement the "use the global object |
| 18117 | as this if null" rule. |
| 18118 | - Factor out lookupGetter/lookupSetter into virtual methods |
| 18119 | on JSObject so that they can be forwarded. |
| 18120 | - Make defineGetter/defineSetter virtual methods for the same |
| 18121 | reason. |
| 18122 | - Have PrototypeReflexiveFunction store the globalObject used |
| 18123 | to create it so that it can be used to get the correct thisObject |
| 18124 | for eval. |
| 18125 | |
| 18126 | * API/JSObjectRef.cpp: |
| 18127 | (JSObjectCallAsFunction): |
| 18128 | * JavaScriptCore.exp: |
| 18129 | * kjs/Activation.h: |
| 18130 | * kjs/ExecState.cpp: |
| 18131 | (KJS::ExecState::ExecState): |
| 18132 | (KJS::GlobalExecState::GlobalExecState): |
| 18133 | * kjs/ExecState.h: |
| 18134 | (KJS::ExecState::globalThisValue): |
| 18135 | * kjs/ExecStateInlines.h: |
| 18136 | (KJS::ExecState::ExecState): |
| 18137 | (KJS::FunctionExecState::FunctionExecState): |
| 18138 | * kjs/JSGlobalObject.cpp: |
| 18139 | (KJS::JSGlobalObject::reset): |
| 18140 | (KJS::JSGlobalObject::toGlobalObject): |
| 18141 | * kjs/JSGlobalObject.h: |
| 18142 | (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): |
| 18143 | (KJS::JSGlobalObject::JSGlobalObject): |
| 18144 | * kjs/array_instance.cpp: |
| 18145 | (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments): |
| 18146 | (KJS::compareWithCompareFunctionForQSort): |
| 18147 | * kjs/array_object.cpp: |
| 18148 | (KJS::arrayProtoFuncSort): |
| 18149 | (KJS::arrayProtoFuncFilter): |
| 18150 | (KJS::arrayProtoFuncMap): |
| 18151 | (KJS::arrayProtoFuncEvery): |
| 18152 | (KJS::arrayProtoFuncForEach): |
| 18153 | (KJS::arrayProtoFuncSome): |
| 18154 | * kjs/function.cpp: |
| 18155 | (KJS::FunctionImp::callAsFunction): |
| 18156 | (KJS::ActivationImp::toThisObject): |
| 18157 | (KJS::globalFuncEval): |
| 18158 | (KJS::PrototypeReflexiveFunction::PrototypeReflexiveFunction): |
| 18159 | (KJS::PrototypeReflexiveFunction::mark): |
| 18160 | * kjs/function.h: |
| 18161 | (KJS::PrototypeReflexiveFunction::cachedGlobalObject): |
| 18162 | * kjs/function_object.cpp: |
| 18163 | (KJS::functionProtoFuncApply): |
| 18164 | (KJS::functionProtoFuncCall): |
| 18165 | * kjs/nodes.cpp: |
| 18166 | (KJS::ExpressionNode::resolveAndCall): |
| 18167 | (KJS::FunctionCallValueNode::evaluate): |
| 18168 | (KJS::LocalVarFunctionCallNode::inlineEvaluate): |
| 18169 | (KJS::ScopedVarFunctionCallNode::inlineEvaluate): |
| 18170 | (KJS::FunctionCallBracketNode::evaluate): |
| 18171 | (KJS::FunctionCallDotNode::inlineEvaluate): |
| 18172 | * kjs/object.cpp: |
| 18173 | (KJS::JSObject::call): |
| 18174 | (KJS::JSObject::put): |
| 18175 | (KJS::tryGetAndCallProperty): |
| 18176 | (KJS::JSObject::lookupGetter): |
| 18177 | (KJS::JSObject::lookupSetter): |
| 18178 | (KJS::JSObject::toThisObject): |
| 18179 | (KJS::JSObject::toGlobalObject): |
| 18180 | (KJS::JSObject::fillGetterPropertySlot): |
| 18181 | * kjs/object.h: |
| 18182 | * kjs/object_object.cpp: |
| 18183 | (KJS::objectProtoFuncLookupGetter): |
| 18184 | (KJS::objectProtoFuncLookupSetter): |
| 18185 | * kjs/string_object.cpp: |
| 18186 | (KJS::replace): |
| 18187 | |
| 18188 | 2008-04-08 Brady Eidson <beidson@apple.com> |
| 18189 | |
| 18190 | Encourage Windows to rebuild - AGAIN... |
| 18191 | |
| 18192 | * kjs/DateMath.cpp: |
| 18193 | |
| 18194 | 2008-04-08 Adam Roben <aroben@apple.com> |
| 18195 | |
| 18196 | Mac build fix |
| 18197 | |
| 18198 | * JavaScriptCore.exp: Add callOnMainThread, and sorted the list. |
| 18199 | |
| 18200 | 2008-04-08 Brady Eidson <beidson@apple.com> |
| 18201 | |
| 18202 | Rubberstamped by Adam Roben |
| 18203 | |
| 18204 | Touch some files to *strongly* encourage Windows to rebuilt with DOM_STORAGE enabled |
| 18205 | |
| 18206 | * kjs/DateMath.cpp: |
| 18207 | |
| 18208 | 2008-04-08 Adam Roben <aroben@apple.com> |
| 18209 | |
| 18210 | Move callOnMainThread to WTF |
| 18211 | |
| 18212 | Reviewed by Alexey Proskuryakov. |
| 18213 | |
| 18214 | * GNUmakefile.am: |
| 18215 | * JavaScriptCore.pri: |
| 18216 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 18217 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 18218 | * JavaScriptCoreSources.bkl: |
| 18219 | Added new files. |
| 18220 | |
| 18221 | * wtf/MainThread.cpp: |
| 18222 | * wtf/MainThread.h: |
| 18223 | * wtf/gtk/MainThreadGtk.cpp: |
| 18224 | * wtf/mac/MainThreadMac.mm: |
| 18225 | * wtf/qt/MainThreadQt.cpp: |
| 18226 | * wtf/win/MainThreadWin.cpp: |
| 18227 | * wtf/wx/MainThreadWx.cpp: |
| 18228 | Moved here from WebCore/platform. Replaced all instances of "WebCore" |
| 18229 | with "WTF". |
| 18230 | |
| 18231 | * kjs/bool_object.cpp: Touched to force JavaScriptCore.vcproj to |
| 18232 | build. |
| 18233 | to the WTF namespace. |
| 18234 | * wtf/ThreadingWin.cpp: |
| 18235 | (WTF::initializeThreading): Call initializeMainThread. |
| 18236 | |
| 18237 | 2008-04-07 Brady Eidson <beidson@apple.com> |
| 18238 | |
| 18239 | Add "ENABLE_DOM_STORAGE" to keep in sync with the rest of the project |
| 18240 | |
| 18241 | * Configurations/JavaScriptCore.xcconfig: |
| 18242 | |
| 18243 | 2008-04-07 Adam Roben <aroben@apple.com> |
| 18244 | |
| 18245 | Windows build fix |
| 18246 | |
| 18247 | * wtf/ThreadingWin.cpp: Back out some changes I didn't mean to land. |
| 18248 | |
| 18249 | 2008-04-07 Adam Roben <aroben@apple.com> |
| 18250 | |
| 18251 | Add WTF::isMainThread |
| 18252 | |
| 18253 | Reviewed by Alexey Proskuryakov. |
| 18254 | |
| 18255 | * wtf/Threading.h: Declare the new function. |
| 18256 | * wtf/ThreadingGtk.cpp: |
| 18257 | (WTF::initializeThreading): Initialize the main thread identifier. |
| 18258 | (WTF::isMainThread): Added. |
| 18259 | * wtf/ThreadingNone.cpp: Ditto ThreadingGtk.cpp. |
| 18260 | (WTF::initializeThreading): |
| 18261 | (WTF::isMainThread): |
| 18262 | * wtf/ThreadingPthreads.cpp: Ditto. |
| 18263 | (WTF::initializeThreading): |
| 18264 | (WTF::isMainThread): |
| 18265 | * wtf/ThreadingWin.cpp: Ditto. |
| 18266 | (WTF::initializeThreading): |
| 18267 | (WTF::isMainThread): |
| 18268 | |
| 18269 | 2008-04-06 Alexey Proskuryakov <ap@webkit.org> |
| 18270 | |
| 18271 | Reviewed by Darin. |
| 18272 | |
| 18273 | Make UString thread-safe. |
| 18274 | |
| 18275 | No change on SunSpider total, although individual tests have changed a lot, up to 3%. |
| 18276 | |
| 18277 | * kjs/InitializeThreading.cpp: (KJS::initializeThreading): Call UString::null() to initialize |
| 18278 | a static. |
| 18279 | |
| 18280 | * kjs/identifier.cpp: |
| 18281 | (KJS::CStringTranslator::translate): |
| 18282 | (KJS::UCharBufferTranslator::translate): |
| 18283 | Use "true" for a boolean value instead of 1, because it's C++. |
| 18284 | |
| 18285 | * kjs/ustring.h: |
| 18286 | (KJS::CString::adopt): Added a method to create from a char* buffer without copying. |
| 18287 | (KJS::UString::Rep::ref): Removed an assertion for JSLock::lockCount, as it's no longer |
| 18288 | necessary to hold JSLock when working with strings. |
| 18289 | (KJS::UString::Rep::deref): Ditto. |
| 18290 | (KJS::UString::Rep::isStatic): Added a field to quickly determine that this is an empty |
| 18291 | or null static string. |
| 18292 | |
| 18293 | * kjs/ustring.cpp: |
| 18294 | (KJS::): Removed normalStatBufferSize and statBufferSize, as there is no reason to have such |
| 18295 | an advanced implementation of a debug-only ascii() method. Removed a long-obsolete comment |
| 18296 | about UChar. |
| 18297 | (KJS::UString::Rep::createCopying): Removed an assertion for JSLock::lockCount. |
| 18298 | (KJS::UString::Rep::create): Ditto. |
| 18299 | (KJS::UString::Rep::destroy): Ditto. Do not do anything for static null and empty strings, |
| 18300 | as refcounting is not reliable for those. Reordered branches for a noticeable speed gain - |
| 18301 | apparently this functiton is hot enough for SunSpider to see an effect from this! |
| 18302 | (KJS::UString::null): Moved a star, added a comment. |
| 18303 | (KJS::UString::cstring): Reimplemented to not call ascii(), which is not thread-safe. |
| 18304 | (KJS::UString::ascii): Simplified statBuffer handling logic. |
| 18305 | (KJS::UString::toDouble): Use cstring() instead of ascii(). |
| 18306 | |
| 18307 | 2008-04-02 Mark Rowe <mrowe@apple.com> |
| 18308 | |
| 18309 | Reviewed by Oliver Hunt. |
| 18310 | |
| 18311 | Ensure that debug symbols are generated for x86_64 and ppc64 builds. |
| 18312 | |
| 18313 | * Configurations/Base.xcconfig: |
| 18314 | |
| 18315 | 2008-04-01 Christian Dywan <christian@imendio.com> |
| 18316 | |
| 18317 | Build fix for GCC 4.3. |
| 18318 | |
| 18319 | * wtf/unicode/icu/CollatorICU.cpp: include string.h |
| 18320 | |
| 18321 | 2008-04-01 Alexey Proskuryakov <ap@webkit.org> |
| 18322 | |
| 18323 | Rubber-stamped by Darin. |
| 18324 | |
| 18325 | Turn off using 64-bit arithmetic on 32-bit hardware, as dtoa own code is faster than |
| 18326 | compiler-provided emulation. |
| 18327 | |
| 18328 | 1% speedup on Acid3 test 26. |
| 18329 | |
| 18330 | * kjs/dtoa.cpp: |
| 18331 | |
| 18332 | 2008-04-01 Alexey Proskuryakov <ap@webkit.org> |
| 18333 | |
| 18334 | Reviewed by Darin. |
| 18335 | |
| 18336 | Make MathExtras.h thread safe. |
| 18337 | |
| 18338 | * kjs/math_object.cpp: |
| 18339 | (KJS::mathProtoFuncRandom): If threading is enabled, rely on initializeThreading to call |
| 18340 | wtf_random_init(). |
| 18341 | |
| 18342 | * wtf/Threading.h: |
| 18343 | * wtf/ThreadingGtk.cpp: |
| 18344 | (WTF::initializeThreading): |
| 18345 | * wtf/ThreadingNone.cpp: |
| 18346 | (WTF::initializeThreading): |
| 18347 | * wtf/ThreadingPthreads.cpp: |
| 18348 | (WTF::initializeThreading): |
| 18349 | * wtf/ThreadingWin.cpp: |
| 18350 | (WTF::initializeThreading): |
| 18351 | Call wtf_random_init(); made the function non-inline to avoid having to include too many |
| 18352 | headers in Threading.h. |
| 18353 | |
| 18354 | 2008-03-31 Eric Seidel <eric@webkit.org> |
| 18355 | |
| 18356 | Reviewed by darin. |
| 18357 | |
| 18358 | Make matching of regexps using ^ much faster |
| 18359 | http://bugs.webkit.org/show_bug.cgi?id=18086 |
| 18360 | |
| 18361 | * pcre/pcre_compile.cpp: |
| 18362 | (compileBranch): |
| 18363 | (branchNeedsLineStart): |
| 18364 | * pcre/pcre_exec.cpp: |
| 18365 | (match): |
| 18366 | (jsRegExpExecute): |
| 18367 | * pcre/pcre_internal.h: |
| 18368 | |
| 18369 | 2008-03-29 Alexey Proskuryakov <ap@webkit.org> |
| 18370 | |
| 18371 | Reviewed by Oliver Hunt. |
| 18372 | |
| 18373 | <rdar://problem/5829556> REGRESSION: Leak in KJS::initializeThreading() |
| 18374 | |
| 18375 | * kjs/InitializeThreading.cpp: (KJS::initializeThreading): There is no guarantee that |
| 18376 | initializeThreading() is called only once; check that the mutex hasn't been already allocated. |
| 18377 | |
| 18378 | 2008-03-29 Oliver Hunt <oliver@apple.com> |
| 18379 | |
| 18380 | Reviewed by Geoff. |
| 18381 | |
| 18382 | Bug 17924: Crash in KJS::ConstDeclNode::evaluate with |with| and |const| |
| 18383 | <http://bugs.webkit.org/show_bug.cgi?id=17924> |
| 18384 | <rdar://problem/5806933> |
| 18385 | |
| 18386 | It turns out this is trivially avoidable if we just match firefox's |
| 18387 | semantics and ensure that an assignment in a const declaration always |
| 18388 | writes to the variable object. |
| 18389 | |
| 18390 | * kjs/nodes.cpp: |
| 18391 | (KJS::ConstDeclNode::handleSlowCase): |
| 18392 | |
| 18393 | 2008-03-28 Alexey Proskuryakov <ap@webkit.org> |
| 18394 | |
| 18395 | Reviewed by Sam Weinig. |
| 18396 | |
| 18397 | Fix a dtoa thread safety issue. |
| 18398 | |
| 18399 | WebCore can call kjs_strtod without holding JS lock, but we didn't have thread safety |
| 18400 | compiled in for dtoa. |
| 18401 | |
| 18402 | This is a 0.5% regression on SunSpider, which Sam Weinig has volunteered to cover with |
| 18403 | his recent improvement. |
| 18404 | |
| 18405 | * kjs/dtoa.cpp: |
| 18406 | (Bigint::Balloc): |
| 18407 | (Bigint::Bfree): |
| 18408 | Changed to use fastMalloc/fastDelete - they are much faster than the dtoa custom version was |
| 18409 | in the presence of locking (but somewhat slower in single-threaded case). |
| 18410 | (Bigint::pow5mult): Got rid of the dreaded double-checked locking anti-pattern (had to |
| 18411 | restructure the code to avoid significant performance implications). |
| 18412 | (Bigint::lshift): Rewrote to avoid an allocation, if possible. |
| 18413 | |
| 18414 | (Bigint::rv_alloc): |
| 18415 | (Bigint::kjs_freedtoa): |
| 18416 | (Bigint::kjs_dtoa): |
| 18417 | Check for USE(MULTIPLE_THREADS), not dtoa legacy MULTIPLE_THREADS. |
| 18418 | |
| 18419 | * kjs/InitializeThreading.cpp: Added. |
| 18420 | (KJS::initializeThreading): |
| 18421 | * kjs/InitializeThreading.h: Added. |
| 18422 | Initialize threading at KJS level, if enabled. |
| 18423 | |
| 18424 | * kjs/dtoa.h: Expose dtoa mutex for KJS::initializeThreading. |
| 18425 | |
| 18426 | * kjs/testkjs.cpp: (kjsmain): Call initializeThreading. |
| 18427 | |
| 18428 | * JavaScriptCore.exp: Export KJS::initializeThreading. |
| 18429 | |
| 18430 | * GNUmakefile.am: |
| 18431 | * JavaScriptCore.exp: |
| 18432 | * JavaScriptCore.pri: |
| 18433 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 18434 | * JavaScriptCoreSources.bkl: |
| 18435 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 18436 | Added InitializeThreading.{h,cpp}. |
| 18437 | |
| 18438 | * wtf/Threading.h: Removed a using directive for WTF::initializeThreading - it is only |
| 18439 | to be called from KJS::initializeThreading, and having it in the global namespace is useless. |
| 18440 | |
| 18441 | 2008-03-28 Brady Eidson <beidson@apple.com> |
| 18442 | |
| 18443 | Reviewed by Darin |
| 18444 | |
| 18445 | Export Unicode/UTF8.h and convertUTF16ToUTF8() for more flexible conversion in WebCore |
| 18446 | |
| 18447 | * JavaScriptCore.exp: |
| 18448 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 18449 | |
| 18450 | 2008-03-27 Darin Adler <darin@apple.com> |
| 18451 | |
| 18452 | Reviewed by Mark Rowe. |
| 18453 | |
| 18454 | <rdar://problem/5826236> Regular expressions with large nested repetition counts can have their |
| 18455 | compiled length calculated incorrectly. |
| 18456 | |
| 18457 | * pcre/pcre_compile.cpp: |
| 18458 | (multiplyWithOverflowCheck): |
| 18459 | (calculateCompiledPatternLength): Check for overflow when dealing with nested repetition counts |
| 18460 | and bail with an error rather than returning incorrect results. |
| 18461 | |
| 18462 | 2008-03-26 Mark Rowe <mrowe@apple.com> |
| 18463 | |
| 18464 | Rubber-stamped by Brady Eidson. |
| 18465 | |
| 18466 | Update FEATURE_DEFINES to be consistent with the other locations in which it is defined. |
| 18467 | |
| 18468 | * Configurations/JavaScriptCore.xcconfig: |
| 18469 | |
| 18470 | 2008-03-26 Adam Roben <aroben@apple.com> |
| 18471 | |
| 18472 | Fix Bug 18060: Assertion failure (JSLock not held) beneath |
| 18473 | JSCallbackObject<Base>::toString |
| 18474 | |
| 18475 | <http://bugs.webkit.org/show_bug.cgi?id=18060> |
| 18476 | |
| 18477 | Reviewed by Geoff Garen. |
| 18478 | |
| 18479 | Bug fix: |
| 18480 | |
| 18481 | * API/JSCallbackObjectFunctions.h: |
| 18482 | (KJS::JSCallbackObject<Base>::toString): Make the DropAllLocks |
| 18483 | instance only be in scope while calling convertToType. |
| 18484 | |
| 18485 | Test: |
| 18486 | |
| 18487 | * API/testapi.c: |
| 18488 | (MyObject_convertToType): Implement type conversion to string. |
| 18489 | * API/testapi.js: Add a test for type conversion to string. |
| 18490 | |
| 18491 | 2008-03-26 Adam Roben <aroben@apple.com> |
| 18492 | |
| 18493 | Windows build fix |
| 18494 | |
| 18495 | * kjs/array_instance.cpp: Touched this. |
| 18496 | * wtf/HashFunctions.h: |
| 18497 | (WTF::intHash): Added 8- and 16-bit versions of intHash. |
| 18498 | |
| 18499 | 2008-03-26 Adam Roben <aroben@apple.com> |
| 18500 | |
| 18501 | Force JSC headers to be copied by touching a file |
| 18502 | |
| 18503 | * kjs/array_instance.cpp: |
| 18504 | (KJS::ArrayInstance::getPropertyNames): |
| 18505 | |
| 18506 | 2008-03-26 Adam Roben <aroben@apple.com> |
| 18507 | |
| 18508 | Windows build fix after r31324 |
| 18509 | |
| 18510 | Written with Darin. |
| 18511 | |
| 18512 | Added HashTable plumbing to support using wchar_t as a key type. |
| 18513 | |
| 18514 | * wtf/HashFunctions.h: |
| 18515 | * wtf/HashTraits.h: |
| 18516 | (WTF::): |
| 18517 | |
| 18518 | 2008-03-26 Maciej Stachowiak <mjs@apple.com> |
| 18519 | |
| 18520 | Reviewed by Darin. |
| 18521 | |
| 18522 | - JSC part of fix for "SVG multichar glyph matching matches longest instead of first (affects Acid3 test 79)" |
| 18523 | http://bugs.webkit.org/show_bug.cgi?id=18118 |
| 18524 | |
| 18525 | * wtf/HashFunctions.h: |
| 18526 | (WTF::): |
| 18527 | * wtf/HashTraits.h: |
| 18528 | (WTF::): |
| 18529 | |
| 18530 | 2008-03-26 Alexey Proskuryakov <ap@webkit.org> |
| 18531 | |
| 18532 | Reviewed by Darin. |
| 18533 | |
| 18534 | Cache C string identifiers by address, not value, assuming that C strings can only |
| 18535 | be literals. |
| 18536 | |
| 18537 | 1% speedup on Acid3 test 26. |
| 18538 | |
| 18539 | * kjs/identifier.cpp: |
| 18540 | (KJS::literalIdentifierTable): |
| 18541 | (KJS::Identifier::add): |
| 18542 | Added a new table to cache UString::Reps created from C strings by address. Elements are |
| 18543 | never removed from this cache, as only predefined identifiers can get there. |
| 18544 | |
| 18545 | * kjs/identifier.h: |
| 18546 | (KJS::Identifier::Identifier): Added a warning. |
| 18547 | |
| 18548 | 2008-03-26 Alexey Proskuryakov <ap@webkit.org> |
| 18549 | |
| 18550 | Rubber-stamped by Maciej. |
| 18551 | |
| 18552 | An assertion was failing in function-toString-object-literals.html when parsing 1e-500. |
| 18553 | The condition existed before, and got uncovered by turning compiled-out dtoa checks into |
| 18554 | ASSERTs. |
| 18555 | |
| 18556 | The assertion was verifying that the caller wasn't constructing a Bigint from 0. |
| 18557 | This might have had some reason behind it originally, but I couldn't find any, |
| 18558 | and this doesn't look like a reasonable requirement. |
| 18559 | |
| 18560 | * kjs/dtoa.cpp: (d2b): Removed the assertion (two copies in different code paths). |
| 18561 | |
| 18562 | 2008-03-25 Adam Roben <aroben@apple.com> |
| 18563 | |
| 18564 | Fix Bug 18077: Integrate testapi.c into the Windows build |
| 18565 | |
| 18566 | <http://bugs.webkit.org/show_bug.cgi?id=18077> |
| 18567 | |
| 18568 | Reviewed by Steve Falkenburg. |
| 18569 | |
| 18570 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: Added. |
| 18571 | |
| 18572 | 2008-03-25 Adam Roben <aroben@apple.com> |
| 18573 | |
| 18574 | Make testapi.c compile under MSVC |
| 18575 | |
| 18576 | Currently you must compile testapi.c as C++ code since MSVC does not |
| 18577 | support many C features that GCC does. |
| 18578 | |
| 18579 | Reviewed by Steve Falkenburg. |
| 18580 | |
| 18581 | * API/testapi.c: |
| 18582 | (nan): Added an implementation of this for MSVC. |
| 18583 | (assertEqualsAsUTF8String): Use malloc instead of dynamically-sized |
| 18584 | stack arrays. |
| 18585 | (assertEqualsAsCharactersPtr): Ditto. |
| 18586 | (print_callAsFunction): Ditto. |
| 18587 | (main): Ditto, and explicitly cast from UniChar* to JSChar*. |
| 18588 | |
| 18589 | 2008-03-25 Adam Roben <aroben@apple.com> |
| 18590 | |
| 18591 | Stop using JavaScriptCore's custom stdbool.h and stdint.h on Windows |
| 18592 | |
| 18593 | We can't remove the os-win32 directory yet because other ports (at |
| 18594 | least wx) are still relying on it. |
| 18595 | |
| 18596 | Reviewed by Steve Falkenburg. |
| 18597 | |
| 18598 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 18599 | - Made all the include paths match the one for the Debug |
| 18600 | configuration (these got out of sync in r30797) |
| 18601 | - Removed os-win32 from the include path |
| 18602 | - Removed os-win32 from the directories we copy to $WebKitOutputDir. |
| 18603 | - Removed stdint.h from the project |
| 18604 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| 18605 | Delete the files that we may have previously copied from the os-win32 |
| 18606 | directory. |
| 18607 | |
| 18608 | 2008-03-25 Alexey Proskuryakov <ap@webkit.org> |
| 18609 | |
| 18610 | Windows build fix. |
| 18611 | |
| 18612 | * kjs/dtoa.cpp: Include stdint.h. |
| 18613 | |
| 18614 | 2008-03-25 Alexey Proskuryakov <ap@webkit.org> |
| 18615 | |
| 18616 | Rubber-stamped by Darin. |
| 18617 | |
| 18618 | Cleanup dtoa.cpp style. |
| 18619 | |
| 18620 | * kjs/dtoa.cpp: |
| 18621 | (Bigint::Balloc): |
| 18622 | (Bigint::Bfree): |
| 18623 | (Bigint::multadd): |
| 18624 | (Bigint::s2b): |
| 18625 | (Bigint::hi0bits): |
| 18626 | (Bigint::lo0bits): |
| 18627 | (Bigint::i2b): |
| 18628 | (Bigint::mult): |
| 18629 | (Bigint::pow5mult): |
| 18630 | (Bigint::lshift): |
| 18631 | (Bigint::cmp): |
| 18632 | (Bigint::diff): |
| 18633 | (Bigint::ulp): |
| 18634 | (Bigint::b2d): |
| 18635 | (Bigint::d2b): |
| 18636 | (Bigint::ratio): |
| 18637 | (Bigint::): |
| 18638 | (Bigint::match): |
| 18639 | (Bigint::hexnan): |
| 18640 | (Bigint::kjs_strtod): |
| 18641 | (Bigint::quorem): |
| 18642 | (Bigint::rv_alloc): |
| 18643 | (Bigint::nrv_alloc): |
| 18644 | (Bigint::kjs_freedtoa): |
| 18645 | (Bigint::kjs_dtoa): |
| 18646 | * kjs/dtoa.h: |
| 18647 | |
| 18648 | 2008-03-24 Darin Adler <darin@apple.com> |
| 18649 | |
| 18650 | Reviewed by Sam. |
| 18651 | |
| 18652 | - convert a JavaScript immediate number to a string more efficiently |
| 18653 | |
| 18654 | 2% speedup of Acid3 test 26 |
| 18655 | |
| 18656 | * kjs/JSImmediate.cpp: |
| 18657 | (KJS::JSImmediate::toString): Take advantage of the fact that all immediate |
| 18658 | numbers are integers, and use the faster UString function for formatting integers |
| 18659 | instead of the slower one that works for floating point. I think this is a leftover |
| 18660 | from when immediate numbers were floating point. |
| 18661 | |
| 18662 | 2008-03-23 Sam Weinig <sam@webkit.org> |
| 18663 | |
| 18664 | Reviewed by Darin Adler. |
| 18665 | |
| 18666 | Fix http://bugs.webkit.org/show_bug.cgi?id=18048 |
| 18667 | The "thisObject" parameter to JSEvaluateScript is not used properly |
| 18668 | |
| 18669 | Making passing a thisObject to JSEvaluateScript actually set the thisObject of the created |
| 18670 | ExecState. |
| 18671 | |
| 18672 | * API/testapi.c: |
| 18673 | (main): Add tests for setting the thisObject when calling JSEvaluateScript. |
| 18674 | |
| 18675 | * kjs/ExecState.cpp: |
| 18676 | (KJS::ExecState::ExecState): Assign the thisObject to m_thisValue and remove the comment. |
| 18677 | |
| 18678 | 2008-03-22 Jesse Ruderman <jruderman@gmail.com> |
| 18679 | |
| 18680 | Reviewed by Sam Weinig. Landed by eseidel. |
| 18681 | |
| 18682 | Make testkjs flush stdout after printing. |
| 18683 | |
| 18684 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 18685 | * kjs/testkjs.cpp: |
| 18686 | (functionPrint): |
| 18687 | |
| 18688 | 2008-03-21 Oliver Hunt <oliver@apple.com> |
| 18689 | |
| 18690 | Reviewed by Maciej. |
| 18691 | |
| 18692 | Optimise lookup of Math, undefined, NaN and Infinity |
| 18693 | |
| 18694 | Added a method to JSVariableObject to allow us to inject DontDelete properties |
| 18695 | into the symbol table and localStorage. This results in a 0.4% progression in |
| 18696 | SunSpider, with a 8% gain in math-partial-sums. |
| 18697 | |
| 18698 | * kjs/JSGlobalObject.cpp: |
| 18699 | (KJS::JSGlobalObject::reset): |
| 18700 | * kjs/JSVariableObject.h: |
| 18701 | (KJS::JSVariableObject::symbolTableInsert): |
| 18702 | |
| 18703 | 2008-03-21 Oliver Hunt <oliver@apple.com> |
| 18704 | |
| 18705 | Reviewed by Geoff Garen. |
| 18706 | |
| 18707 | Global properties that use LocalStorage are not correctly listed as enumerable. |
| 18708 | |
| 18709 | The problem was caused by JSObject::getPropertyAttributes not being aware |
| 18710 | of the JSVariableObject SymbolTable. The fix is to make getPropertyAttributes |
| 18711 | virtual and override in JSVariableObject. This does not produce any performance |
| 18712 | regression. |
| 18713 | |
| 18714 | * JavaScriptCore.exp: |
| 18715 | * kjs/JSVariableObject.cpp: |
| 18716 | (KJS::JSVariableObject::getPropertyNames): |
| 18717 | (KJS::JSVariableObject::getPropertyAttributes): |
| 18718 | * kjs/JSVariableObject.h: |
| 18719 | * kjs/object.h: |
| 18720 | |
| 18721 | 2008-03-21 Arkadiusz Miskiewicz <arekm@maven.pl> |
| 18722 | |
| 18723 | Webkit does not build on linux powerpc |
| 18724 | |
| 18725 | <http://bugs.webkit.org/show_bug.cgi?id=17019> |
| 18726 | |
| 18727 | Reviewed by David Kilzer. |
| 18728 | |
| 18729 | * wtf/TCSpinLock.h: |
| 18730 | (TCMalloc_SpinLock::Unlock): |
| 18731 | |
| 18732 | 2008-03-21 Rodney Dawes <dobey@wayofthemonkey.com> |
| 18733 | |
| 18734 | Reviewed by Holger. |
| 18735 | |
| 18736 | http://bugs.webkit.org/show_bug.cgi?id=17981 |
| 18737 | |
| 18738 | Add javascriptcore_cppflags to Programs_minidom_CPPFLAGS. |
| 18739 | |
| 18740 | * GNUmakefile.am: |
| 18741 | |
| 18742 | 2008-03-21 Alexey Proskuryakov <ap@webkit.org> |
| 18743 | |
| 18744 | Reviewed by Oliver Hunt. |
| 18745 | |
| 18746 | Consolidate static identifier initializers within CommonIdentifiers. |
| 18747 | |
| 18748 | No reliably measurable change on SunSpider; maybe a tiny improvement (within 0.2%). |
| 18749 | |
| 18750 | * kjs/CommonIdentifiers.h: Added static identifiers that were lazily initialized |
| 18751 | throughout the code. |
| 18752 | |
| 18753 | * kjs/date_object.cpp: |
| 18754 | (KJS::DateObjectImp::DateObjectImp): |
| 18755 | * kjs/function_object.cpp: |
| 18756 | (KJS::FunctionPrototype::FunctionPrototype): |
| 18757 | * kjs/object_object.cpp: |
| 18758 | (KJS::ObjectPrototype::ObjectPrototype): |
| 18759 | * kjs/regexp_object.cpp: |
| 18760 | (KJS::RegExpPrototype::RegExpPrototype): |
| 18761 | Use the values from CommonIdentifiers. |
| 18762 | |
| 18763 | * kjs/lookup.h: Caching the identifier in a static wasn't a win on SunSpider, removed it. |
| 18764 | |
| 18765 | * kjs/value.h: |
| 18766 | (KJS::jsNaN): We already have a shared NaN value, no need for a duplicate here. |
| 18767 | |
| 18768 | * wtf/MathExtras.h: |
| 18769 | (wtf_atan2): Having local variables for numeric_limits constants is good for readability, |
| 18770 | but there is no reason to keep them static. |
| 18771 | |
| 18772 | * JavaScriptCore.exp: Don't needlessly export JSGlobalObject::s_head. |
| 18773 | |
| 18774 | 2008-03-20 Oliver Hunt <oliver@apple.com> |
| 18775 | |
| 18776 | Reviewed by Maciej. |
| 18777 | |
| 18778 | Fix for leak introduced by inline ScopeChainNode use |
| 18779 | |
| 18780 | To avoid any extra branches when managing an inline ScopeChainNode |
| 18781 | in the ScopeChain the inline node gets inserted with a refcount of |
| 18782 | 2. This meant than when the ScopeChain was destroyed the ScopeChainNodes |
| 18783 | above the inline node would be leaked. |
| 18784 | |
| 18785 | We resolve this by manually popping the inline node in the |
| 18786 | FunctionExecState destructor. |
| 18787 | |
| 18788 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 18789 | * kjs/ExecStateInlines.h: |
| 18790 | (KJS::FunctionExecState::~FunctionExecState): |
| 18791 | * kjs/scope_chain.h: |
| 18792 | (KJS::ScopeChain::popInlineScopeNode): |
| 18793 | |
| 18794 | 2008-03-20 Mark Rowe <mrowe@apple.com> |
| 18795 | |
| 18796 | Reviewed by Sam Weinig. |
| 18797 | |
| 18798 | Ensure that the defines in FEATURE_DEFINES are sorted so that they will match the default settings of build-webkit. |
| 18799 | This will prevent the world from being rebuilt if you happen to switch between building in Xcode and with build-webkit on the |
| 18800 | command-line. |
| 18801 | |
| 18802 | * Configurations/JavaScriptCore.xcconfig: |
| 18803 | |
| 18804 | 2008-03-20 David Krause <david.krause@gmail.com> |
| 18805 | |
| 18806 | Reviewed by David Kilzer. |
| 18807 | |
| 18808 | Fix http://bugs.webkit.org/show_bug.cgi?id=17923 |
| 18809 | Bug 17923: ARM platform endian defines inaccurate |
| 18810 | |
| 18811 | * wtf/Platform.h: |
| 18812 | Replaced !defined(__ARMEL__) check with !defined(__VFP_FP__) |
| 18813 | for PLATFORM(MIDDLE_ENDIAN) |
| 18814 | |
| 18815 | 2008-03-20 Maciej Stachowiak <mjs@apple.com> |
| 18816 | |
| 18817 | - fix build |
| 18818 | |
| 18819 | * JavaScriptCore.xcodeproj/project.pbxproj: install Activation.h as private |
| 18820 | |
| 18821 | 2008-03-20 Maciej Stachowiak <mjs@apple.com> |
| 18822 | |
| 18823 | Reviewed by Oliver. |
| 18824 | |
| 18825 | - reduce function call overhead for 1.014x speedup on SunSpider |
| 18826 | |
| 18827 | I moved some functions from ExecState.cpp to ExecStateInline.h and |
| 18828 | from JSGlobalObject.cpp to JSGlobalObject.h, and declared them |
| 18829 | inline; machine function call overhead for these was hurting JS |
| 18830 | funcion call overhead. |
| 18831 | |
| 18832 | * kjs/ExecState.cpp: |
| 18833 | * kjs/ExecStateInlines.h: Added. |
| 18834 | (KJS::ExecState::ExecState): |
| 18835 | (KJS::ExecState::~ExecState): |
| 18836 | (KJS::FunctionExecState::FunctionExecState): |
| 18837 | (KJS::FunctionExecState::~FunctionExecState): |
| 18838 | * kjs/JSGlobalObject.cpp: |
| 18839 | * kjs/JSGlobalObject.h: |
| 18840 | (KJS::JSGlobalObject::pushActivation): |
| 18841 | (KJS::JSGlobalObject::checkActivationCount): |
| 18842 | (KJS::JSGlobalObject::popActivation): |
| 18843 | * kjs/function.cpp: |
| 18844 | |
| 18845 | 2008-03-19 Oliver Hunt <oliver@apple.com> |
| 18846 | |
| 18847 | Reviewed by Maciej. |
| 18848 | |
| 18849 | Avoid heap allocating the root scope chain node for eval and closure free functions |
| 18850 | |
| 18851 | Maciej suggested using an inline ScopeChainNode for functions that don't use eval |
| 18852 | or closures as they are unable to ever capture the scope chain. This gives us a 2.4% |
| 18853 | win in sunspider, a 15% win in controlflow-recursive, and big (>5%) wins in a number |
| 18854 | of other tests. |
| 18855 | |
| 18856 | * kjs/ExecState.cpp: |
| 18857 | (KJS::ExecState::ExecState): |
| 18858 | * kjs/ExecState.h: |
| 18859 | * kjs/scope_chain.h: |
| 18860 | (KJS::ScopeChain::push): |
| 18861 | |
| 18862 | 2008-03-19 Mark Rowe <mrowe@apple.com> |
| 18863 | |
| 18864 | Reviewed by Sam Weinig. |
| 18865 | |
| 18866 | Fix release build. |
| 18867 | |
| 18868 | * kjs/JSGlobalObject.cpp: Add missing #include. |
| 18869 | |
| 18870 | 2008-03-19 Sam Weinig <sam@webkit.org> |
| 18871 | |
| 18872 | Reviewed by Anders Carlsson. |
| 18873 | |
| 18874 | Fix for <rdar://problem/5785694> |
| 18875 | Crash occurs at KJS::Collector::collect() when loading web clip widgets with a PAC file |
| 18876 | |
| 18877 | Make the activeExecStates stack per JSGlobalObject instead of static to ensure |
| 18878 | thread safety. |
| 18879 | |
| 18880 | * JavaScriptCore.exp: |
| 18881 | * kjs/ExecState.cpp: |
| 18882 | (KJS::InterpreterExecState::InterpreterExecState): |
| 18883 | (KJS::InterpreterExecState::~InterpreterExecState): |
| 18884 | (KJS::EvalExecState::EvalExecState): |
| 18885 | (KJS::EvalExecState::~EvalExecState): |
| 18886 | (KJS::FunctionExecState::FunctionExecState): |
| 18887 | (KJS::FunctionExecState::~FunctionExecState): |
| 18888 | * kjs/ExecState.h: |
| 18889 | * kjs/JSGlobalObject.cpp: |
| 18890 | (KJS::JSGlobalObject::mark): |
| 18891 | * kjs/JSGlobalObject.h: |
| 18892 | (KJS::JSGlobalObject::activeExecStates): |
| 18893 | * kjs/collector.cpp: |
| 18894 | (KJS::Collector::collect): |
| 18895 | (KJS::Collector::reportOutOfMemoryToAllExecStates): Iterate all JSGlobalObjects and report |
| 18896 | the OutOfMemory condition to all the ExecStates in each. |
| 18897 | |
| 18898 | 2008-03-19 Jasper Bryant-Greene <jasper@unix.geek.nz> |
| 18899 | |
| 18900 | Reviewed by Maciej Stachowiak. |
| 18901 | |
| 18902 | Fix http://bugs.webkit.org/show_bug.cgi?id=17941 |
| 18903 | Bug 17941: C++-style comments in JavaScriptCore API |
| 18904 | |
| 18905 | * API/JSBase.h: |
| 18906 | Remove C++-style comments from public JavaScriptCore API, replacing |
| 18907 | with standard C90 block comments. |
| 18908 | |
| 18909 | 2008-03-19 Mark Rowe <mrowe@apple.com> |
| 18910 | |
| 18911 | Reviewed by Oliver Hunt. |
| 18912 | |
| 18913 | Fix http://bugs.webkit.org/show_bug.cgi?id=17939 |
| 18914 | Bug 17939: Crash decompiling "const a = 1, b;" |
| 18915 | |
| 18916 | * kjs/nodes2string.cpp: |
| 18917 | (KJS::ConstDeclNode::streamTo): Null-check the correct variable. |
| 18918 | |
| 18919 | 2008-03-18 Oliver Hunt <oliver@apple.com> |
| 18920 | |
| 18921 | Reviewed by Mark Rowe. |
| 18922 | |
| 18923 | Bug 17929: Incorrect decompilation with |const|, comma |
| 18924 | http://bugs.webkit.org/show_bug.cgi?id=17929 |
| 18925 | |
| 18926 | There were actually two bugs here. First we weren't correctly handling const |
| 18927 | nodes with multiple declarations. The second issue was caused by us not |
| 18928 | giving the correct precedence to the initialisers. |
| 18929 | |
| 18930 | * kjs/nodes2string.cpp: |
| 18931 | (KJS::ConstDeclNode::streamTo): |
| 18932 | |
| 18933 | 2008-03-18 Darin Adler <darin@apple.com> |
| 18934 | |
| 18935 | Reviewed by Maciej. |
| 18936 | |
| 18937 | - Speed up JavaScript built-in properties by changing the |
| 18938 | hash table to take advantage of the identifier objects |
| 18939 | |
| 18940 | 5% speedup for Acid3 test 26 |
| 18941 | |
| 18942 | * JavaScriptCore.exp: Updated. |
| 18943 | * kjs/create_hash_table: Compute size of hash table large enough so that there |
| 18944 | are no collisions, but don't generate the hash table. |
| 18945 | * kjs/identifier.h: Made the add function that returns a PassRefPtr public. |
| 18946 | * kjs/lexer.cpp: |
| 18947 | (KJS::Lexer::lex): Updated for change to HashTable interface. |
| 18948 | * kjs/lookup.cpp: |
| 18949 | (KJS::HashTable::changeKeysToIdentifiers): Added. Finds the identifier for |
| 18950 | each property so the equality comparision can be done with pointer comparision. |
| 18951 | * kjs/lookup.h: Made the key be a union of char* with UString::Rep* so it can |
| 18952 | hold identifiers. Added a keysAreIdentifiers flag to the HashTable. Changed |
| 18953 | the Lookup functions to be member functions of HashTable instead. |
| 18954 | * kjs/object.cpp: |
| 18955 | (KJS::JSObject::deleteProperty): Update for change to HashTable. |
| 18956 | (KJS::JSObject::findPropertyHashEntry): Ditto. |
| 18957 | (KJS::JSObject::getPropertyAttributes): Ditto. |
| 18958 | (KJS::JSObject::getPropertyNames): Ditto. |
| 18959 | |
| 18960 | 2008-03-18 Mark Rowe <mrowe@apple.com> |
| 18961 | |
| 18962 | Reviewed by Oliver Hunt. |
| 18963 | |
| 18964 | Fix http://bugs.webkit.org/show_bug.cgi?id=17925 and http://bugs.webkit.org/show_bug.cgi?id=17927. |
| 18965 | - Bug 17925: Crash in KJS::JSObject::put after setting this.__proto__ |
| 18966 | - Bug 17927: Hang after attempting to create circular __proto__ |
| 18967 | |
| 18968 | * kjs/object.cpp: |
| 18969 | (KJS::JSObject::put): Silently ignore attempts to set __proto__ to a non-object, non-null value. |
| 18970 | Return after setting the exception when an attempt to set a cyclic __proto__ is detected so that |
| 18971 | the cyclic value is not set. |
| 18972 | |
| 18973 | 2008-03-18 Maciej Stachowiak <mjs@apple.com> |
| 18974 | |
| 18975 | Reviewed by Oliver. |
| 18976 | |
| 18977 | - inline ActivationImp::init for 0.8% SunSpider speedup |
| 18978 | |
| 18979 | * kjs/Activation.h: |
| 18980 | (KJS::ActivationImp::init): Moved here from function.cpp |
| 18981 | * kjs/function.cpp: |
| 18982 | |
| 18983 | 2008-03-18 Simon Hausmann <hausmann@webkit.org> |
| 18984 | |
| 18985 | Fix the Qt build. |
| 18986 | |
| 18987 | Including config.h like in the other .cpp files gets the #ifdeffery |
| 18988 | correct for rand_s. |
| 18989 | |
| 18990 | * kjs/JSWrapperObject.cpp: |
| 18991 | |
| 18992 | 2008-03-17 Darin Adler <darin@apple.com> |
| 18993 | |
| 18994 | Reviewed by Maciej. |
| 18995 | |
| 18996 | JavaScriptCore changes to support a WebCore speedup. |
| 18997 | |
| 18998 | * JavaScriptCore.exp: Export the UString::Rep::computeHash function. |
| 18999 | * wtf/HashSet.h: Added a find and contains function that take a translator, |
| 19000 | like the add function. |
| 19001 | |
| 19002 | 2008-03-18 Maciej Stachowiak <mjs@apple.com> |
| 19003 | |
| 19004 | Reviewed by Oliver. |
| 19005 | |
| 19006 | - a few micro-optimizations for 1.2% SunSpider speedup |
| 19007 | |
| 19008 | * kjs/function.cpp: |
| 19009 | (KJS::FunctionImp::callAsFunction): check for Return completion before Throw, |
| 19010 | it is more likely. |
| 19011 | * kjs/object.cpp: |
| 19012 | (KJS::JSObject::put): When walking prototype chain, instead of |
| 19013 | checking isObject (a virtual call), compare to jsNull (compare to |
| 19014 | a constant) since null is the only non-object that can be in a |
| 19015 | prototype chain. |
| 19016 | |
| 19017 | 2008-03-17 Oliver Hunt <oliver@apple.com> |
| 19018 | |
| 19019 | Reviewed by Geoff. |
| 19020 | |
| 19021 | Optimise multi-scope function call resolution |
| 19022 | |
| 19023 | Refactor multiscope variable resolution and use to add |
| 19024 | optimised FunctionCallResolveNode subclasses. |
| 19025 | |
| 19026 | 2.6% gain in sunspider performance, *25%* gain in controlflow-recursive |
| 19027 | |
| 19028 | * kjs/nodes.cpp: |
| 19029 | (KJS::getSymbolTableEntry): |
| 19030 | (KJS::ResolveNode::optimizeVariableAccess): |
| 19031 | (KJS::getNonLocalSymbol): |
| 19032 | (KJS::ExpressionNode::resolveAndCall): |
| 19033 | (KJS::FunctionCallResolveNode::optimizeVariableAccess): |
| 19034 | (KJS::FunctionCallResolveNode::inlineEvaluate): |
| 19035 | (KJS::ScopedVarFunctionCallNode::inlineEvaluate): |
| 19036 | (KJS::ScopedVarFunctionCallNode::evaluate): |
| 19037 | (KJS::ScopedVarFunctionCallNode::evaluateToNumber): |
| 19038 | (KJS::ScopedVarFunctionCallNode::evaluateToBoolean): |
| 19039 | (KJS::ScopedVarFunctionCallNode::evaluateToInt32): |
| 19040 | (KJS::ScopedVarFunctionCallNode::evaluateToUInt32): |
| 19041 | (KJS::NonLocalVarFunctionCallNode::inlineEvaluate): |
| 19042 | (KJS::NonLocalVarFunctionCallNode::evaluate): |
| 19043 | (KJS::NonLocalVarFunctionCallNode::evaluateToNumber): |
| 19044 | (KJS::NonLocalVarFunctionCallNode::evaluateToBoolean): |
| 19045 | (KJS::NonLocalVarFunctionCallNode::evaluateToInt32): |
| 19046 | (KJS::NonLocalVarFunctionCallNode::evaluateToUInt32): |
| 19047 | * kjs/nodes.h: |
| 19048 | (KJS::ScopedVarFunctionCallNode::): |
| 19049 | (KJS::NonLocalVarFunctionCallNode::): |
| 19050 | |
| 19051 | 2008-03-17 David Kilzer <ddkilzer@apple.com> |
| 19052 | |
| 19053 | Don't define PLATFORM(MIDDLE_ENDIAN) on little endian ARM. |
| 19054 | |
| 19055 | Reviewed by Darin. |
| 19056 | |
| 19057 | See <http://bugs.webkit.org/show_bug.cgi?id=15416#c13>. |
| 19058 | |
| 19059 | * wtf/Platform.h: Added check for !defined(__ARMEL__) when defining |
| 19060 | PLATFORM(MIDDLE_ENDIAN). |
| 19061 | |
| 19062 | 2008-03-17 Oliver Hunt <oliver@apple.com> |
| 19063 | |
| 19064 | Reviewed by Geoff, Darin and Weinig. |
| 19065 | |
| 19066 | Add fast multi-level scope lookup |
| 19067 | |
| 19068 | Add logic and AST nodes to provide rapid variable resolution across |
| 19069 | static scope boundaries. This also adds logic that allows us to skip |
| 19070 | any static scopes that do not contain the variable to be resolved. |
| 19071 | |
| 19072 | This results in a ~2.5% speedup in SunSpider, and gives a 25-30% speedup |
| 19073 | in some simple and ad hoc closure and global variable access tests. |
| 19074 | |
| 19075 | * JavaScriptCore.exp: |
| 19076 | * kjs/Activation.h: |
| 19077 | * kjs/JSGlobalObject.cpp: |
| 19078 | * kjs/JSGlobalObject.h: |
| 19079 | * kjs/JSVariableObject.cpp: |
| 19080 | * kjs/JSVariableObject.h: |
| 19081 | * kjs/function.cpp: |
| 19082 | (KJS::ActivationImp::isDynamicScope): |
| 19083 | * kjs/nodes.cpp: |
| 19084 | (KJS::ResolveNode::optimizeVariableAccess): |
| 19085 | (KJS::ScopedVarAccessNode::inlineEvaluate): |
| 19086 | (KJS::ScopedVarAccessNode::evaluate): |
| 19087 | (KJS::ScopedVarAccessNode::evaluateToNumber): |
| 19088 | (KJS::ScopedVarAccessNode::evaluateToBoolean): |
| 19089 | (KJS::ScopedVarAccessNode::evaluateToInt32): |
| 19090 | (KJS::ScopedVarAccessNode::evaluateToUInt32): |
| 19091 | (KJS::NonLocalVarAccessNode::inlineEvaluate): |
| 19092 | (KJS::NonLocalVarAccessNode::evaluate): |
| 19093 | (KJS::NonLocalVarAccessNode::evaluateToNumber): |
| 19094 | (KJS::NonLocalVarAccessNode::evaluateToBoolean): |
| 19095 | (KJS::NonLocalVarAccessNode::evaluateToInt32): |
| 19096 | (KJS::NonLocalVarAccessNode::evaluateToUInt32): |
| 19097 | (KJS::IfElseNode::optimizeVariableAccess): |
| 19098 | (KJS::ScopeNode::optimizeVariableAccess): |
| 19099 | * kjs/nodes.h: |
| 19100 | (KJS::ScopedVarAccessNode::): |
| 19101 | (KJS::NonLocalVarAccessNode::): |
| 19102 | * kjs/object.h: |
| 19103 | |
| 19104 | 2008-03-16 weihongzeng <weihong.zeng@hotmail.com> |
| 19105 | |
| 19106 | Reviewed by Darin Adler. |
| 19107 | |
| 19108 | http://bugs.webkit.org/show_bug.cgi?id=15416 |
| 19109 | Add support for mixed-endian processors |
| 19110 | |
| 19111 | * kjs/dtoa.cpp: Add IEEE_ARM, triggered by PLATFORM(MIDDLE_ENDIAN). |
| 19112 | |
| 19113 | 2008-03-16 Kevin Ollivier <kevino@theolliviers.com> |
| 19114 | |
| 19115 | Rubber stamped by Darin. |
| 19116 | |
| 19117 | Add set-webkit-configuration support for wx port, and centralize |
| 19118 | build dir location setting. |
| 19119 | |
| 19120 | http://bugs.webkit.org/show_bug.cgi?id=17790 |
| 19121 | |
| 19122 | * jscore.bkl: |
| 19123 | |
| 19124 | 2008-03-14 Steve Falkenburg <sfalken@apple.com> |
| 19125 | |
| 19126 | PGO build fixes. |
| 19127 | |
| 19128 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 19129 | |
| 19130 | 2008-03-14 Oliver Hunt <oliver@apple.com> |
| 19131 | |
| 19132 | Reviewed by Maciej. |
| 19133 | |
| 19134 | Add logic to track whether a function uses a locally scoped eval or requires a closure |
| 19135 | |
| 19136 | Now that we limit eval we can track those uses of eval that operate |
| 19137 | in the local scope and functions that require a closure. We track |
| 19138 | this information during initial parsing to avoid yet another tree |
| 19139 | walk. |
| 19140 | |
| 19141 | * JavaScriptCore.exp: |
| 19142 | * kjs/NodeInfo.h: |
| 19143 | * kjs/Parser.cpp: |
| 19144 | (KJS::Parser::didFinishParsing): |
| 19145 | * kjs/Parser.h: |
| 19146 | (KJS::Parser::parse): |
| 19147 | * kjs/grammar.y: |
| 19148 | * kjs/nodes.cpp: |
| 19149 | (KJS::ScopeNode::ScopeNode): |
| 19150 | (KJS::ProgramNode::ProgramNode): |
| 19151 | (KJS::ProgramNode::create): |
| 19152 | (KJS::EvalNode::EvalNode): |
| 19153 | (KJS::EvalNode::create): |
| 19154 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 19155 | (KJS::FunctionBodyNode::create): |
| 19156 | * kjs/nodes.h: |
| 19157 | (KJS::ScopeNode::): |
| 19158 | (KJS::ScopeNode::usesEval): |
| 19159 | (KJS::ScopeNode::needsClosure): |
| 19160 | |
| 19161 | 2008-03-14 Geoffrey Garen <ggaren@apple.com> |
| 19162 | |
| 19163 | Reviewed by Beth Dakin. |
| 19164 | |
| 19165 | Fixed another problem with Vector::shrinkCapacity. |
| 19166 | |
| 19167 | moveOverlapping isn't good enough for the case where the buffer hasn't |
| 19168 | changed, because it still destroys the contents of the buffer. |
| 19169 | |
| 19170 | * wtf/Vector.h: |
| 19171 | (WTF::::shrinkCapacity): Changed to explicitly check whether the call |
| 19172 | to allocateBuffer produced a new buffer. If it didn't, there's no need |
| 19173 | to move. |
| 19174 | |
| 19175 | 2008-03-14 Geoffrey Garen <ggaren@apple.com> |
| 19176 | |
| 19177 | Reviewed by Beth Dakin. |
| 19178 | |
| 19179 | Fixed a few problems with Vector::shrinkCapacity that I noticed in testing. |
| 19180 | |
| 19181 | * wtf/Vector.h: |
| 19182 | (WTF::VectorBufferBase::deallocateBuffer): Clear our m_buffer pointer |
| 19183 | when we deallocate m_buffer, in case we're not asked to reallocate a new |
| 19184 | buffer. (Otherwise, we would use a stale m_buffer if we were asked to |
| 19185 | perform any operations after shrinkCapacity was called.) |
| 19186 | |
| 19187 | (WTF::VectorBuffer::allocateBuffer): Made VectorBuffer with inline |
| 19188 | capacity aware that calls to allocateBuffer might be shrinks, rather |
| 19189 | than grows, so we shouldn't allocate a new buffer on the heap unless |
| 19190 | our inline buffer is too small. |
| 19191 | |
| 19192 | (WTF::::shrinkCapacity): Call resize() instead of just setting m_size, |
| 19193 | so destructors run. Call resize before reallocating the buffer to make |
| 19194 | sure that we still have access to the objects we need to destroy. Call |
| 19195 | moveOverlapping instead of move, since a call to allocateBuffer on an |
| 19196 | inline buffer may produce identical storage. |
| 19197 | |
| 19198 | 2008-03-14 Alexey Proskuryakov <ap@webkit.org> |
| 19199 | |
| 19200 | Reviewed by Darin. |
| 19201 | |
| 19202 | Get rid of a localime() call on platforms that have better alternatives. |
| 19203 | |
| 19204 | * kjs/DateMath.h: Added getLocalTime(); |
| 19205 | |
| 19206 | * kjs/DateMath.cpp: |
| 19207 | (KJS::getLocalTime): |
| 19208 | (KJS::getDSTOffsetSimple): |
| 19209 | Implementation moved from getDSTOffsetSimple(). |
| 19210 | |
| 19211 | * kjs/date_object.cpp: |
| 19212 | (KJS::DateObjectImp::callAsFunction): Switched to getLocalTime(). |
| 19213 | |
| 19214 | 2008-03-14 David D. Kilzer <ddkilzer@apple.com> |
| 19215 | |
| 19216 | Unify concept of enabling the Mac Java bridge. |
| 19217 | |
| 19218 | Reviewed by Darin and Anders. |
| 19219 | |
| 19220 | * wtf/Platform.h: Define ENABLE_MAC_JAVA_BRIDGE here. |
| 19221 | |
| 19222 | 2008-03-13 Mark Mentovai <mark@moxienet.com> |
| 19223 | |
| 19224 | Reviewed by eseidel. Landed by eseidel. |
| 19225 | |
| 19226 | * wtf/FastMalloc.cpp: #include <wtf/HashSet.h> outside of any |
| 19227 | namespaces. |
| 19228 | |
| 19229 | 2008-03-13 Mark Mentovai <mark@moxienet.com> |
| 19230 | |
| 19231 | Reviewed by eseidel. Landed by eseidel. |
| 19232 | |
| 19233 | * pcre/pcre_exec.cpp: Fix misnamed variable, allowing -DDEBUG build |
| 19234 | to succeed. |
| 19235 | * wtf/ThreadingPthreads.cpp: #include <sys/time.h> for gettimeofday |
| 19236 | in non-pch build. |
| 19237 | |
| 19238 | 2008-03-13 Steve Falkenburg <sfalken@apple.com> |
| 19239 | |
| 19240 | PGO build fixes. |
| 19241 | |
| 19242 | Disable PGO for normal release builds. |
| 19243 | Added work-in-progress Release_PGOInstrument/Release_PGOOptimize targets. |
| 19244 | |
| 19245 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 19246 | |
| 19247 | 2008-03-13 Beth Dakin <bdakin@apple.com> |
| 19248 | |
| 19249 | Reviewed by Geoff. |
| 19250 | |
| 19251 | Adding new functionality to Vector. Currently all of the shrink and |
| 19252 | resize functions on Vector only shrink the size of the Vector, not |
| 19253 | the capacity. For the Vector to take up as little memory as |
| 19254 | possible, though, it is necessary to be able to shrink the capacity |
| 19255 | as well. So this patch adds that functionality. |
| 19256 | |
| 19257 | I need this for a speed up I am working on, and Geoff wants to use |
| 19258 | it in a speed up he is working on also, so he asked me to commit it |
| 19259 | now. |
| 19260 | |
| 19261 | * wtf/Vector.h: |
| 19262 | (WTF::VectorBufferBase::allocateBuffer): |
| 19263 | (WTF::::shrinkCapacity): |
| 19264 | |
| 19265 | 2008-03-13 Simon Hausmann <hausmann@webkit.org> |
| 19266 | |
| 19267 | Reviewed by Adam Roben. |
| 19268 | |
| 19269 | Attempt at fixing the Qt/Windows build bot. Quote using double-quotes |
| 19270 | instead of single quotes. |
| 19271 | |
| 19272 | * pcre/dftables: |
| 19273 | |
| 19274 | 2008-03-12 Steve Falkenburg <sfalken@apple.com> |
| 19275 | |
| 19276 | Build fix. |
| 19277 | |
| 19278 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 19279 | |
| 19280 | 2008-03-12 Alp Toker <alp@atoker.com> |
| 19281 | |
| 19282 | Another autotools testkjs build fix attempt. |
| 19283 | |
| 19284 | * GNUmakefile.am: |
| 19285 | |
| 19286 | 2008-03-12 Alp Toker <alp@atoker.com> |
| 19287 | |
| 19288 | Attempt to fix the autotools testkjs build on systems with |
| 19289 | non-standard include paths. |
| 19290 | |
| 19291 | * GNUmakefile.am: |
| 19292 | |
| 19293 | 2008-03-11 Alexey Proskuryakov <ap@webkit.org> |
| 19294 | |
| 19295 | Reviewed by Darin. |
| 19296 | |
| 19297 | <rdar://problem/5787743> REGRESSION: Crash at WTF::Collator::CreateCollator() running fast/js/kde/StringObject.html on Windows |
| 19298 | |
| 19299 | * wtf/unicode/icu/CollatorICU.cpp: |
| 19300 | (WTF::Collator::createCollator): Check for null (== user default) m_locale before calling strcmp. |
| 19301 | |
| 19302 | 2008-03-11 Steve Falkenburg <sfalken@apple.com> |
| 19303 | |
| 19304 | Disable LTCG/PGO for grammar.cpp and nodes.cpp. |
| 19305 | PGO on these files causes us to hang. |
| 19306 | |
| 19307 | Copy newer vsprops files from relative WebKitLibraries path to environment variable based path. |
| 19308 | |
| 19309 | Reviewed by Oliver. |
| 19310 | |
| 19311 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 19312 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| 19313 | |
| 19314 | 2008-03-10 Darin Adler <darin@apple.com> |
| 19315 | |
| 19316 | - Windows build fix |
| 19317 | |
| 19318 | * kjs/function.cpp: (KJS::decode): Initialize variable. |
| 19319 | |
| 19320 | 2008-03-10 Brent Fulgham <bfulgham@gmail.com> |
| 19321 | |
| 19322 | Windows build fix |
| 19323 | |
| 19324 | Reviewed by Adam. |
| 19325 | |
| 19326 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| 19327 | Set the PATH to include Cygwin before running touch. |
| 19328 | |
| 19329 | 2008-03-10 Eric Seidel <eric@webkit.org> |
| 19330 | |
| 19331 | Build fix for JSC on windows. |
| 19332 | |
| 19333 | * API/JSStringRefCF.cpp: |
| 19334 | (JSStringCreateWithCFString): |
| 19335 | * kjs/function.cpp: |
| 19336 | (KJS::decode): |
| 19337 | * kjs/nodes2string.cpp: |
| 19338 | (KJS::escapeStringForPrettyPrinting): |
| 19339 | |
| 19340 | 2008-03-10 Eric Seidel <eric@webkit.org> |
| 19341 | |
| 19342 | No review, build fix only. |
| 19343 | |
| 19344 | Attempt to fix the windows build? |
| 19345 | |
| 19346 | * kjs/ustring.h: change unsigned short to UChar |
| 19347 | |
| 19348 | 2008-03-10 Eric Seidel <eric@webkit.org> |
| 19349 | |
| 19350 | Reviewed by Darin. |
| 19351 | |
| 19352 | Remove KJS::UChar, use ::UChar instead |
| 19353 | http://bugs.webkit.org/show_bug.cgi?id=17017 |
| 19354 | |
| 19355 | * API/JSStringRef.cpp: |
| 19356 | (JSStringCreateWithCharacters): |
| 19357 | (JSStringCreateWithUTF8CString): |
| 19358 | * API/JSStringRefCF.cpp: |
| 19359 | (JSStringCreateWithCFString): |
| 19360 | * JavaScriptCore.exp: |
| 19361 | * kjs/Parser.h: |
| 19362 | * kjs/function.cpp: |
| 19363 | (KJS::decode): |
| 19364 | (KJS::parseInt): |
| 19365 | (KJS::parseFloat): |
| 19366 | (KJS::globalFuncEscape): |
| 19367 | (KJS::globalFuncUnescape): |
| 19368 | * kjs/function_object.cpp: |
| 19369 | (KJS::FunctionObjectImp::construct): |
| 19370 | * kjs/identifier.cpp: |
| 19371 | (KJS::Identifier::equal): |
| 19372 | (KJS::CStringTranslator::translate): |
| 19373 | * kjs/interpreter.h: |
| 19374 | * kjs/lexer.cpp: |
| 19375 | (KJS::Lexer::setCode): |
| 19376 | (KJS::Lexer::shift): |
| 19377 | (KJS::Lexer::lex): |
| 19378 | (KJS::Lexer::convertUnicode): |
| 19379 | (KJS::Lexer::makeIdentifier): |
| 19380 | * kjs/lookup.cpp: |
| 19381 | (KJS::keysMatch): |
| 19382 | * kjs/nodes2string.cpp: |
| 19383 | (KJS::escapeStringForPrettyPrinting): |
| 19384 | (KJS::SourceStream::operator<<): |
| 19385 | * kjs/regexp.cpp: |
| 19386 | (KJS::RegExp::RegExp): |
| 19387 | (KJS::RegExp::match): |
| 19388 | * kjs/string_object.cpp: |
| 19389 | (KJS::substituteBackreferences): |
| 19390 | (KJS::stringProtoFuncCharCodeAt): |
| 19391 | (KJS::stringProtoFuncToLowerCase): |
| 19392 | (KJS::stringProtoFuncToUpperCase): |
| 19393 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 19394 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 19395 | * kjs/ustring.cpp: |
| 19396 | (KJS::UString::Rep::computeHash): |
| 19397 | (KJS::UString::UString): |
| 19398 | (KJS::UString::append): |
| 19399 | (KJS::UString::ascii): |
| 19400 | (KJS::UString::operator=): |
| 19401 | (KJS::UString::is8Bit): |
| 19402 | (KJS::UString::toStrictUInt32): |
| 19403 | (KJS::UString::find): |
| 19404 | (KJS::operator==): |
| 19405 | (KJS::operator<): |
| 19406 | (KJS::compare): |
| 19407 | (KJS::UString::UTF8String): |
| 19408 | * kjs/ustring.h: |
| 19409 | * pcre/pcre.h: |
| 19410 | |
| 19411 | 2008-03-09 Steve Falkenburg <sfalken@apple.com> |
| 19412 | |
| 19413 | Stop Windows build if an error occurs in a prior project. |
| 19414 | |
| 19415 | Rubber stamped by Darin. |
| 19416 | |
| 19417 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 19418 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| 19419 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 19420 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: |
| 19421 | |
| 19422 | 2008-03-09 J¸rg Billeter <j@bitron.ch> |
| 19423 | |
| 19424 | Reviewed by Alp Toker. |
| 19425 | |
| 19426 | Conditionalise ICU for Unicode in the GTK+ port. |
| 19427 | |
| 19428 | * wtf/Platform.h: |
| 19429 | |
| 19430 | 2008-03-07 David D. Kilzer <ddkilzer@apple.com> |
| 19431 | |
| 19432 | Unify concept of enabling Netscape Plug-in API (NPAPI). |
| 19433 | |
| 19434 | Reviewed by Darin. |
| 19435 | |
| 19436 | * wtf/Platform.h: Define ENABLE_NETSCAPE_PLUGIN_API here. |
| 19437 | |
| 19438 | 2008-03-07 Geoffrey Garen <ggaren@apple.com> |
| 19439 | |
| 19440 | Reviewed by Darin Adler. |
| 19441 | |
| 19442 | Fixed <rdar://problem/5689093> Stricter (ES4) eval semantics |
| 19443 | |
| 19444 | The basic rule is: |
| 19445 | |
| 19446 | - "eval(s)" is treated as an operator that gives the ES3 eval behavior. |
| 19447 | ... but only if there is no overriding declaration of "eval" in scope. |
| 19448 | - All other invocations treat eval as a function that evaluates a |
| 19449 | script in the context of its "this" object. |
| 19450 | ... but if its "this" object is not the global object it was |
| 19451 | originally associated with, eval throws an exception. |
| 19452 | |
| 19453 | Because only expressions of the form "eval(s)" have access to local |
| 19454 | scope, the compiler can now statically determine whether a function |
| 19455 | needs local scope to be dynamic. |
| 19456 | |
| 19457 | * kjs/nodes.h: Added FunctionCallEvalNode. It works just like |
| 19458 | FuncationCallResolveNode, except it statically indicates that the node |
| 19459 | may execute eval in the ES3 way. |
| 19460 | * kjs/nodes.cpp: |
| 19461 | * kjs/nodes2string.cpp: |
| 19462 | |
| 19463 | * tests/mozilla/expected.html: This patch happens to fix a Mozilla JS |
| 19464 | test, but it's a bit of a pyrrhic victory. The test intends to test |
| 19465 | Mozilla's generic API for calling eval on any object, but, in reality, |
| 19466 | we only support calling eval on the global object. |
| 19467 | |
| 19468 | 2008-03-06 Steve Falkenburg <sfalken@apple.com> |
| 19469 | |
| 19470 | Build fix. |
| 19471 | |
| 19472 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: |
| 19473 | |
| 19474 | 2008-03-06 Steve Falkenburg <sfalken@apple.com> |
| 19475 | |
| 19476 | Build fix. |
| 19477 | |
| 19478 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 19479 | |
| 19480 | 2008-03-06 Alp Toker <alp@atoker.com> |
| 19481 | |
| 19482 | Fix the build fix in r30845 to support out-of-tree builds. |
| 19483 | |
| 19484 | * GNUmakefile.am: |
| 19485 | |
| 19486 | 2008-03-06 Steve Falkenburg <sfalken@apple.com> |
| 19487 | |
| 19488 | Build fix. |
| 19489 | |
| 19490 | * wtf/ThreadingWin.cpp: |
| 19491 | (WTF::ThreadCondition::timedWait): |
| 19492 | |
| 19493 | 2008-03-06 Darin Adler <darin@apple.com> |
| 19494 | |
| 19495 | - another small step towards fixing the Qt build |
| 19496 | |
| 19497 | * JavaScriptCore.pri: Remove more references to the now-obsolete bindings directory. |
| 19498 | |
| 19499 | 2008-03-06 Darin Adler <darin@apple.com> |
| 19500 | |
| 19501 | - a small step towards fixing the Qt build |
| 19502 | |
| 19503 | * JavaScriptCore.pri: Remove references to files no longer present in JavaScriptCore/bindings. |
| 19504 | |
| 19505 | 2008-03-06 Brady Eidson <beidson@apple.com> |
| 19506 | |
| 19507 | Gtk Build fix |
| 19508 | |
| 19509 | * wtf/ThreadingGtk.cpp: |
| 19510 | (WTF::ThreadCondition::timedWait): |
| 19511 | |
| 19512 | 2008-03-06 Alexey Proskuryakov <ap@webkit.org> |
| 19513 | |
| 19514 | Wx build fix. |
| 19515 | |
| 19516 | * wtf/unicode/icu/CollatorICU.cpp: |
| 19517 | (WTF::Collator::userDefault): Put ICU workaround under both PLATFORM(DARWIN) and |
| 19518 | PLATFORM(CF) checks, so that each port can decide if it wants to use CF on Mac for it. |
| 19519 | |
| 19520 | 2008-03-06 Brady Eidson <beidson@apple.com> |
| 19521 | |
| 19522 | Reviewed by Darin |
| 19523 | |
| 19524 | Add a timedWait() method to ThreadCondition |
| 19525 | |
| 19526 | * JavaScriptCore.exp: |
| 19527 | |
| 19528 | * wtf/Threading.h: |
| 19529 | |
| 19530 | * wtf/ThreadingGtk.cpp: |
| 19531 | (WTF::ThreadCondition::timedWait): |
| 19532 | |
| 19533 | * wtf/ThreadingNone.cpp: |
| 19534 | (WTF::ThreadCondition::timedWait): |
| 19535 | |
| 19536 | * wtf/ThreadingPthreads.cpp: |
| 19537 | (WTF::ThreadCondition::timedWait): |
| 19538 | |
| 19539 | * wtf/ThreadingWin.cpp: |
| 19540 | (WTF::ThreadCondition::timedWait): Needs implementation |
| 19541 | |
| 19542 | 2008-03-06 Alexey Proskuryakov <ap@webkit.org> |
| 19543 | |
| 19544 | More build fixes. |
| 19545 | |
| 19546 | * jscore.bkl: Add the wtf/unicode directory. |
| 19547 | * wtf/unicode/CollatorDefault.cpp: |
| 19548 | (WTF::Collator::userDefault): Use a constructor that does exist. |
| 19549 | * wtf/unicode/icu/CollatorICU.cpp: Mac build fix for case-sensitive file systems. |
| 19550 | |
| 19551 | 2008-03-06 Darin Adler <darin@apple.com> |
| 19552 | |
| 19553 | - try to fix the Qt build |
| 19554 | |
| 19555 | * JavaScriptCore.pri: Add the wtf/unicode directory. |
| 19556 | |
| 19557 | 2008-03-06 Darin Adler <darin@apple.com> |
| 19558 | |
| 19559 | - try to fix the GTK build |
| 19560 | |
| 19561 | * GNUmakefile.am: Add a -I for the wtf/unicode directory. |
| 19562 | |
| 19563 | 2008-03-06 Darin Adler <darin@apple.com> |
| 19564 | |
| 19565 | - try to fix the Mac build |
| 19566 | |
| 19567 | * icu/unicode/parseerr.h: Copied from ../WebCore/icu/unicode/parseerr.h. |
| 19568 | * icu/unicode/ucol.h: Copied from ../WebCore/icu/unicode/ucol.h. |
| 19569 | * icu/unicode/uloc.h: Copied from ../WebCore/icu/unicode/uloc.h. |
| 19570 | * icu/unicode/unorm.h: Copied from ../WebCore/icu/unicode/unorm.h. |
| 19571 | * icu/unicode/uset.h: Copied from ../WebCore/icu/unicode/uset.h. |
| 19572 | |
| 19573 | 2008-03-06 Alexey Proskuryakov <ap@webkit.org> |
| 19574 | |
| 19575 | Reviewed by Darin. |
| 19576 | |
| 19577 | <rdar://problem/5687269> Need to create a Collator abstraction for WebCore and JavaScriptCore |
| 19578 | |
| 19579 | * wtf/Threading.h: |
| 19580 | (WTF::initializeThreading): |
| 19581 | * wtf/ThreadingGtk.cpp: |
| 19582 | (WTF::initializeThreading): |
| 19583 | * wtf/ThreadingNone.cpp: |
| 19584 | * wtf/ThreadingPthreads.cpp: |
| 19585 | * wtf/ThreadingWin.cpp: |
| 19586 | Added AtomicallyInitializedStatic. |
| 19587 | |
| 19588 | * kjs/string_object.cpp: (KJS::localeCompare): Changed to use Collator. |
| 19589 | |
| 19590 | * GNUmakefile.am: |
| 19591 | * JavaScriptCore.exp: |
| 19592 | * JavaScriptCore.pri: |
| 19593 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 19594 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 19595 | * JavaScriptCoreSources.bkl: |
| 19596 | Added new fiiles to projects. |
| 19597 | |
| 19598 | * wtf/unicode/Collator.h: Added. |
| 19599 | (WTF::Collator::): |
| 19600 | * wtf/unicode/CollatorDefault.cpp: Added. |
| 19601 | (WTF::Collator::Collator): |
| 19602 | (WTF::Collator::~Collator): |
| 19603 | (WTF::Collator::setOrderLowerFirst): |
| 19604 | (WTF::Collator::collate): |
| 19605 | * wtf/unicode/icu/CollatorICU.cpp: Added. |
| 19606 | (WTF::cachedCollatorMutex): |
| 19607 | (WTF::Collator::Collator): |
| 19608 | (WTF::Collator::~Collator): |
| 19609 | (WTF::Collator::setOrderLowerFirst): |
| 19610 | (WTF::Collator::collate): |
| 19611 | (WTF::Collator::createCollator): |
| 19612 | (WTF::Collator::releaseCollator): |
| 19613 | |
| 19614 | 2008-03-05 Kevin Ollivier <kevino@theolliviers.com> |
| 19615 | |
| 19616 | Fix the wx build after the bindings move. |
| 19617 | |
| 19618 | * JavaScriptCoreSources.bkl: |
| 19619 | * jscore.bkl: |
| 19620 | |
| 19621 | 2008-03-05 Alp Toker <alp@atoker.com> |
| 19622 | |
| 19623 | GTK+ build fix for breakage introduced in r30800. |
| 19624 | |
| 19625 | Track moved bridge sources from JavaScriptCore to WebCore. |
| 19626 | |
| 19627 | * GNUmakefile.am: |
| 19628 | |
| 19629 | 2008-03-05 Brent Fulgham <bfulgham@gmail.com> |
| 19630 | |
| 19631 | Reviewed by Adam Roben. |
| 19632 | |
| 19633 | Remove definition of WTF_USE_SAFARI_THEME from wtf/Platform.h |
| 19634 | because the PLATFORM(CG) flag is not set until config.h has |
| 19635 | already included this file. |
| 19636 | |
| 19637 | * wtf/Platform.h: Remove useless definition of WTF_USE_SAFARI_THEME |
| 19638 | |
| 19639 | 2008-03-05 Brady Eidson <beidson@apple.com> |
| 19640 | |
| 19641 | Reviewed by Alexey and Mark Rowe |
| 19642 | |
| 19643 | Fix for <rdar://problem/5778247> - Reproducible crash on storage/execute-sql-args.html |
| 19644 | |
| 19645 | DatabaseThread::unscheduleDatabaseTasks() manually filters through a MessageQueue, |
| 19646 | removing particular items for Databases that were shutting down. |
| 19647 | |
| 19648 | This filtering operation is not atomic, and therefore causes a race condition with the |
| 19649 | MessageQueue waking up and reading from the message queue. |
| 19650 | |
| 19651 | The end result was an attempt to dereference a null DatabaseTask. Timing-wise, this never |
| 19652 | seemed to happen in a debug build, otherwise an assertion would've caught it. Replacing that |
| 19653 | assertion with a crash in a release build is what revealed this bug. |
| 19654 | |
| 19655 | * wtf/MessageQueue.h: |
| 19656 | (WTF::::waitForMessage): Tweak the waiting logic to check the queue's empty state then go back |
| 19657 | to sleep if the queue was empty - checking m_killed each time it wakes up. |
| 19658 | |
| 19659 | 2008-03-05 David D. Kilzer <ddkilzer@apple.com> |
| 19660 | |
| 19661 | Remove unused header includes from interpreter.cpp. |
| 19662 | |
| 19663 | Reviewed by Darin. |
| 19664 | |
| 19665 | * kjs/interpreter.cpp: Remove unused header includes. |
| 19666 | |
| 19667 | 2008-03-05 Anders Carlsson <andersca@apple.com> |
| 19668 | |
| 19669 | Reviewed by Sam. |
| 19670 | |
| 19671 | Remove bindings/. |
| 19672 | |
| 19673 | * bindings: Removed. |
| 19674 | |
| 19675 | 2008-03-05 Anders Carlsson <andersca@apple.com> |
| 19676 | |
| 19677 | Don't build bindings/ anymore. |
| 19678 | |
| 19679 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 19680 | |
| 19681 | 2008-03-05 Anders Carlsson <andersca@apple.com> |
| 19682 | |
| 19683 | Reviewed by Geoff. |
| 19684 | |
| 19685 | Don't build JavaScriptCore/bindings. |
| 19686 | |
| 19687 | * JavaScriptCore.exp: |
| 19688 | Export a couple of new functions. |
| 19689 | |
| 19690 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 19691 | Remove bindings/ |
| 19692 | |
| 19693 | * kjs/config.h: |
| 19694 | No need to define HAVE_JNI anymore. |
| 19695 | |
| 19696 | * kjs/interpreter.cpp: |
| 19697 | Remove unnecessary include. |
| 19698 | |
| 19699 | 2008-03-05 David D. Kilzer <ddkilzer@apple.com> |
| 19700 | |
| 19701 | Allow override of default script file name using command-line argument. |
| 19702 | |
| 19703 | Reviewed by Adele. |
| 19704 | |
| 19705 | * API/minidom.c: |
| 19706 | (main): Allow first command-line argument to override the default script |
| 19707 | file name of "minidom.js". |
| 19708 | * API/testapi.c: |
| 19709 | (main): Allow first command-line argument to override the default script |
| 19710 | file name of "testapi.js". |
| 19711 | |
| 19712 | 2008-03-04 Mark Rowe <mrowe@apple.com> |
| 19713 | |
| 19714 | Mac build fix. |
| 19715 | |
| 19716 | * JavaScriptCore.exp: Add new symbol to exports file. |
| 19717 | |
| 19718 | 2008-03-03 Oliver Hunt <oliver@apple.com> |
| 19719 | |
| 19720 | Reviewed by Anders. |
| 19721 | |
| 19722 | Make ForInNode check for the timeout interrupt |
| 19723 | |
| 19724 | * kjs/nodes.cpp: |
| 19725 | (KJS::ForInNode::execute): |
| 19726 | |
| 19727 | 2008-03-02 Brent Fulgham <bfulgham@gmail.com> |
| 19728 | |
| 19729 | Reviewed by Alp Toker. |
| 19730 | |
| 19731 | http://bugs.webkit.org/show_bug.cgi?id=17415 |
| 19732 | GTK Build (using autotools) on Mac OS (DarwinPorts) Fails |
| 19733 | |
| 19734 | Add -lstdc++ to link flags for minidom program. This corrects |
| 19735 | a build error for the GTK+ on Mac OS. |
| 19736 | |
| 19737 | * GNUmakefile.am: |
| 19738 | |
| 19739 | 2008-03-01 Mark Rowe <mrowe@apple.com> |
| 19740 | |
| 19741 | Reviewed by Tim Hatcher. |
| 19742 | |
| 19743 | Update Xcode configuration to support building debug and release from the mysterious future. |
| 19744 | |
| 19745 | * Configurations/Base.xcconfig: |
| 19746 | * Configurations/DebugRelease.xcconfig: |
| 19747 | |
| 19748 | 2008-02-29 Brent Fulgham <bfulgham@gmail.com> |
| 19749 | |
| 19750 | http://bugs.webkit.org/show_bug.cgi?id=17483 |
| 19751 | Implement scrollbars on Windows (Cairo) |
| 19752 | |
| 19753 | Reviewed by Adam Roben. |
| 19754 | |
| 19755 | * wtf/Platform.h: |
| 19756 | |
| 19757 | 2008-02-29 Adam Roben <aroben@apple.com> |
| 19758 | |
| 19759 | Remove unused DebuggerImp::abort and DebuggerImp::aborted |
| 19760 | |
| 19761 | Reviewed by Tim and Sam. |
| 19762 | |
| 19763 | * kjs/function_object.cpp: |
| 19764 | (KJS::FunctionObjectImp::construct): |
| 19765 | * kjs/internal.h: |
| 19766 | (KJS::DebuggerImp::DebuggerImp): |
| 19767 | * kjs/nodes.cpp: |
| 19768 | (KJS::Node::handleException): |
| 19769 | (KJS::FunctionBodyNodeWithDebuggerHooks::execute): |
| 19770 | |
| 19771 | 2008-02-28 Eric Christopher <echristo@apple.com> |
| 19772 | |
| 19773 | Reviewed by Geoffrey Garen. |
| 19774 | |
| 19775 | ** TOTAL **: 1.005x as fast 2867.6ms +/- 0.4% 2853.2ms +/- 0.3% significant |
| 19776 | |
| 19777 | * kjs/nodes.cpp: Tell the compiler that exceptions are unexpected (for |
| 19778 | the sake of branch prediction and code organization). |
| 19779 | |
| 19780 | 2008-02-27 Alexey Proskuryakov <ap@webkit.org> |
| 19781 | |
| 19782 | Reviewed by Sam Weinig. |
| 19783 | |
| 19784 | http://bugs.webkit.org/show_bug.cgi?id=17030 |
| 19785 | Small buffer overflow within initialization |
| 19786 | |
| 19787 | * kjs/date_object.cpp: |
| 19788 | (KJS::DateObjectFuncImp::callAsFunction): |
| 19789 | (KJS::parseDate): |
| 19790 | Remove unnecessary and incorrect memset() calls - GregorianDateTime can initialize itself. |
| 19791 | |
| 19792 | 2008-02-25 Sam Weinig <sam@webkit.org> |
| 19793 | |
| 19794 | Reviewed by Dan Bernstein. |
| 19795 | |
| 19796 | - Add a variant of remove that takes a position and a length. |
| 19797 | |
| 19798 | * wtf/Vector.h: |
| 19799 | (WTF::Vector::remove): |
| 19800 | |
| 19801 | 2008-02-25 Mark Mentovai <mark@moxienet.com> |
| 19802 | |
| 19803 | Reviewed by Mark Rowe. |
| 19804 | |
| 19805 | Enable CollectorHeapIntrospector to build by itself, as well as in an AllInOneFile build. |
| 19806 | http://bugs.webkit.org/show_bug.cgi?id=17538 |
| 19807 | |
| 19808 | * kjs/CollectorHeapIntrospector.cpp: Provide "using" declaration for |
| 19809 | WTF::RemoteMemoryReader. |
| 19810 | * kjs/collector.h: Move CollectorHeap declaration here... |
| 19811 | * kjs/collector.cpp: ... from here. |
| 19812 | |
| 19813 | 2008-02-25 Darin Adler <darin@apple.com> |
| 19814 | |
| 19815 | Reviewed by Adam. |
| 19816 | |
| 19817 | * JavaScriptCore.exp: Sort the contents of this file. |
| 19818 | |
| 19819 | 2008-02-25 Adam Roben <aroben@apple.com> |
| 19820 | |
| 19821 | MSVC build fix |
| 19822 | |
| 19823 | * kjs/testkjs.cpp: |
| 19824 | (functionQuit): Don't add a return statement after exit(0) for MSVC. |
| 19825 | |
| 19826 | 2008-02-24 Sam Weinig <sam@webkit.org> |
| 19827 | |
| 19828 | Reviewed by Mark Rowe. |
| 19829 | |
| 19830 | http://bugs.webkit.org/show_bug.cgi?id=17529 |
| 19831 | Add support for reading from stdin from testkjs |
| 19832 | |
| 19833 | * kjs/testkjs.cpp: |
| 19834 | (GlobalObject::GlobalObject): Add readline function to global object. |
| 19835 | (functionReadline): Added. Reads characters from stdin until a '\n' or |
| 19836 | EOF is encountered. The input is returned as a String to the caller. |
| 19837 | |
| 19838 | 2008-02-24 Sam Weinig <sam@webkit.org> |
| 19839 | |
| 19840 | Reviewed by Mark Rowe. |
| 19841 | |
| 19842 | http://bugs.webkit.org/show_bug.cgi?id=17528 |
| 19843 | Give testkjs a bath |
| 19844 | |
| 19845 | * JavaScriptCore.exp: |
| 19846 | * JavaScriptCore.xcodeproj/project.pbxproj: Make the testkjs.cpp use 4 space indentation. |
| 19847 | * kjs/testkjs.cpp: |
| 19848 | (StopWatch::getElapsedMS): |
| 19849 | (GlobalObject::className): |
| 19850 | (GlobalObject::GlobalObject): |
| 19851 | Rename GlobalImp to GlobalObject and setup the global functions |
| 19852 | in the GlobalObject's constructor. Also, use static functions for |
| 19853 | the implementation so we can use the standard PrototypeFunction |
| 19854 | class and remove TestFunctionImp. |
| 19855 | (functionPrint): Move print() functionality here. |
| 19856 | (functionDebug): Move debug() functionality here. |
| 19857 | (functionGC): Move gc() functionality here. |
| 19858 | (functionVersion): Move version() functionality here. |
| 19859 | (functionRun): Move run() functionality here. |
| 19860 | (functionLoad): Move load() functionality here. |
| 19861 | (functionQuit): Move quit() functionality here. |
| 19862 | (prettyPrintScript): Fix indentation. |
| 19863 | (runWithScripts): Since all the functionality of createGlobalObject is |
| 19864 | now in the GlobalObject constructor, just call new here. |
| 19865 | (parseArguments): Fix indentation. |
| 19866 | (kjsmain): Ditto |
| 19867 | (fillBufferWithContentsOfFile): Ditto. |
| 19868 | |
| 19869 | 2008-02-24 Sam Weinig <sam@webkit.org> |
| 19870 | |
| 19871 | Reviewed by Oliver Hunt and Mark Rowe. |
| 19872 | |
| 19873 | http://bugs.webkit.org/show_bug.cgi?id=17505 |
| 19874 | Add support for getting command line arguments in testkjs |
| 19875 | |
| 19876 | - This slightly changes the behavior of parsing arguments by requiring |
| 19877 | a '-f' before all files. |
| 19878 | |
| 19879 | * kjs/testkjs.cpp: |
| 19880 | (createGlobalObject): Add a global property called 'arguments' which |
| 19881 | contains an array with the parsed arguments as strings. |
| 19882 | (runWithScripts): Pass in the arguments vector so that it can be passed |
| 19883 | to the global object. |
| 19884 | (parseArguments): Change parsing rules to require a '-f' before any script |
| 19885 | file. After all '-f' and '-p' arguments have been parsed, the remaining |
| 19886 | are added to the arguments vector and exposed to the script. If there is a |
| 19887 | chance of ambiguity (the user wants to pass the string '-f' to the script), |
| 19888 | the string '--' can be used separate the options from the pass through |
| 19889 | arguments. |
| 19890 | (kjsmain): |
| 19891 | |
| 19892 | 2008-02-24 Dan Bernstein <mitz@apple.com> |
| 19893 | |
| 19894 | Reviewed by Darin Adler. |
| 19895 | |
| 19896 | - fix http://bugs.webkit.org/show_bug.cgi?id=17511 |
| 19897 | REGRESSION: Reproducible crash in SegmentedSubstring::SegmentedSubstring(SegmentedSubstring const&) |
| 19898 | |
| 19899 | * wtf/Deque.h: |
| 19900 | (WTF::::expandCapacityIfNeeded): Fixed the case where m_start and m_end |
| 19901 | are both zero but the buffer capacity is non-zero. |
| 19902 | (WTF::::prepend): Added validity checks. |
| 19903 | |
| 19904 | 2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com> |
| 19905 | |
| 19906 | Rubber stamped by Darin. |
| 19907 | |
| 19908 | Add separator '\' after libJavaScriptCore_la_LIBADD and cleanup |
| 19909 | whitespaces introduced in the previous commit. |
| 19910 | |
| 19911 | * GNUmakefile.am: |
| 19912 | |
| 19913 | 2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com> |
| 19914 | |
| 19915 | * GNUmakefile.am: Add GLOBALDEPS for testkjs and minidom. |
| 19916 | |
| 19917 | 2008-02-23 Darin Adler <darin@apple.com> |
| 19918 | |
| 19919 | Reviewed by Anders. |
| 19920 | |
| 19921 | - http://bugs.webkit.org/show_bug.cgi?id=17496 |
| 19922 | make Deque use a circular array; add iterators |
| 19923 | |
| 19924 | * wtf/Deque.h: Wrote an all-new version of this class that uses a circular |
| 19925 | buffer. Growth policy is identical to vector. Added iterators. |
| 19926 | |
| 19927 | * wtf/Vector.h: Made two small refinements while using this to implement |
| 19928 | Deque: Made VectorBufferBase derive from Noncopyable, which would have |
| 19929 | saved me some debugging time if it had been there. Renamed Impl and |
| 19930 | m_impl to Buffer and m_buffer. |
| 19931 | |
| 19932 | 2008-02-23 Darin Adler <darin@apple.com> |
| 19933 | |
| 19934 | Reviewed by Anders. |
| 19935 | |
| 19936 | - http://bugs.webkit.org/show_bug.cgi?id=17067 |
| 19937 | eliminate attributes parameter from JSObject::put for speed/clarity |
| 19938 | |
| 19939 | * API/JSCallbackObject.h: Removed attribute arguments. |
| 19940 | * API/JSCallbackObjectFunctions.h: |
| 19941 | (KJS::JSCallbackObject<Base>::put): Ditto. |
| 19942 | * API/JSObjectRef.cpp: |
| 19943 | (JSObjectSetProperty): Use initializeVariable or putDirect when necessary |
| 19944 | to set attribute values. |
| 19945 | * JavaScriptCore.exp: Updated. |
| 19946 | * bindings/objc/objc_runtime.h: Removed attribute arguments. |
| 19947 | * bindings/objc/objc_runtime.mm: |
| 19948 | (ObjcFallbackObjectImp::put): Ditto. |
| 19949 | * bindings/runtime_array.cpp: |
| 19950 | (RuntimeArray::put): Ditto. |
| 19951 | * bindings/runtime_array.h: Ditto. |
| 19952 | * bindings/runtime_object.cpp: |
| 19953 | (RuntimeObjectImp::put): Ditto. |
| 19954 | * bindings/runtime_object.h: Ditto. Also removed canPut which was only |
| 19955 | called from one place in WebCore that can use hasProperty instead. |
| 19956 | |
| 19957 | * kjs/Activation.h: Removed attribute argument from put and added the new |
| 19958 | initializeVariable function that's used to put variables in variable objects. |
| 19959 | Also made isActivationObject a const member. |
| 19960 | |
| 19961 | * kjs/JSGlobalObject.cpp: |
| 19962 | (KJS::JSGlobalObject::put): Removed attribute argument. |
| 19963 | (KJS::JSGlobalObject::initializeVariable): Added. Used to give variables |
| 19964 | their initial values, which can include the read-only property. |
| 19965 | (KJS::JSGlobalObject::reset): Removed obsolete comments about flags. |
| 19966 | Removed Internal flag, which is no longer needed. |
| 19967 | * kjs/JSGlobalObject.h: More of the same. |
| 19968 | |
| 19969 | * kjs/JSVariableObject.h: Added pure virtual initializeVariable function. |
| 19970 | (KJS::JSVariableObject::symbolTablePut): Removed checkReadOnly flag; we always |
| 19971 | check read-only. |
| 19972 | (KJS::JSVariableObject::symbolTableInitializeVariable): Added. |
| 19973 | |
| 19974 | * kjs/array_instance.cpp: |
| 19975 | (KJS::ArrayInstance::put): Removed attribute argument. |
| 19976 | * kjs/array_instance.h: Ditto. |
| 19977 | |
| 19978 | * kjs/function.cpp: |
| 19979 | (KJS::FunctionImp::put): Ditto. |
| 19980 | (KJS::Arguments::put): Ditto. |
| 19981 | (KJS::ActivationImp::put): Ditto. |
| 19982 | (KJS::ActivationImp::initializeVariable): Added. |
| 19983 | * kjs/function.h: Removed attribute arguments. |
| 19984 | |
| 19985 | * kjs/function_object.cpp: |
| 19986 | (KJS::FunctionObjectImp::construct): Removed Internal flag. |
| 19987 | |
| 19988 | * kjs/lookup.h: |
| 19989 | (KJS::lookupPut): Removed attributes argument. Also changed to use putDirect |
| 19990 | instead of calling JSObject::put. |
| 19991 | (KJS::cacheGlobalObject): Ditto. |
| 19992 | |
| 19993 | * kjs/nodes.cpp: |
| 19994 | (KJS::ConstDeclNode::handleSlowCase): Call initializeVariable to initialize |
| 19995 | the constant. |
| 19996 | (KJS::ConstDeclNode::evaluateSingle): Ditto. |
| 19997 | (KJS::TryNode::execute): Use putDirect to set up the new object. |
| 19998 | (KJS::FunctionBodyNode::processDeclarations): Removed Internal. |
| 19999 | (KJS::ProgramNode::processDeclarations): Ditto. |
| 20000 | (KJS::EvalNode::processDeclarations): Call initializeVariable to initialize |
| 20001 | the variables and functions. |
| 20002 | (KJS::FuncDeclNode::makeFunction): Removed Internal. |
| 20003 | (KJS::FuncExprNode::evaluate): Ditto. |
| 20004 | |
| 20005 | * kjs/object.cpp: Removed canPut, which was only being used in one code path, |
| 20006 | not the normal high speed one. |
| 20007 | (KJS::JSObject::put): Removed attribute argument. Moved the logic from |
| 20008 | canPut here, in the one code ath that was still using it. |
| 20009 | * kjs/object.h: Removed Internal attribute, ad canPut function. Removed the |
| 20010 | attributes argument to the put function. Made isActivationObject const. |
| 20011 | |
| 20012 | * kjs/regexp_object.cpp: |
| 20013 | (KJS::RegExpImp::put): Removed attributes argument. |
| 20014 | (KJS::RegExpImp::putValueProperty): Ditto. |
| 20015 | (KJS::RegExpObjectImp::put): Ditto. |
| 20016 | (KJS::RegExpObjectImp::putValueProperty): Ditto. |
| 20017 | * kjs/regexp_object.h: Ditto. |
| 20018 | |
| 20019 | * kjs/string_object.cpp: |
| 20020 | (KJS::StringInstance::put): Removed attributes argument. |
| 20021 | * kjs/string_object.h: Ditto. |
| 20022 | |
| 20023 | 2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com> |
| 20024 | |
| 20025 | Not reviewed, Gtk build fix. |
| 20026 | |
| 20027 | * kjs/testkjs.pro: |
| 20028 | |
| 20029 | 2008-02-23 Alexey Proskuryakov <ap@webkit.org> |
| 20030 | |
| 20031 | Windows build fix - move ThreadCondition implementation from WebCore to WTF. |
| 20032 | |
| 20033 | * wtf/ThreadingWin.cpp: |
| 20034 | (WTF::ThreadCondition::ThreadCondition): |
| 20035 | (WTF::ThreadCondition::~ThreadCondition): |
| 20036 | (WTF::ThreadCondition::wait): |
| 20037 | (WTF::ThreadCondition::signal): |
| 20038 | (WTF::ThreadCondition::broadcast): |
| 20039 | |
| 20040 | 2008-02-23 Alexey Proskuryakov <ap@webkit.org> |
| 20041 | |
| 20042 | Touch some files, hoping that Windows build bot will create JSC headers. |
| 20043 | |
| 20044 | * kjs/AllInOneFile.cpp: |
| 20045 | * kjs/array_instance.cpp: |
| 20046 | * wtf/HashTable.cpp: |
| 20047 | |
| 20048 | 2008-02-23 Alexey Proskuryakov <ap@webkit.org> |
| 20049 | |
| 20050 | Qt/Wx build fix - this file was still in a wrong namespace, too. |
| 20051 | |
| 20052 | * wtf/ThreadingNone.cpp: |
| 20053 | |
| 20054 | 2008-02-23 Alexey Proskuryakov <ap@webkit.org> |
| 20055 | |
| 20056 | More build fixing - fix mismatched braces. |
| 20057 | |
| 20058 | * JavaScriptCore.pri: |
| 20059 | |
| 20060 | 2008-02-23 Alexey Proskuryakov <ap@webkit.org> |
| 20061 | |
| 20062 | Wx and Gtk build fixes. |
| 20063 | |
| 20064 | * JavaScriptCore.pri: Don't try to compile ThreadingPthreads. |
| 20065 | * wtf/ThreadingGtk.cpp: Use a correct namespace. |
| 20066 | |
| 20067 | 2008-02-23 Alexey Proskuryakov <ap@webkit.org> |
| 20068 | |
| 20069 | Reviewed by Darin. |
| 20070 | |
| 20071 | Move basic threading support from WebCore to WTF. |
| 20072 | |
| 20073 | Added mutex protection to MessageQueue::killed() for paranoia sake. |
| 20074 | |
| 20075 | * GNUmakefile.am: |
| 20076 | * JavaScriptCore.exp: |
| 20077 | * JavaScriptCore.pri: |
| 20078 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 20079 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 20080 | * JavaScriptCoreSources.bkl: |
| 20081 | * wtf/Locker.h: Copied from WebCore/platform/Locker.h. |
| 20082 | * wtf/MessageQueue.h: Copied from WebCore/platform/MessageQueue.h. |
| 20083 | (WTF::::killed): |
| 20084 | * wtf/Threading.h: Copied from WebCore/platform/Threading.h. |
| 20085 | * wtf/ThreadingGtk.cpp: Copied from WebCore/platform/gtk/ThreadingGtk.cpp. |
| 20086 | (WebCore::createThread): |
| 20087 | * wtf/ThreadingNone.cpp: Copied from WebCore/platform/ThreadingNone.cpp. |
| 20088 | * wtf/ThreadingPthreads.cpp: Copied from WebCore/platform/pthreads/ThreadingPthreads.cpp. |
| 20089 | (WTF::createThread): |
| 20090 | * wtf/ThreadingWin.cpp: Copied from WebCore/platform/win/ThreadingWin.cpp. |
| 20091 | (WTF::createThread): |
| 20092 | (WTF::Mutex::Mutex): |
| 20093 | (WTF::Mutex::~Mutex): |
| 20094 | (WTF::Mutex::lock): |
| 20095 | (WTF::Mutex::tryLock): |
| 20096 | (WTF::Mutex::unlock): |
| 20097 | |
| 20098 | 2008-02-22 Geoffrey Garen <ggaren@apple.com> |
| 20099 | |
| 20100 | Reviewed by Sam Weinig. |
| 20101 | |
| 20102 | Partial fix for <rdar://problem/5744037> Gmail out of memory (17455) |
| 20103 | |
| 20104 | I'm removing KJS_MEM_LIMIT for the following reasons: |
| 20105 | |
| 20106 | - We have a few reports of KJS_MEM_LIMIT breaking important web |
| 20107 | applications, like GMail and Google Reader. (For example, if you |
| 20108 | simply open 12 GMail tabs, tab #12 will hit the limit.) |
| 20109 | |
| 20110 | - Firefox has no discernable JS object count limit, so any limit, even |
| 20111 | a large one, is a potential compatibility problem. |
| 20112 | |
| 20113 | - KJS_MEM_LIMIT does not protect against malicious memory allocation, |
| 20114 | since there are many ways to maliciously allocate memory without |
| 20115 | increasing the JS object count. |
| 20116 | |
| 20117 | - KJS_MEM_LIMIT is already mostly broken, since it only aborts the |
| 20118 | script that breaches the limit, not any subsequent scripts. |
| 20119 | |
| 20120 | - We've never gotten bug reports about websites that would have |
| 20121 | benefited from an unbroken KJS_MEM_LIMIT. The initial check-in of |
| 20122 | KJS_MEM_LIMIT (KJS revision 80061) doesn't mention a website that |
| 20123 | needed it. |
| 20124 | |
| 20125 | - Any website that brings you anywhere close to crashing due to the |
| 20126 | number of live JS objects will almost certainly put up the "slow |
| 20127 | script" dialog at least 20 times beforehand. |
| 20128 | |
| 20129 | * kjs/collector.cpp: |
| 20130 | (KJS::Collector::collect): |
| 20131 | * kjs/collector.h: |
| 20132 | * kjs/nodes.cpp: |
| 20133 | (KJS::TryNode::execute): |
| 20134 | |
| 20135 | 2008-02-22 Oliver Hunt <oliver@apple.com> |
| 20136 | |
| 20137 | Reviewed by Alexey P. |
| 20138 | |
| 20139 | <rdar://problem/5759327> REGRESSION: while(NaN) acts like while(true) |
| 20140 | |
| 20141 | Fix yet another case where we incorrectly relied on implicit double |
| 20142 | to bool coercion. |
| 20143 | |
| 20144 | * kjs/nodes.cpp: |
| 20145 | (KJS::PostDecLocalVarNode::evaluateToBoolean): |
| 20146 | |
| 20147 | 2008-02-20 Michael Knaup <michael.knaup@mac.com> |
| 20148 | |
| 20149 | Reviewed by Darin. |
| 20150 | |
| 20151 | Fix for Bug 16753: date set methods with no args should result in NaN (Acid3 bug) |
| 20152 | The set values result in NaN now when called with no args, NaN or +/- inf values. |
| 20153 | The setYear, setFullYear and setUTCFullYear methods used on NaN dates work as |
| 20154 | descripted in the standard. |
| 20155 | |
| 20156 | * kjs/date_object.cpp: |
| 20157 | (KJS::fillStructuresUsingTimeArgs): |
| 20158 | (KJS::fillStructuresUsingDateArgs): |
| 20159 | (KJS::setNewValueFromTimeArgs): |
| 20160 | (KJS::setNewValueFromDateArgs): |
| 20161 | (KJS::dateProtoFuncSetYear): |
| 20162 | |
| 20163 | 2008-02-19 Anders Carlsson <andersca@apple.com> |
| 20164 | |
| 20165 | Reviewed by Darin. |
| 20166 | |
| 20167 | Change OpaqueJSClass and RootObject to start with a ref count of 1. |
| 20168 | |
| 20169 | * API/JSClassRef.cpp: |
| 20170 | (OpaqueJSClass::OpaqueJSClass): |
| 20171 | (OpaqueJSClass::createNoAutomaticPrototype): |
| 20172 | (OpaqueJSClass::create): |
| 20173 | * API/JSClassRef.h: |
| 20174 | * API/JSObjectRef.cpp: |
| 20175 | (JSClassCreate): |
| 20176 | * bindings/runtime_root.cpp: |
| 20177 | (KJS::Bindings::RootObject::create): |
| 20178 | (KJS::Bindings::RootObject::RootObject): |
| 20179 | |
| 20180 | 2008-02-19 Darin Adler <darin@apple.com> |
| 20181 | |
| 20182 | Rubber stamped by Anders. |
| 20183 | |
| 20184 | - removed explicit initialization to 1 for RefCounted; that's now the default |
| 20185 | |
| 20186 | * kjs/regexp.cpp: |
| 20187 | (KJS::RegExp::RegExp): Removed RefCounted initializer. |
| 20188 | |
| 20189 | 2008-02-19 Darin Adler <darin@apple.com> |
| 20190 | |
| 20191 | Reviewed by Anders. |
| 20192 | |
| 20193 | - next step for http://bugs.webkit.org/show_bug.cgi?id=17257 |
| 20194 | start ref counts at 1 instead of 0 for speed |
| 20195 | |
| 20196 | * wtf/RefCounted.h: |
| 20197 | (WTF::RefCounted::RefCounted): Have refcounts default to 1. This allows us to start |
| 20198 | removing the explicit initialization of RefCounted from classes and eventually we |
| 20199 | can remove the ability to have the initial count of 0 entirely. |
| 20200 | |
| 20201 | 2008-02-18 Samuel Weinig <sam@webkit.org> |
| 20202 | |
| 20203 | Reviewed by Geoff Garen. |
| 20204 | |
| 20205 | Fix for http://bugs.webkit.org/show_bug.cgi?id=17419 |
| 20206 | Remove CompatMode from JavaScriptCore as it is never set to anything other than NativeMode |
| 20207 | |
| 20208 | * kjs/JSGlobalObject.cpp: |
| 20209 | (KJS::JSGlobalObject::init): |
| 20210 | * kjs/JSGlobalObject.h: |
| 20211 | (KJS::JSGlobalObject::setDebugger): |
| 20212 | * kjs/date_object.cpp: |
| 20213 | (KJS::dateProtoFuncGetYear): |
| 20214 | |
| 20215 | 2008-02-18 Darin Adler <darin@apple.com> |
| 20216 | |
| 20217 | Reviewed by Sam. |
| 20218 | |
| 20219 | * wtf/ASCIICType.h: |
| 20220 | (WTF::toASCIIHexValue): Added. |
| 20221 | |
| 20222 | 2008-02-17 Darin Adler <darin@apple.com> |
| 20223 | |
| 20224 | * wtf/ListHashSet.h: (WTF::swap): Removed stray return statement. |
| 20225 | |
| 20226 | 2008-02-15 Adam Roben <aroben@apple.com> |
| 20227 | |
| 20228 | Make JavaScriptCore's FEATURE_DEFINES match WebCore's |
| 20229 | |
| 20230 | Reviewed by Mark. |
| 20231 | |
| 20232 | * Configurations/JavaScriptCore.xcconfig: |
| 20233 | |
| 20234 | 2008-02-14 Stephanie Lewis <slewis@apple.com> |
| 20235 | |
| 20236 | Reviewed by Geoff. |
| 20237 | |
| 20238 | Update order files. |
| 20239 | |
| 20240 | * JavaScriptCore.order: |
| 20241 | |
| 20242 | 2008-02-14 Geoffrey Garen <ggaren@apple.com> |
| 20243 | |
| 20244 | Reviewed by Sam Weinig. |
| 20245 | |
| 20246 | Fixed <rdar://problem/5737835> nee http://bugs.webkit.org/show_bug.cgi?id=17329 |
| 20247 | Crash in JSGlobalObject::popActivation when inserting hyperlink in Wordpress (17329) |
| 20248 | |
| 20249 | Don't reset the "activations" stack in JSGlobalObject::reset, since we |
| 20250 | might be executing a script during the call to reset, and the script |
| 20251 | needs to safely run to completion. |
| 20252 | |
| 20253 | Instead, initialize the "activations" stack when the global object is |
| 20254 | created, and subsequently rely on pushing and popping during normal |
| 20255 | execution to maintain the stack's state. |
| 20256 | |
| 20257 | * kjs/JSGlobalObject.cpp: |
| 20258 | (KJS::JSGlobalObject::init): |
| 20259 | (KJS::JSGlobalObject::reset): |
| 20260 | |
| 20261 | 2008-02-13 Bernhard Rosenkraenzer <bero@arklinux.org> |
| 20262 | |
| 20263 | Reviewed by Darin. |
| 20264 | |
| 20265 | - http://bugs.webkit.org/show_bug.cgi?id=17339 |
| 20266 | JavaScriptCore does not build with gcc 4.3 |
| 20267 | |
| 20268 | * kjs/interpreter.cpp: Add include of <unistd.h>, since that's where |
| 20269 | getpid() comes from. |
| 20270 | |
| 20271 | 2008-02-13 Oliver Hunt <oliver@apple.com> |
| 20272 | |
| 20273 | Reviewed by Alexey P. |
| 20274 | |
| 20275 | <rdar://problem/5737003> REGRESSION (r27747): can't browse pictures on fastcupid.com |
| 20276 | |
| 20277 | When converting numeric values to booleans we need to account for NaN |
| 20278 | |
| 20279 | * kjs/nodes.cpp: |
| 20280 | (KJS::MultNode::evaluateToBoolean): |
| 20281 | (KJS::ModNode::evaluateToBoolean): |
| 20282 | |
| 20283 | 2008-02-08 Samuel Weinig <sam@webkit.org> |
| 20284 | |
| 20285 | Reviewed by Brady Eidson. |
| 20286 | |
| 20287 | <rdar://problem/5659216> REGRESSION: PLT 0.3% slower due to r28868 (caching ClassNodeList and NamedNodeList) |
| 20288 | |
| 20289 | - Tweak the statements in isASCIISpace to account for the statistical distribution of |
| 20290 | usage in the PLT. |
| 20291 | |
| 20292 | .4% speedup on my machine. Stephanie's machine shows this as .3% speedup. |
| 20293 | |
| 20294 | * wtf/ASCIICType.h: |
| 20295 | (WTF::isASCIISpace): |
| 20296 | |
| 20297 | 2008-02-11 Sam Weinig <sam@webkit.org> |
| 20298 | |
| 20299 | Reviewed by Anders Carlsson. |
| 20300 | |
| 20301 | Fixes for: |
| 20302 | <rdar://problem/5735497> Match Firefox's cross-domain model more accurately by return the built-in version of functions even if they have been overridden |
| 20303 | <rdar://problem/5735443> Crash when setting the Window objects prototype to a custom Object and then calling a method on it |
| 20304 | |
| 20305 | - Expose the native Object.prototype.toString implementation so that it can be used for cross-domain |
| 20306 | toString calling. |
| 20307 | |
| 20308 | * JavaScriptCore.exp: |
| 20309 | * kjs/object_object.cpp: |
| 20310 | * kjs/object_object.h: |
| 20311 | |
| 20312 | 2008-02-10 Darin Adler <darin@apple.com> |
| 20313 | |
| 20314 | Rubber stamped by Eric. |
| 20315 | |
| 20316 | * kjs/ExecState.h: |
| 20317 | (KJS::ExecState::takeException): Added. |
| 20318 | |
| 20319 | 2008-02-10 Darin Adler <darin@apple.com> |
| 20320 | |
| 20321 | Reviewed by Eric. |
| 20322 | |
| 20323 | - http://bugs.webkit.org/show_bug.cgi?id=17256 |
| 20324 | eliminate default ref. count of 0 in RefCounted class |
| 20325 | |
| 20326 | * wtf/RefCounted.h: |
| 20327 | (WTF::RefCounted::RefCounted): Remove default of 0. |
| 20328 | |
| 20329 | 2008-02-10 Darin Adler <darin@apple.com> |
| 20330 | |
| 20331 | Reviewed by Eric. |
| 20332 | |
| 20333 | - http://bugs.webkit.org/show_bug.cgi?id=17256 |
| 20334 | Make clients of RefCounted explicitly set the count to 0. |
| 20335 | |
| 20336 | * API/JSClassRef.cpp: |
| 20337 | (OpaqueJSClass::OpaqueJSClass): |
| 20338 | * bindings/runtime_root.cpp: |
| 20339 | (KJS::Bindings::RootObject::RootObject): |
| 20340 | |
| 20341 | 2008-02-09 Darin Adler <darin@apple.com> |
| 20342 | |
| 20343 | Reviewed by Mitz. |
| 20344 | |
| 20345 | - http://bugs.webkit.org/show_bug.cgi?id=17256 |
| 20346 | Change RegExp to start its ref count at 1, not 0 |
| 20347 | |
| 20348 | We'll want to do this to every RefCounted class, one at a time. |
| 20349 | |
| 20350 | * kjs/nodes.h: |
| 20351 | (KJS::RegExpNode::RegExpNode): Use RegExp::create instead of new RegExp. |
| 20352 | * kjs/regexp.cpp: |
| 20353 | (KJS::RegExp::RegExp): Marked inline, set initial ref count to 1. |
| 20354 | (KJS::RegExp::create): Added. Calls new RegExp then adopts the initial ref. |
| 20355 | * kjs/regexp.h: Reformatted. Made the constructors private. Added static |
| 20356 | create functions that return objects already wrapped in PassRefPtr. |
| 20357 | * kjs/regexp_object.cpp: |
| 20358 | (KJS::regExpProtoFuncCompile): Use RegExp::create instead of new RegExp. |
| 20359 | (KJS::RegExpObjectImp::construct): Ditto. |
| 20360 | * kjs/string_object.cpp: |
| 20361 | (KJS::stringProtoFuncMatch): Ditto. |
| 20362 | (KJS::stringProtoFuncSearch): Ditto. |
| 20363 | |
| 20364 | 2008-02-08 Oliver Hunt <oliver@apple.com> |
| 20365 | |
| 20366 | Reviewed by Maciej. |
| 20367 | |
| 20368 | <rdar://problem/5731773> REGRESSION (r28973): Extraneous parentheses in function.toString() |
| 20369 | https://bugs.webkit.org/show_bug.cgi?id=17214 |
| 20370 | |
| 20371 | Make a subclass of CommaNode to provide the correct precedence for each expression in |
| 20372 | a variable declaration list. |
| 20373 | |
| 20374 | * kjs/grammar.y: |
| 20375 | * kjs/nodes.h: |
| 20376 | (KJS::VarDeclCommaNode::): |
| 20377 | |
| 20378 | 2008-02-08 Darin Adler <darin@apple.com> |
| 20379 | |
| 20380 | Reviewed by Oliver. |
| 20381 | |
| 20382 | - fix http://bugs.webkit.org/show_bug.cgi?id=17247 |
| 20383 | Labelled continue/break can fail in some cases |
| 20384 | |
| 20385 | Test: fast/js/continue-break-multiple-labels.html |
| 20386 | |
| 20387 | * kjs/nodes.h: |
| 20388 | (KJS::StatementNode::pushLabel): Made this virtual. |
| 20389 | (KJS::LabelNode::pushLabel): Forward pushLabel calls to the statement inside. |
| 20390 | |
| 20391 | 2008-02-08 Darin Adler <darin@apple.com> |
| 20392 | |
| 20393 | Reviewed by Eric. |
| 20394 | |
| 20395 | - fix http://bugs.webkit.org/show_bug.cgi?id=15003 |
| 20396 | Function.prototype.constructor should not be DontDelete/ReadOnly (Acid3 bug) |
| 20397 | |
| 20398 | Test: fast/js/constructor-attributes.html |
| 20399 | |
| 20400 | * kjs/JSGlobalObject.cpp: |
| 20401 | (KJS::JSGlobalObject::reset): Remove unwanted attributes from "constructor". |
| 20402 | * kjs/function_object.cpp: |
| 20403 | (KJS::FunctionObjectImp::construct): Ditto. |
| 20404 | * kjs/nodes.cpp: |
| 20405 | (KJS::FuncDeclNode::makeFunction): Ditto. |
| 20406 | (KJS::FuncExprNode::evaluate): Ditto. |
| 20407 | |
| 20408 | 2008-02-06 Geoffrey Garen <ggaren@apple.com> |
| 20409 | |
| 20410 | Reviewed by Oliver Hunt. |
| 20411 | |
| 20412 | Added an ASSERT to catch refCount underflow, since it caused a leak in |
| 20413 | my last check-in. |
| 20414 | |
| 20415 | * wtf/RefCounted.h: |
| 20416 | (WTF::RefCounted::deref): |
| 20417 | |
| 20418 | 2008-02-06 Geoffrey Garen <ggaren@apple.com> |
| 20419 | |
| 20420 | Reviewed by Darin Adler. |
| 20421 | |
| 20422 | PLT speedup related to <rdar://problem/5659272> REGRESSION: PLT .4% |
| 20423 | slower due to r28884 (global variable symbol table optimization) |
| 20424 | |
| 20425 | Tweaked RefCounted::deref() to be a little more efficient. |
| 20426 | |
| 20427 | 1% - 1.5% speedup on my machine. .7% speedup on Stephanie's machine. |
| 20428 | |
| 20429 | * wtf/RefCounted.h: |
| 20430 | (WTF::RefCounted::deref): Don't modify m_refCount if we're just going |
| 20431 | to delete the object anyway. Also, use a simple == test, which might be |
| 20432 | faster than <= on some hardware. |
| 20433 | |
| 20434 | 2008-02-06 Darin Adler <darin@apple.com> |
| 20435 | |
| 20436 | Reviewed by Sam. |
| 20437 | |
| 20438 | - fix http://bugs.webkit.org/show_bug.cgi?id=17094 |
| 20439 | Array.prototype functions create length properties with DontEnum/DontDelete |
| 20440 | |
| 20441 | Test results match Gecko with very few obscure exceptions that seem to be |
| 20442 | bugs in Gecko. |
| 20443 | |
| 20444 | Test: fast/js/array-functions-non-arrays.html |
| 20445 | |
| 20446 | * kjs/array_object.cpp: |
| 20447 | (KJS::arrayProtoFuncConcat): Removed DontEnum and DontDelete from the call |
| 20448 | to set length. |
| 20449 | (KJS::arrayProtoFuncPop): Ditto. Also added missing call to deleteProperty, |
| 20450 | which is not needed for real arrays, but is needed for non-arrays. |
| 20451 | (KJS::arrayProtoFuncPush): Ditto. |
| 20452 | (KJS::arrayProtoFuncShift): Ditto. |
| 20453 | (KJS::arrayProtoFuncSlice): Ditto. |
| 20454 | (KJS::arrayProtoFuncSort): Removed incorrect call to set length when |
| 20455 | the array has no elements. |
| 20456 | (KJS::arrayProtoFuncSplice): Removed DontEnum and DontDelete from the call |
| 20457 | to set length. |
| 20458 | (KJS::arrayProtoFuncUnShift): Ditto. Also added a check for 0 arguments to |
| 20459 | make behavior match the specification in that case. |
| 20460 | * kjs/nodes.cpp: |
| 20461 | (KJS::ArrayNode::evaluate): Removed DontEnum and DontDelete from the call |
| 20462 | to set length. |
| 20463 | |
| 20464 | 2008-02-06 Darin Adler <darin@apple.com> |
| 20465 | |
| 20466 | Reviewed by Sam. |
| 20467 | |
| 20468 | - replace calls to put to set up properties with calls to putDirect, to |
| 20469 | prepare for a future change where put won't take attributes any more, |
| 20470 | and for a slight performance boost |
| 20471 | |
| 20472 | * API/JSObjectRef.cpp: |
| 20473 | (JSObjectMakeConstructor): Use putDirect instead of put. |
| 20474 | * kjs/CommonIdentifiers.h: Removed lastIndex. |
| 20475 | * kjs/JSGlobalObject.cpp: |
| 20476 | (KJS::JSGlobalObject::reset): Use putDirect instead of put. |
| 20477 | * kjs/array_object.cpp: |
| 20478 | (KJS::arrayProtoFuncConcat): Took out extra call to get length (unused). |
| 20479 | (KJS::ArrayObjectImp::ArrayObjectImp): Use putDirect instead of put. |
| 20480 | * kjs/error_object.cpp: |
| 20481 | (KJS::ErrorPrototype::ErrorPrototype): Use putDirect instead of put. |
| 20482 | * kjs/function.cpp: |
| 20483 | (KJS::Arguments::Arguments): Use putDirect instead of put. |
| 20484 | (KJS::PrototypeFunction::PrototypeFunction): Use putDirect instead of put. |
| 20485 | * kjs/function_object.cpp: |
| 20486 | (KJS::FunctionObjectImp::construct): Use putDirect instead of put. |
| 20487 | * kjs/nodes.cpp: |
| 20488 | (KJS::FuncDeclNode::makeFunction): Use putDirect instead of put. |
| 20489 | (KJS::FuncExprNode::evaluate): Use putDirect instead of put. |
| 20490 | * kjs/regexp_object.cpp: |
| 20491 | (KJS::regExpProtoFuncCompile): Use setLastIndex instead of put(lastIndex). |
| 20492 | (KJS::RegExpImp::match): Get and set lastIndex by using m_lastIndex instead of |
| 20493 | calling get and put. |
| 20494 | * kjs/regexp_object.h: |
| 20495 | (KJS::RegExpImp::setLastIndex): Added. |
| 20496 | * kjs/string_object.cpp: |
| 20497 | (KJS::stringProtoFuncMatch): Use setLastIndex instead of put(lastIndex). |
| 20498 | |
| 20499 | 2008-02-05 Sam Weinig <sam@webkit.org> |
| 20500 | |
| 20501 | Reviewed by Anders Carlsson. |
| 20502 | |
| 20503 | Fix for http://bugs.webkit.org/show_bug.cgi?id=8080 |
| 20504 | NodeList (and other DOM lists) items are not enumeratable using for..in |
| 20505 | |
| 20506 | * JavaScriptCore.exp: |
| 20507 | |
| 20508 | 2008-02-05 Mark Rowe <mrowe@apple.com> |
| 20509 | |
| 20510 | Reviewed by Oliver Hunt. |
| 20511 | |
| 20512 | Update versioning to support the mysterious future. |
| 20513 | |
| 20514 | * Configurations/Version.xcconfig: Add SYSTEM_VERSION_PREFIX_1060. |
| 20515 | |
| 20516 | 2008-02-04 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 20517 | |
| 20518 | Reviewed by Oliver Hunt. |
| 20519 | |
| 20520 | Fixes Bug 16889: REGRESSION (r29425): Canvas-based graphing calculator fails to run |
| 20521 | Bug 17015: REGRESSION (r29414-29428): www.fox.com "shows" menu fails to render |
| 20522 | Bug 17164: REGRESSION: JavaScript pop-up menu appears at wrong location when hovering image at http://news.chinatimes.com/ |
| 20523 | |
| 20524 | <http://bugs.webkit.org/show_bug.cgi?id=16889> |
| 20525 | <rdar://problem/5696255> |
| 20526 | |
| 20527 | <http://bugs.webkit.org/show_bug.cgi?id=17015> |
| 20528 | |
| 20529 | <http://bugs.webkit.org/show_bug.cgi?id=17164> |
| 20530 | <rdar://problem/5720947> |
| 20531 | |
| 20532 | The ActivationImp tear-off (r29425) introduced a problem with ReadModify |
| 20533 | nodes that first resolve a slot, call valueForReadModifyNode(), and then |
| 20534 | store a value in the previously resolved slot. Since valueForReadModifyNode() |
| 20535 | may cause a tear-off, the slot needs to be resolved again, but this was |
| 20536 | not happening with the existing code. |
| 20537 | |
| 20538 | * kjs/nodes.cpp: |
| 20539 | (KJS::ReadModifyLocalVarNode::evaluate): |
| 20540 | (KJS::ReadModifyResolveNode::evaluate): |
| 20541 | |
| 20542 | 2008-02-04 Cameron McCormack <cam@mcc.id.au> |
| 20543 | |
| 20544 | Reviewed by Geoff Garen. |
| 20545 | |
| 20546 | Remove some unneccesary UNUSED_PARAMs. Clarify ownership rule of return value of JSObjectCopyPropertyNames. |
| 20547 | |
| 20548 | * API/JSNode.c: |
| 20549 | (JSNode_appendChild): |
| 20550 | (JSNode_removeChild): |
| 20551 | (JSNode_replaceChild): |
| 20552 | (JSNode_getNodeType): |
| 20553 | (JSNode_getFirstChild): |
| 20554 | * API/JSNodeList.c: |
| 20555 | (JSNodeList_length): |
| 20556 | * API/JSObjectRef.h: |
| 20557 | |
| 20558 | 2008-02-04 Rodney Dawes <dobey@wayofthemonkey.com> |
| 20559 | |
| 20560 | Reviewed by Alp Toker and Mark Rowe. |
| 20561 | |
| 20562 | Fix http://bugs.webkit.org/show_bug.cgi?id=17175. |
| 20563 | Bug 17175: Use of C++ compiler flags in CFLAGS |
| 20564 | |
| 20565 | * GNUmakefile.am: Use global_cxxflags as well as global_cflags in CXXFLAGS. |
| 20566 | |
| 20567 | 2008-02-04 Alp Toker <alp@atoker.com> |
| 20568 | |
| 20569 | Rubber-stamped by Mark Rowe. |
| 20570 | |
| 20571 | Remove all trailing whitespace in the GTK+ port and related |
| 20572 | components. |
| 20573 | |
| 20574 | * GNUmakefile.am: |
| 20575 | |
| 20576 | 2008-02-02 Darin Adler <darin@apple.com> |
| 20577 | |
| 20578 | Reviewed by Geoff Garen. |
| 20579 | |
| 20580 | PLT speedup related to <rdar://problem/5659272> REGRESSION: PLT .4% |
| 20581 | slower due to r28884 (global variable symbol table optimization) |
| 20582 | |
| 20583 | Geoff's theory is that the slowdown was due to copying hash tables when |
| 20584 | putting things into the back/forward cache. If that's true, then this |
| 20585 | should fix the problem. |
| 20586 | |
| 20587 | (According to Geoff's measurements, in a PLT that exaggerates the |
| 20588 | importance of symbol table saving during cached page creation, this |
| 20589 | patch is a ~3X speedup in cached page creation, and a 9% speedup overall.) |
| 20590 | |
| 20591 | * JavaScriptCore.exp: Updated. |
| 20592 | |
| 20593 | * kjs/JSVariableObject.cpp: |
| 20594 | (KJS::JSVariableObject::saveLocalStorage): Updated for changes to SavedProperty, |
| 20595 | which has been revised to avoid initializing each SavedProperty twice when building |
| 20596 | the array. Store the property names too, so we don't have to store the symbol table |
| 20597 | separately. Do this by iterating the symbol table instead of the local storage vector. |
| 20598 | (KJS::JSVariableObject::restoreLocalStorage): Ditto. Restore the symbol table as |
| 20599 | well as the local storage vector. |
| 20600 | |
| 20601 | * kjs/JSVariableObject.h: Removed save/restoreSymbolTable and do that work inside |
| 20602 | save/restoreLocalStorage instead. Made restoreLocalStorage a non-const member function |
| 20603 | that takes a const reference to a SavedProperties object. |
| 20604 | |
| 20605 | * kjs/LocalStorage.h: Changed attributes to be unsigned instead of int to match |
| 20606 | other declarations of attributes elsewhere. |
| 20607 | |
| 20608 | * kjs/property_map.cpp: |
| 20609 | (KJS::SavedProperties::SavedProperties): Updated for data member name change. |
| 20610 | (KJS::PropertyMap::save): Updated for data member name change and to use the new |
| 20611 | inline init function instead of setting the fields directly. This allows us to |
| 20612 | skip initializing the SavedProperty objects when first allocating the array, and |
| 20613 | just do it when we're actually setting up the individual elements. |
| 20614 | (KJS::PropertyMap::restore): Updated for SavedProperty changes. |
| 20615 | |
| 20616 | * kjs/property_map.h: Changed SavedProperty from a struct to a class. Set it up so |
| 20617 | it does not get initialized at construction time to avoid initializing twice when |
| 20618 | creating an array of SavedProperty. Removed the m_ prefixes from the members of |
| 20619 | the SavedProperties struct. Generally we use m_ for class members and not struct. |
| 20620 | |
| 20621 | 2008-02-02 Tony Chang <idealisms@gmail.com> |
| 20622 | |
| 20623 | Reviewed by darin. Landed by eseidel. |
| 20624 | |
| 20625 | Add #define guards for WIN32_LEAN_AND_MEAN and _CRT_RAND_S. |
| 20626 | |
| 20627 | * kjs/config.h: |
| 20628 | * wtf/FastMalloc.cpp: |
| 20629 | * wtf/TCSpinLock.h: |
| 20630 | |
| 20631 | 2008-01-28 Sam Weinig <sam@webkit.org> |
| 20632 | |
| 20633 | Rubber-stamped by Darin Adler. |
| 20634 | |
| 20635 | - Fix whitespace in nodes.h/cpp and nodes2string.cpp. |
| 20636 | |
| 20637 | (NOTE: Specific changed functions elided for space and clarity) |
| 20638 | * kjs/nodes.cpp: |
| 20639 | * kjs/nodes.h: |
| 20640 | * kjs/nodes2string.cpp: |
| 20641 | |
| 20642 | 2008-01-27 Sam Weinig <sam@webkit.org> |
| 20643 | |
| 20644 | Reviewed by Oliver Hunt. |
| 20645 | |
| 20646 | Patch for http://bugs.webkit.org/show_bug.cgi?id=17025 |
| 20647 | nodes.h/cpp has been rolling around in the mud - lets hose it down |
| 20648 | |
| 20649 | - Rename member variables to use the m_ prefix. |
| 20650 | |
| 20651 | (NOTE: Specific changed functions elided for space and clarity) |
| 20652 | * kjs/grammar.y: |
| 20653 | * kjs/nodes.cpp: |
| 20654 | * kjs/nodes.h: |
| 20655 | * kjs/nodes2string.cpp: |
| 20656 | |
| 20657 | 2008-01-27 Darin Adler <darin@apple.com> |
| 20658 | |
| 20659 | Reviewed by Oliver. |
| 20660 | |
| 20661 | - fix <rdar://problem/5657450> REGRESSION: const is broken |
| 20662 | |
| 20663 | Test: fast/js/const.html |
| 20664 | |
| 20665 | SunSpider said this was 0.3% slower. And I saw some Shark samples in |
| 20666 | JSGlobalObject::put -- not a lot but a few. We may be able to regain the |
| 20667 | speed, but for now we will take that small hit for correctness sake. |
| 20668 | |
| 20669 | * kjs/JSGlobalObject.cpp: |
| 20670 | (KJS::JSGlobalObject::put): Pass the checkReadOnly flag in to symbolTablePut |
| 20671 | instead of passing attributes. |
| 20672 | |
| 20673 | * kjs/JSVariableObject.h: |
| 20674 | (KJS::JSVariableObject::symbolTablePut): Removed the code to set attributes |
| 20675 | here, since we only set attributes when creating a property. Added the code |
| 20676 | to check read-only here, since we need that to implement const! |
| 20677 | |
| 20678 | * kjs/function.cpp: |
| 20679 | (KJS::ActivationImp::put): Pass the checkReadOnly flag in to symbolTablePut |
| 20680 | instead of passing attributes. |
| 20681 | |
| 20682 | * kjs/nodes.cpp: |
| 20683 | (KJS::isConstant): Added. |
| 20684 | (KJS::PostIncResolveNode::optimizeVariableAccess): Create a PostIncConstNode |
| 20685 | if optimizing for a local variable and the variable is constant. |
| 20686 | (KJS::PostDecResolveNode::optimizeVariableAccess): Ditto. But PostDecConstNode. |
| 20687 | (KJS::PreIncResolveNode::optimizeVariableAccess): Ditto. But PreIncConstNode. |
| 20688 | (KJS::PreDecResolveNode::optimizeVariableAccess): Ditto. But PreDecConstNode. |
| 20689 | (KJS::PreIncConstNode::evaluate): Return the value + 1. |
| 20690 | (KJS::PreDecConstNode::evaluate): Return the value - 1. |
| 20691 | (KJS::PostIncConstNode::evaluate): Return the value converted to a number. |
| 20692 | (KJS::PostDecConstNode::evaluate): Ditto. |
| 20693 | (KJS::ReadModifyResolveNode::optimizeVariableAccess): Create a ReadModifyConstNode |
| 20694 | if optimizing for a local variable and the variable is constant. |
| 20695 | (KJS::AssignResolveNode::optimizeVariableAccess): Ditto. But AssignConstNode. |
| 20696 | (KJS::ScopeNode::optimizeVariableAccess): Pass the local storage to the |
| 20697 | node optimizeVariableAccess functions, since that's where we need to look to |
| 20698 | figure out if a variable is constant. |
| 20699 | (KJS::FunctionBodyNode::processDeclarations): Moved the call to |
| 20700 | optimizeVariableAccess until after localStorage is set up. |
| 20701 | (KJS::ProgramNode::processDeclarations): Ditto. |
| 20702 | |
| 20703 | * kjs/nodes.h: Fixed the IsConstant and HasInitializer values. They are used |
| 20704 | as flag masks, so a value of 0 will not work for IsConstant. Changed the |
| 20705 | first parameter to optimizeVariableAccess to be a const reference to a symbol |
| 20706 | table and added a const reference to local storage. Added classes for const |
| 20707 | versions of local variable access: PostIncConstNode, PostDecConstNode, |
| 20708 | PreIncConstNode, PreDecConstNode, ReadModifyConstNode, and AssignConstNode. |
| 20709 | |
| 20710 | * kjs/object.cpp: |
| 20711 | (KJS::JSObject::put): Tweaked comments a bit, and changed the checkReadOnly |
| 20712 | expression to match the form used at the two other call sites. |
| 20713 | |
| 20714 | 2008-01-27 Darin Adler <darin@apple.com> |
| 20715 | |
| 20716 | Reviewed by Oliver. |
| 20717 | |
| 20718 | - fix http://bugs.webkit.org/show_bug.cgi?id=16498 |
| 20719 | ''.constructor.toString() gives [function] |
| 20720 | |
| 20721 | Test: fast/js/function-names.html |
| 20722 | |
| 20723 | * kjs/array_object.cpp: |
| 20724 | (KJS::ArrayObjectImp::ArrayObjectImp): Use the class name as the constructor's function name. |
| 20725 | * kjs/bool_object.cpp: |
| 20726 | (KJS::BooleanObjectImp::BooleanObjectImp): Ditto. |
| 20727 | * kjs/date_object.cpp: |
| 20728 | (KJS::DateObjectImp::DateObjectImp): Ditto. |
| 20729 | * kjs/error_object.cpp: |
| 20730 | (KJS::ErrorPrototype::ErrorPrototype): Make the error object be an Error. |
| 20731 | (KJS::ErrorObjectImp::ErrorObjectImp): Use the class name as the constructor's function name. |
| 20732 | (KJS::NativeErrorPrototype::NativeErrorPrototype): Take const UString&. |
| 20733 | (KJS::NativeErrorImp::NativeErrorImp): Use the prototype's name as the constructor's function |
| 20734 | name. |
| 20735 | * kjs/error_object.h: Change ErrorPrototype to inherit from ErrorInstance. Change the |
| 20736 | NativeErrorImp constructor to take a NativeErrorPrototype pointer for its prototype. |
| 20737 | * kjs/function.h: Removed unneeded constructor for internal functions without names. |
| 20738 | We want to avoid those! |
| 20739 | * kjs/function_object.cpp: |
| 20740 | (KJS::functionProtoFuncToString): Removed code that writes out just [function] for functions |
| 20741 | that have no names. There's no reason to do that. |
| 20742 | (KJS::FunctionObjectImp::FunctionObjectImp): Use the class name as the constructor's |
| 20743 | function name. |
| 20744 | * kjs/internal.cpp: Removed the unused constructor. |
| 20745 | * kjs/number_object.cpp: |
| 20746 | (KJS::fractionalPartToString): Marked static for internal linkage. |
| 20747 | (KJS::exponentialPartToString): Ditto. |
| 20748 | (KJS::numberProtoFuncToPrecision): Removed an unneeded else. |
| 20749 | (KJS::NumberObjectImp::NumberObjectImp): Use the class name as the constructor's |
| 20750 | function name. |
| 20751 | (KJS::NumberObjectImp::getValueProperty): Tweaked formatting. |
| 20752 | * kjs/object_object.cpp: |
| 20753 | (KJS::ObjectObjectImp::ObjectObjectImp): Use "Object" for the function name. |
| 20754 | * kjs/regexp_object.cpp: |
| 20755 | (KJS::RegExpObjectImp::RegExpObjectImp): Use "RegExp" for the function name. |
| 20756 | * kjs/string_object.cpp: |
| 20757 | (KJS::StringObjectImp::StringObjectImp): Use the class name as the constructor's |
| 20758 | function name. |
| 20759 | |
| 20760 | 2008-01-26 Darin Adler <darin@apple.com> |
| 20761 | |
| 20762 | Reviewed by Oliver. |
| 20763 | |
| 20764 | - fix http://bugs.webkit.org/show_bug.cgi?id=17027 |
| 20765 | Incorrect Function.toString behaviour with read/modify/write operators performed on negative numbers |
| 20766 | |
| 20767 | Test: fast/js/function-toString-parentheses.html |
| 20768 | |
| 20769 | The problem here was that a NumberNode with a negative number in it had the wrong |
| 20770 | precedence. It's not a primary expression, it's a unary operator with a primary |
| 20771 | expression after it. |
| 20772 | |
| 20773 | Once the precedence of NumberNode was fixed, the cases from bug 17020 were also |
| 20774 | fixed without trying to treat bracket nodes like dot nodes. That wasn't needed. |
| 20775 | The reason we handle numbers before dot nodes specially is that the dot is a |
| 20776 | legal character in a number. The same is not true of a bracket. Eventually we |
| 20777 | could get smarter, and only add the parentheses when there is actual ambiguity. |
| 20778 | There is none if the string form of the number already has a dot in it, or if |
| 20779 | it's a number with a alphabetic name like infinity or NAN. |
| 20780 | |
| 20781 | * kjs/nodes.h: Renamed back from ObjectAccess to DotExpr. |
| 20782 | (KJS::NumberNode::precedence): Return PrecUnary for negative numbers, since |
| 20783 | they serialize as a unary operator, not a primary expression. |
| 20784 | * kjs/nodes2string.cpp: |
| 20785 | (KJS::SourceStream::operator<<): Clear m_numberNeedsParens if this adds |
| 20786 | parens; one set is enough. |
| 20787 | (KJS::bracketNodeStreamTo): Remove unneeded special flag here. Normal |
| 20788 | operator precedence suffices. |
| 20789 | (KJS::NewExprNode::streamTo): Ditto. |
| 20790 | |
| 20791 | 2008-01-26 Oliver Hunt <oliver@apple.com> |
| 20792 | |
| 20793 | Reviewed by Maciej and Darin. |
| 20794 | |
| 20795 | Fix for http://bugs.webkit.org/show_bug.cgi?id=17020 |
| 20796 | Function.toString does not parenthesise numbers for the bracket accessor |
| 20797 | |
| 20798 | It turns out that logic was there for all of the dot accessor nodes to make numbers be |
| 20799 | parenthesised properly, so it was a trivial extension to extend that to the bracket nodes. |
| 20800 | I renamed the enum type to reflect the fact that it is now used for both dot and bracket |
| 20801 | accessors. |
| 20802 | |
| 20803 | * kjs/nodes2string.cpp: |
| 20804 | (KJS::bracketNodeStreamTo): |
| 20805 | (KJS::BracketAccessorNode::streamTo): |
| 20806 | |
| 20807 | 2008-01-26 Oliver Hunt <oliver@apple.com> |
| 20808 | |
| 20809 | Reviewed by Darin. |
| 20810 | |
| 20811 | Fix Bug 17018: Incorrect code generated from Function.toString for get/setters in object literals |
| 20812 | |
| 20813 | Don't quote getter and setter names during output, as that is simply wrong. |
| 20814 | |
| 20815 | * kjs/nodes2string.cpp: |
| 20816 | (KJS::PropertyNode::streamTo): |
| 20817 | |
| 20818 | 2008-01-26 Darin Adler <darin@apple.com> |
| 20819 | |
| 20820 | Reviewed by Eric Seidel. |
| 20821 | |
| 20822 | - http://bugs.webkit.org/show_bug.cgi?id=16860 |
| 20823 | a bit of cleanup after the Activation optimization |
| 20824 | |
| 20825 | * JavaScriptCore.exp: Export the GlobalExecState constructor instead of |
| 20826 | the global flavor of the ExecState constructor. It'd probably be cleaner |
| 20827 | to not export either one, but JSGlobalObject inlines the code that |
| 20828 | constructs the ExecState. If we changed that, we could remove this export. |
| 20829 | |
| 20830 | * JavaScriptCore.xcodeproj/project.pbxproj: Re-sorted a few things and |
| 20831 | put the new source files into the kjs group rather than at the top level. |
| 20832 | |
| 20833 | * kjs/ExecState.cpp: |
| 20834 | (KJS::ExecState::ExecState): Marked inline and updated for data member |
| 20835 | name changes. This is now only for use for the derived classes. Also removed |
| 20836 | code that sets the unused m_savedExec data member for the global case. That |
| 20837 | data member is only used for the other two types. |
| 20838 | (KJS::ExecState::~ExecState): Marked inline and removed all the code. |
| 20839 | The derived class destructors now inclde the appropriate code. |
| 20840 | (KJS::ExecState::lexicalGlobalObject): Removed unneeded special case for |
| 20841 | an empty scope chain. The bottom function already returns 0 for that case, |
| 20842 | so the general case code handles it fine. Also changed to use data members |
| 20843 | directly rather than calling functions. |
| 20844 | (KJS::GlobalExecState::GlobalExecState): Added. Calls through to the base |
| 20845 | class constructor. |
| 20846 | (KJS::GlobalExecState::~GlobalExecState): Added. |
| 20847 | (KJS::InterpreterExecState::InterpreterExecState): Added. Moved code to |
| 20848 | manipulate activeExecStates here since we don't want to have to check for the |
| 20849 | special case of globalExec. |
| 20850 | (KJS::InterpreterExecState::~InterpreterExecState): Added. |
| 20851 | (KJS::EvalExecState::EvalExecState): Added. |
| 20852 | (KJS::EvalExecState::~EvalExecState): Added. |
| 20853 | (KJS::FunctionExecState::FunctionExecState): Added. |
| 20854 | (KJS::FunctionExecState::~FunctionExecState): Added. |
| 20855 | |
| 20856 | * kjs/ExecState.h: Tweaked the header, includes, and declarations a bit. |
| 20857 | Made ExecState inherit from Noncopyable. Reformatted some comments and |
| 20858 | made them a bit more brief. Rearranged declarations a little bit and removed |
| 20859 | unused savedExec function. Changed seenLabels function to return a reference |
| 20860 | rather than a pointer. Made constructors and destructor protected, and also |
| 20861 | did the same with all data members. Renamed m_thisVal to m_thisValue and |
| 20862 | ls to m_labelStack. Added three new derived classes for each of the |
| 20863 | types of ExecState. The primary goal here was to remove a branch from the |
| 20864 | code in the destructor, but it's also clearer than overloading the arguments |
| 20865 | to the ExecState constructor. |
| 20866 | |
| 20867 | * kjs/JSGlobalObject.cpp: |
| 20868 | (KJS::getCurrentTime): Fixed formatting. |
| 20869 | (KJS::JSGlobalObject::pushActivation): Removed parentheses that don't make |
| 20870 | the expression clearer -- other similar sites didn't have these parentheses, |
| 20871 | even the one a couple lines earlier that sets stackEntry. |
| 20872 | (KJS::JSGlobalObject::tearOffActivation): Got rid of unneeded static_cast |
| 20873 | (I think I mentioned this during patch review) and used an early exit so that |
| 20874 | the entire contents of the function aren't nested inside an if statement. |
| 20875 | Also removed the check of codeType, instead checking Activation for 0. |
| 20876 | For now, I kept the codeType check, but inside an assertion. |
| 20877 | |
| 20878 | * kjs/JSGlobalObject.h: Changed type of globalExec to GlobalExecState. |
| 20879 | * kjs/function.cpp: |
| 20880 | (KJS::FunctionImp::callAsFunction): Changed type to FunctionExecState. |
| 20881 | (KJS::GlobalFuncImp::callAsFunction): Changed type to EvalExecState. |
| 20882 | * kjs/interpreter.cpp: |
| 20883 | (KJS::Interpreter::evaluate): Changed type to GlobalExecState. |
| 20884 | |
| 20885 | * kjs/nodes.cpp: |
| 20886 | (KJS::ContinueNode::execute): Changed code since seenLabels() returns a |
| 20887 | reference now instead of a pointer. |
| 20888 | (KJS::BreakNode::execute): Ditto. |
| 20889 | (KJS::LabelNode::execute): Ditto. |
| 20890 | |
| 20891 | 2008-01-26 Sam Weinig <sam@webkit.org> |
| 20892 | |
| 20893 | Reviewed by Mark Rowe. |
| 20894 | |
| 20895 | Cleanup node2string a little. |
| 20896 | - Remove some unnecessary branching. |
| 20897 | - Factor out bracket and dot streaming into static inline functions. |
| 20898 | |
| 20899 | * kjs/nodes.h: |
| 20900 | * kjs/nodes2string.cpp: |
| 20901 | (KJS::bracketNodeStreamTo): |
| 20902 | (KJS::dotNodeStreamTo): |
| 20903 | (KJS::FunctionCallBracketNode::streamTo): |
| 20904 | (KJS::FunctionCallDotNode::streamTo): |
| 20905 | (KJS::PostIncBracketNode::streamTo): |
| 20906 | (KJS::PostDecBracketNode::streamTo): |
| 20907 | (KJS::PostIncDotNode::streamTo): |
| 20908 | (KJS::PostDecDotNode::streamTo): |
| 20909 | (KJS::DeleteBracketNode::streamTo): |
| 20910 | (KJS::DeleteDotNode::streamTo): |
| 20911 | (KJS::PreIncBracketNode::streamTo): |
| 20912 | (KJS::PreDecBracketNode::streamTo): |
| 20913 | (KJS::PreIncDotNode::streamTo): |
| 20914 | (KJS::PreDecDotNode::streamTo): |
| 20915 | (KJS::ReadModifyBracketNode::streamTo): |
| 20916 | (KJS::AssignBracketNode::streamTo): |
| 20917 | (KJS::ReadModifyDotNode::streamTo): |
| 20918 | (KJS::AssignDotNode::streamTo): |
| 20919 | (KJS::WhileNode::streamTo): |
| 20920 | |
| 20921 | 2008-01-26 Mark Rowe <mrowe@apple.com> |
| 20922 | |
| 20923 | Reviewed by Darin Adler. |
| 20924 | |
| 20925 | Fix http://bugs.webkit.org/show_bug.cgi?id=17001 |
| 20926 | Bug 17001: Build error with Gtk port on Mac OS X |
| 20927 | |
| 20928 | If both XP_MACOSX and XP_UNIX are defined then X11.h and Carbon.h will both be included. |
| 20929 | These provide conflicting definitions for a type named 'Cursor'. As XP_UNIX is set by |
| 20930 | the build system when targeting X11, it doesn't make sense for XP_MACOSX to also be set |
| 20931 | in this instance. |
| 20932 | |
| 20933 | * bindings/npapi.h: Don't define XP_MACOSX if XP_UNIX is defined. |
| 20934 | |
| 20935 | 2008-01-26 Darin Adler <darin@apple.com> |
| 20936 | |
| 20937 | Reviewed by Oliver. |
| 20938 | |
| 20939 | - fix http://bugs.webkit.org/show_bug.cgi?id=17013 |
| 20940 | JSC can't round trip certain for-loops |
| 20941 | |
| 20942 | Test: fast/js/toString-for-var-decl.html |
| 20943 | |
| 20944 | * kjs/nodes.h: Added PlaceholderTrueNode so we can put nodes into |
| 20945 | for loops without injecting the word "true" into them (nice, but not |
| 20946 | the bug fix). Fixed ForNode constructor so expr1WasVarDecl is set |
| 20947 | only when there is an expression, since it's common for the actual |
| 20948 | variable declaration to be moved by the parser. |
| 20949 | |
| 20950 | * kjs/nodes2string.cpp: |
| 20951 | (KJS::PlaceholderTrueNode::streamTo): Added. Empty. |
| 20952 | |
| 20953 | 2008-01-25 Oliver Hunt <oliver@apple.com> |
| 20954 | |
| 20955 | Reviewed by Maciej. |
| 20956 | |
| 20957 | Fix for bug 17012: REGRESSION: JSC can't round trip an object literal |
| 20958 | |
| 20959 | Add logic to ensure that object literals and function expressions get |
| 20960 | parentheses when necessary. |
| 20961 | |
| 20962 | * kjs/nodes.h: |
| 20963 | * kjs/nodes2string.cpp: |
| 20964 | (KJS::SourceStream::operator<<): |
| 20965 | |
| 20966 | 2008-01-24 Steve Falkenburg <sfalken@apple.com> |
| 20967 | |
| 20968 | Build fix. |
| 20969 | |
| 20970 | * JavaScriptCore.vcproj/JavaScriptCore.sln: |
| 20971 | |
| 20972 | 2008-01-24 Steve Falkenburg <sfalken@apple.com> |
| 20973 | |
| 20974 | Build fix. |
| 20975 | |
| 20976 | * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: |
| 20977 | |
| 20978 | 2008-01-24 Michael Goddard <michael.goddard@trolltech.com> |
| 20979 | |
| 20980 | Reviewed by Simon. |
| 20981 | |
| 20982 | Fix QDateTime to JS Date conversion. |
| 20983 | Several conversion errors (some UTC related, some month |
| 20984 | offset related) and the conversion distance for Date |
| 20985 | to DateTime conversion weights were fixed (it should never |
| 20986 | be better to convert a JS Number into a Date rather than |
| 20987 | an int). |
| 20988 | |
| 20989 | * bindings/qt/qt_runtime.cpp: |
| 20990 | (KJS::Bindings::convertValueToQVariant): |
| 20991 | (KJS::Bindings::convertQVariantToValue): |
| 20992 | |
| 20993 | 2008-01-24 Michael Goddard <michael.goddard@trolltech.com> |
| 20994 | |
| 20995 | Reviewed by Simon. |
| 20996 | |
| 20997 | Add support for calling QObjects. |
| 20998 | Add support for invokeDefaultMethod (via a call to |
| 20999 | a specific slot), and also allow using it as a |
| 21000 | constructor, like QtScript. |
| 21001 | |
| 21002 | |
| 21003 | * bindings/qt/qt_class.cpp: |
| 21004 | (KJS::Bindings::QtClass::fallbackObject): |
| 21005 | * bindings/qt/qt_instance.cpp: |
| 21006 | (KJS::Bindings::QtRuntimeObjectImp::construct): |
| 21007 | (KJS::Bindings::QtInstance::QtInstance): |
| 21008 | (KJS::Bindings::QtInstance::~QtInstance): |
| 21009 | (KJS::Bindings::QtInstance::implementsCall): |
| 21010 | (KJS::Bindings::QtInstance::invokeDefaultMethod): |
| 21011 | * bindings/qt/qt_instance.h: |
| 21012 | * bindings/qt/qt_runtime.cpp: |
| 21013 | (KJS::Bindings::findMethodIndex): |
| 21014 | (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod): |
| 21015 | (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction): |
| 21016 | * bindings/qt/qt_runtime.h: |
| 21017 | |
| 21018 | 2008-01-24 Michael Goddard <michael.goddard@trolltech.com> |
| 21019 | |
| 21020 | Reviewed by Simon. |
| 21021 | |
| 21022 | Code style cleanups. |
| 21023 | Add spaces before/after braces in inline function. |
| 21024 | |
| 21025 | * bindings/qt/qt_instance.h: |
| 21026 | |
| 21027 | 2008-01-24 Michael Goddard <michael.goddard@trolltech.com> |
| 21028 | |
| 21029 | Reviewed by Simon. |
| 21030 | |
| 21031 | Code style cleanups. |
| 21032 | Remove spaces and unneeded declared parameter names. |
| 21033 | |
| 21034 | * bindings/qt/qt_instance.cpp: |
| 21035 | (KJS::Bindings::QtRuntimeObjectImp::removeFromCache): |
| 21036 | |
| 21037 | 2008-01-24 Michael Goddard <michael.goddard@trolltech.com> |
| 21038 | |
| 21039 | Reviewed by Simon. |
| 21040 | |
| 21041 | Clear stale RuntimeObjectImps. |
| 21042 | Since other objects can have refs to the QtInstance, |
| 21043 | we can't rely on the QtInstance being deleted when the |
| 21044 | RuntimeObjectImp is invalidate or deleted. This |
| 21045 | could result in a stale JSObject being returned for |
| 21046 | a valid Instance. |
| 21047 | |
| 21048 | * bindings/qt/qt_instance.cpp: |
| 21049 | (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp): |
| 21050 | (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp): |
| 21051 | (KJS::Bindings::QtRuntimeObjectImp::invalidate): |
| 21052 | (KJS::Bindings::QtRuntimeObjectImp::removeFromCache): |
| 21053 | (KJS::Bindings::QtInstance::getRuntimeObject): |
| 21054 | * bindings/runtime.cpp: |
| 21055 | (KJS::Bindings::Instance::createRuntimeObject): |
| 21056 | * bindings/runtime.h: |
| 21057 | |
| 21058 | 2008-01-23 Alp Toker <alp@atoker.com> |
| 21059 | |
| 21060 | Rubber-stamped by Mark Rowe. |
| 21061 | |
| 21062 | Remove whitespace after -I in automake include lists. |
| 21063 | |
| 21064 | * GNUmakefile.am: |
| 21065 | |
| 21066 | 2008-01-23 Michael Goddard <michael.goddard@trolltech.com> |
| 21067 | |
| 21068 | Reviewed by Lars Knoll <lars@trolltech.com>. |
| 21069 | |
| 21070 | Reworked the JavaScriptCore Qt bindings: |
| 21071 | |
| 21072 | * Add initial support for string and variant arrays, as well |
| 21073 | as sub QObjects in the JS bindings. |
| 21074 | |
| 21075 | * Don't expose fields marked as not scriptable by moc. |
| 21076 | |
| 21077 | * Add support for dynamic properties and accessing named |
| 21078 | QObject children of an object (like QtScript and older |
| 21079 | IE DOM style JS). |
| 21080 | * Add support for custom toString methods. |
| 21081 | |
| 21082 | * Fine tune some bindings to be closer to QtScript. |
| 21083 | Make void functions return undefined, and empty/ |
| 21084 | null QStrings return a zero length string. |
| 21085 | |
| 21086 | * Create framework for allowing more direct method calls. |
| 21087 | Since RuntimeMethod doesn't allow us to add additional |
| 21088 | methods/properties to a function, add these classes. |
| 21089 | Start prototyping object.signal.connect(...). |
| 21090 | |
| 21091 | * Add signal support to the Qt bindings. |
| 21092 | Allow connecting to signals (object.signal.connect(slot)), |
| 21093 | disconnecting, and emitting signals. Currently chooses |
| 21094 | the first signal that matches the name, so this will need |
| 21095 | improvement. |
| 21096 | |
| 21097 | * Add property names, and resolve signals closer to use. |
| 21098 | Enumerating properties now returns some of the Qt properties |
| 21099 | and signals. Slots and methods aren't quite present. Also, |
| 21100 | resolve signal connections etc. closer to the time of use, so |
| 21101 | we can do more dynamic resolution based on argument type etc. |
| 21102 | Still picks the first one with the same name, at the moment. |
| 21103 | |
| 21104 | * Make signature comparison code consistent. |
| 21105 | Use the same code for checking meta signatures in |
| 21106 | the method and fallback getters, and avoid a |
| 21107 | QByteArray construction when we can. |
| 21108 | |
| 21109 | * Fix minor memory leak, and handle pointers better. |
| 21110 | Delete the private object in the dtors, and use RefPtrs |
| 21111 | for holding Instances etc. |
| 21112 | |
| 21113 | * Handle method lookup better. |
| 21114 | Allow invocation time method lookup based on the arguments, |
| 21115 | which is closer to QtScript behaviour. Also, cache the |
| 21116 | method lists and delete them in the QtClass dtor (stops |
| 21117 | a memory leak). |
| 21118 | |
| 21119 | * Improve JS to Qt data type conversions. |
| 21120 | Add some support for Date & RegExp JS objects, |
| 21121 | and provide some metrics on the quality of the |
| 21122 | conversion. |
| 21123 | |
| 21124 | * A couple of fixes for autotest failures. |
| 21125 | Better support for converting lists, read/write only |
| 21126 | QMetaProperty support, modified slot search order...) |
| 21127 | |
| 21128 | * bindings/qt/qt_class.cpp: |
| 21129 | (KJS::Bindings::QtClass::QtClass): |
| 21130 | (KJS::Bindings::QtClass::~QtClass): |
| 21131 | (KJS::Bindings::QtClass::name): |
| 21132 | (KJS::Bindings::QtClass::fallbackObject): |
| 21133 | (KJS::Bindings::QtClass::methodsNamed): |
| 21134 | (KJS::Bindings::QtClass::fieldNamed): |
| 21135 | * bindings/qt/qt_class.h: |
| 21136 | * bindings/qt/qt_instance.cpp: |
| 21137 | (KJS::Bindings::QtInstance::QtInstance): |
| 21138 | (KJS::Bindings::QtInstance::~QtInstance): |
| 21139 | (KJS::Bindings::QtInstance::getRuntimeObject): |
| 21140 | (KJS::Bindings::QtInstance::getClass): |
| 21141 | (KJS::Bindings::QtInstance::implementsCall): |
| 21142 | (KJS::Bindings::QtInstance::getPropertyNames): |
| 21143 | (KJS::Bindings::QtInstance::invokeMethod): |
| 21144 | (KJS::Bindings::QtInstance::invokeDefaultMethod): |
| 21145 | (KJS::Bindings::QtInstance::stringValue): |
| 21146 | (KJS::Bindings::QtInstance::booleanValue): |
| 21147 | (KJS::Bindings::QtInstance::valueOf): |
| 21148 | (KJS::Bindings::QtField::name): |
| 21149 | (KJS::Bindings::QtField::valueFromInstance): |
| 21150 | (KJS::Bindings::QtField::setValueToInstance): |
| 21151 | * bindings/qt/qt_instance.h: |
| 21152 | (KJS::Bindings::QtInstance::getBindingLanguage): |
| 21153 | (KJS::Bindings::QtInstance::getObject): |
| 21154 | * bindings/qt/qt_runtime.cpp: |
| 21155 | (KJS::Bindings::QWKNoDebug::QWKNoDebug): |
| 21156 | (KJS::Bindings::QWKNoDebug::~QWKNoDebug): |
| 21157 | (KJS::Bindings::QWKNoDebug::operator<<): |
| 21158 | (KJS::Bindings::): |
| 21159 | (KJS::Bindings::valueRealType): |
| 21160 | (KJS::Bindings::convertValueToQVariant): |
| 21161 | (KJS::Bindings::convertQVariantToValue): |
| 21162 | (KJS::Bindings::QtRuntimeMethod::QtRuntimeMethod): |
| 21163 | (KJS::Bindings::QtRuntimeMethod::~QtRuntimeMethod): |
| 21164 | (KJS::Bindings::QtRuntimeMethod::codeType): |
| 21165 | (KJS::Bindings::QtRuntimeMethod::execute): |
| 21166 | (KJS::Bindings::QtRuntimeMethodData::~QtRuntimeMethodData): |
| 21167 | (KJS::Bindings::QtRuntimeMetaMethodData::~QtRuntimeMetaMethodData): |
| 21168 | (KJS::Bindings::QtRuntimeConnectionMethodData::~QtRuntimeConnectionMethodData): |
| 21169 | (KJS::Bindings::QtMethodMatchType::): |
| 21170 | (KJS::Bindings::QtMethodMatchType::QtMethodMatchType): |
| 21171 | (KJS::Bindings::QtMethodMatchType::kind): |
| 21172 | (KJS::Bindings::QtMethodMatchType::isValid): |
| 21173 | (KJS::Bindings::QtMethodMatchType::isVariant): |
| 21174 | (KJS::Bindings::QtMethodMatchType::isMetaType): |
| 21175 | (KJS::Bindings::QtMethodMatchType::isUnresolved): |
| 21176 | (KJS::Bindings::QtMethodMatchType::isMetaEnum): |
| 21177 | (KJS::Bindings::QtMethodMatchType::enumeratorIndex): |
| 21178 | (KJS::Bindings::QtMethodMatchType::variant): |
| 21179 | (KJS::Bindings::QtMethodMatchType::metaType): |
| 21180 | (KJS::Bindings::QtMethodMatchType::metaEnum): |
| 21181 | (KJS::Bindings::QtMethodMatchType::unresolved): |
| 21182 | (KJS::Bindings::QtMethodMatchType::typeId): |
| 21183 | (KJS::Bindings::QtMethodMatchType::name): |
| 21184 | (KJS::Bindings::QtMethodMatchData::QtMethodMatchData): |
| 21185 | (KJS::Bindings::QtMethodMatchData::isValid): |
| 21186 | (KJS::Bindings::QtMethodMatchData::firstUnresolvedIndex): |
| 21187 | (KJS::Bindings::indexOfMetaEnum): |
| 21188 | (KJS::Bindings::findMethodIndex): |
| 21189 | (KJS::Bindings::findSignalIndex): |
| 21190 | (KJS::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod): |
| 21191 | (KJS::Bindings::QtRuntimeMetaMethod::mark): |
| 21192 | (KJS::Bindings::QtRuntimeMetaMethod::callAsFunction): |
| 21193 | (KJS::Bindings::QtRuntimeMetaMethod::getOwnPropertySlot): |
| 21194 | (KJS::Bindings::QtRuntimeMetaMethod::lengthGetter): |
| 21195 | (KJS::Bindings::QtRuntimeMetaMethod::connectGetter): |
| 21196 | (KJS::Bindings::QtRuntimeMetaMethod::disconnectGetter): |
| 21197 | (KJS::Bindings::QtRuntimeConnectionMethod::QtRuntimeConnectionMethod): |
| 21198 | (KJS::Bindings::QtRuntimeConnectionMethod::callAsFunction): |
| 21199 | (KJS::Bindings::QtRuntimeConnectionMethod::getOwnPropertySlot): |
| 21200 | (KJS::Bindings::QtRuntimeConnectionMethod::lengthGetter): |
| 21201 | (KJS::Bindings::QtConnectionObject::QtConnectionObject): |
| 21202 | (KJS::Bindings::QtConnectionObject::~QtConnectionObject): |
| 21203 | (KJS::Bindings::QtConnectionObject::metaObject): |
| 21204 | (KJS::Bindings::QtConnectionObject::qt_metacast): |
| 21205 | (KJS::Bindings::QtConnectionObject::qt_metacall): |
| 21206 | (KJS::Bindings::QtConnectionObject::execute): |
| 21207 | (KJS::Bindings::QtConnectionObject::match): |
| 21208 | (KJS::Bindings::::QtArray): |
| 21209 | (KJS::Bindings::::~QtArray): |
| 21210 | (KJS::Bindings::::rootObject): |
| 21211 | (KJS::Bindings::::setValueAt): |
| 21212 | (KJS::Bindings::::valueAt): |
| 21213 | * bindings/qt/qt_runtime.h: |
| 21214 | (KJS::Bindings::QtField::): |
| 21215 | (KJS::Bindings::QtField::QtField): |
| 21216 | (KJS::Bindings::QtField::fieldType): |
| 21217 | (KJS::Bindings::QtMethod::QtMethod): |
| 21218 | (KJS::Bindings::QtMethod::name): |
| 21219 | (KJS::Bindings::QtMethod::numParameters): |
| 21220 | (KJS::Bindings::QtArray::getLength): |
| 21221 | (KJS::Bindings::QtRuntimeMethod::d_func): |
| 21222 | (KJS::Bindings::QtRuntimeMetaMethod::d_func): |
| 21223 | (KJS::Bindings::QtRuntimeConnectionMethod::d_func): |
| 21224 | (KJS::Bindings::): |
| 21225 | * bindings/runtime.cpp: |
| 21226 | (KJS::Bindings::Instance::createBindingForLanguageInstance): |
| 21227 | (KJS::Bindings::Instance::createRuntimeObject): |
| 21228 | (KJS::Bindings::Instance::reallyCreateRuntimeObject): |
| 21229 | * bindings/runtime.h: |
| 21230 | |
| 21231 | 2008-01-22 Anders Carlsson <andersca@apple.com> |
| 21232 | |
| 21233 | Reviewed by Darin and Adam. |
| 21234 | |
| 21235 | <rdar://problem/5688975> |
| 21236 | div element on microsoft site has wrong left offset. |
| 21237 | |
| 21238 | Return true even if NPN_GetProperty returns null or undefined. This matches Firefox |
| 21239 | (and is what the Silverlight plug-in expects). |
| 21240 | |
| 21241 | * bindings/NP_jsobject.cpp: |
| 21242 | (_NPN_GetProperty): |
| 21243 | |
| 21244 | 2008-01-21 Geoffrey Garen <ggaren@apple.com> |
| 21245 | |
| 21246 | Reviewed by Maciej Stachowiak. |
| 21247 | |
| 21248 | Fixed http://bugs.webkit.org/show_bug.cgi?id=16909 |
| 21249 | REGRESSION: Amazon.com crash (ActivationImp) |
| 21250 | |
| 21251 | (and a bunch of other crashes) |
| 21252 | |
| 21253 | Plus, a .7% SunSpider speedup to boot. |
| 21254 | |
| 21255 | Replaced the buggy currentExec and savedExec mechanisms with an |
| 21256 | explicit ExecState stack. |
| 21257 | |
| 21258 | * kjs/collector.cpp: |
| 21259 | (KJS::Collector::collect): Explicitly mark the ExecState stack. |
| 21260 | |
| 21261 | (KJS::Collector::reportOutOfMemoryToAllExecStates): Slight change in |
| 21262 | behavior: We no longer throw an exception in any global ExecStates, |
| 21263 | since global ExecStates are more like pseudo-ExecStates, and aren't |
| 21264 | used for script execution. (It's unclear what would happen if you left |
| 21265 | an exception waiting around in a global ExecState, but it probably |
| 21266 | wouldn't be good.) |
| 21267 | |
| 21268 | 2008-01-21 Jan Michael Alonzo <jmalonzo@unpluggable.com> |
| 21269 | |
| 21270 | Reviewed by Alp Toker. |
| 21271 | |
| 21272 | http://bugs.webkit.org/show_bug.cgi?id=16955 |
| 21273 | Get errors when cross-compile webkit-gtk |
| 21274 | |
| 21275 | * GNUmakefile.am: removed ICU_CFLAGS |
| 21276 | |
| 21277 | 2008-01-18 Kevin McCullough <kmccullough@apple.com> |
| 21278 | |
| 21279 | - Build fix. |
| 21280 | |
| 21281 | * kjs/ustring.h: |
| 21282 | |
| 21283 | 2008-01-18 Kevin McCullough <kmccullough@apple.com> |
| 21284 | |
| 21285 | - Build fix. |
| 21286 | |
| 21287 | * kjs/ustring.cpp: |
| 21288 | * kjs/ustring.h: |
| 21289 | (KJS::UString::cost): |
| 21290 | |
| 21291 | 2008-01-18 Kevin McCullough <kmccullough@apple.com> |
| 21292 | |
| 21293 | Reviewed by Geoff. |
| 21294 | |
| 21295 | - Correctly report cost of appended strings to trigger GC. |
| 21296 | |
| 21297 | * kjs/ustring.cpp: |
| 21298 | (KJS::UString::Rep::create): |
| 21299 | (KJS::UString::UString): Don't create unnecssary objects. |
| 21300 | (KJS::UString::cost): Report cost if necessary but also keep track of |
| 21301 | reported cost. |
| 21302 | * kjs/ustring.h: |
| 21303 | |
| 21304 | 2008-01-18 Simon Hausmann <hausmann@webkit.org> |
| 21305 | |
| 21306 | Reviewed by Holger. |
| 21307 | |
| 21308 | Fix return type conversions from Qt slots to JS values. |
| 21309 | |
| 21310 | This also fixes fast/dom/open-and-close-by-DOM.html, which called |
| 21311 | layoutTestController.windowCount(). |
| 21312 | |
| 21313 | When constructing the QVariant that holds the return type we cannot |
| 21314 | use the QVarian(Type) constuctor as that will create a null variant. |
| 21315 | We have to use the QVariant(Type, void *) constructor instead, just |
| 21316 | like in QMetaObject::read() for example. |
| 21317 | |
| 21318 | |
| 21319 | * bindings/qt/qt_instance.cpp: |
| 21320 | (KJS::Bindings::QtInstance::getRuntimeObject): |
| 21321 | |
| 21322 | 2008-01-18 Prasanth Ullattil <prasanth.ullattil@trolltech.com> |
| 21323 | |
| 21324 | Reviewed by Simon Hausmann <hausmann@webkit.org>. |
| 21325 | |
| 21326 | Fix compilation on Win64(2): Implemented currentThreadStackBase on X86-64 on Windows |
| 21327 | |
| 21328 | |
| 21329 | * kjs/collector.cpp: |
| 21330 | (KJS::Collector::heapAllocate): |
| 21331 | |
| 21332 | 2008-01-18 Prasanth Ullattil <prasanth.ullattil@trolltech.com> |
| 21333 | |
| 21334 | Reviewed by Simon Hausmann <hausmann@webkit.org>. |
| 21335 | |
| 21336 | Fix compilation on Win64(1): Define WTF_PLATFORM_X86_64 correctly on Win64. |
| 21337 | |
| 21338 | |
| 21339 | * wtf/Platform.h: |
| 21340 | |
| 21341 | 2008-01-17 Antti Koivisto <antti@apple.com> |
| 21342 | |
| 21343 | Fix Windows build. |
| 21344 | |
| 21345 | * kjs/regexp_object.cpp: |
| 21346 | (KJS::regExpProtoFuncToString): |
| 21347 | |
| 21348 | 2008-01-16 Sam Weinig <sam@webkit.org> |
| 21349 | |
| 21350 | Reviewed by Darin. |
| 21351 | |
| 21352 | Fix for http://bugs.webkit.org/show_bug.cgi?id=16901 |
| 21353 | Convert remaining JS function objects to use the new PrototypeFunction class |
| 21354 | |
| 21355 | - Moves Boolean, Function, RegExp, Number, Object and Global functions to their |
| 21356 | own static function implementations so that they can be used with the |
| 21357 | PrototypeFunction class. SunSpider says this is 1.003x as fast. |
| 21358 | |
| 21359 | * kjs/JSGlobalObject.cpp: |
| 21360 | (KJS::JSGlobalObject::reset): |
| 21361 | * kjs/array_object.h: |
| 21362 | * kjs/bool_object.cpp: |
| 21363 | (KJS::BooleanInstance::BooleanInstance): |
| 21364 | (KJS::BooleanPrototype::BooleanPrototype): |
| 21365 | (KJS::booleanProtoFuncToString): |
| 21366 | (KJS::booleanProtoFuncValueOf): |
| 21367 | (KJS::BooleanObjectImp::BooleanObjectImp): |
| 21368 | (KJS::BooleanObjectImp::implementsConstruct): |
| 21369 | (KJS::BooleanObjectImp::construct): |
| 21370 | (KJS::BooleanObjectImp::callAsFunction): |
| 21371 | * kjs/bool_object.h: |
| 21372 | (KJS::BooleanInstance::classInfo): |
| 21373 | * kjs/error_object.cpp: |
| 21374 | (KJS::ErrorPrototype::ErrorPrototype): |
| 21375 | (KJS::errorProtoFuncToString): |
| 21376 | * kjs/error_object.h: |
| 21377 | * kjs/function.cpp: |
| 21378 | (KJS::globalFuncEval): |
| 21379 | (KJS::globalFuncParseInt): |
| 21380 | (KJS::globalFuncParseFloat): |
| 21381 | (KJS::globalFuncIsNaN): |
| 21382 | (KJS::globalFuncIsFinite): |
| 21383 | (KJS::globalFuncDecodeURI): |
| 21384 | (KJS::globalFuncDecodeURIComponent): |
| 21385 | (KJS::globalFuncEncodeURI): |
| 21386 | (KJS::globalFuncEncodeURIComponent): |
| 21387 | (KJS::globalFuncEscape): |
| 21388 | (KJS::globalFuncUnEscape): |
| 21389 | (KJS::globalFuncKJSPrint): |
| 21390 | (KJS::PrototypeFunction::PrototypeFunction): |
| 21391 | * kjs/function.h: |
| 21392 | * kjs/function_object.cpp: |
| 21393 | (KJS::FunctionPrototype::FunctionPrototype): |
| 21394 | (KJS::functionProtoFuncToString): |
| 21395 | (KJS::functionProtoFuncApply): |
| 21396 | (KJS::functionProtoFuncCall): |
| 21397 | * kjs/function_object.h: |
| 21398 | * kjs/number_object.cpp: |
| 21399 | (KJS::NumberPrototype::NumberPrototype): |
| 21400 | (KJS::numberProtoFuncToString): |
| 21401 | (KJS::numberProtoFuncToLocaleString): |
| 21402 | (KJS::numberProtoFuncValueOf): |
| 21403 | (KJS::numberProtoFuncToFixed): |
| 21404 | (KJS::numberProtoFuncToExponential): |
| 21405 | (KJS::numberProtoFuncToPrecision): |
| 21406 | * kjs/number_object.h: |
| 21407 | (KJS::NumberInstance::classInfo): |
| 21408 | (KJS::NumberObjectImp::classInfo): |
| 21409 | (KJS::NumberObjectImp::): |
| 21410 | * kjs/object_object.cpp: |
| 21411 | (KJS::ObjectPrototype::ObjectPrototype): |
| 21412 | (KJS::objectProtoFuncValueOf): |
| 21413 | (KJS::objectProtoFuncHasOwnProperty): |
| 21414 | (KJS::objectProtoFuncIsPrototypeOf): |
| 21415 | (KJS::objectProtoFuncDefineGetter): |
| 21416 | (KJS::objectProtoFuncDefineSetter): |
| 21417 | (KJS::objectProtoFuncLookupGetter): |
| 21418 | (KJS::objectProtoFuncLookupSetter): |
| 21419 | (KJS::objectProtoFuncPropertyIsEnumerable): |
| 21420 | (KJS::objectProtoFuncToLocaleString): |
| 21421 | (KJS::objectProtoFuncToString): |
| 21422 | * kjs/object_object.h: |
| 21423 | * kjs/regexp_object.cpp: |
| 21424 | (KJS::RegExpPrototype::RegExpPrototype): |
| 21425 | (KJS::regExpProtoFuncTest): |
| 21426 | (KJS::regExpProtoFuncExec): |
| 21427 | (KJS::regExpProtoFuncCompile): |
| 21428 | (KJS::regExpProtoFuncToString): |
| 21429 | * kjs/regexp_object.h: |
| 21430 | |
| 21431 | 2008-01-16 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 21432 | |
| 21433 | Reviewed by Maciej & Darin. |
| 21434 | |
| 21435 | Fixes Bug 16868: Gmail crash |
| 21436 | and Bug 16871: Crash when loading apple.com/startpage |
| 21437 | |
| 21438 | <http://bugs.webkit.org/show_bug.cgi?id=16868> |
| 21439 | <rdar://problem/5686108> |
| 21440 | |
| 21441 | <http://bugs.webkit.org/show_bug.cgi?id=16871> |
| 21442 | <rdar://problem/5686670> |
| 21443 | |
| 21444 | Adds ActivationImp tear-off for cross-window eval() and fixes an |
| 21445 | existing garbage collection issue exposed by the ActivationImp tear-off |
| 21446 | patch (r29425) that can occur when an ExecState's m_callingExec is |
| 21447 | different than its m_savedExec. |
| 21448 | |
| 21449 | * kjs/ExecState.cpp: |
| 21450 | (KJS::ExecState::mark): |
| 21451 | * kjs/function.cpp: |
| 21452 | (KJS::GlobalFuncImp::callAsFunction): |
| 21453 | |
| 21454 | 2008-01-16 Sam Weinig <sam@webkit.org> |
| 21455 | |
| 21456 | Reviewed by Oliver. |
| 21457 | |
| 21458 | Clean up MathObjectImp, it needed a little scrubbing. |
| 21459 | |
| 21460 | * kjs/math_object.cpp: |
| 21461 | (KJS::MathObjectImp::MathObjectImp): |
| 21462 | (KJS::MathObjectImp::getOwnPropertySlot): |
| 21463 | (KJS::MathObjectImp::getValueProperty): |
| 21464 | (KJS::mathProtoFuncACos): |
| 21465 | (KJS::mathProtoFuncASin): |
| 21466 | (KJS::mathProtoFuncATan): |
| 21467 | (KJS::mathProtoFuncATan2): |
| 21468 | (KJS::mathProtoFuncCos): |
| 21469 | (KJS::mathProtoFuncExp): |
| 21470 | (KJS::mathProtoFuncLog): |
| 21471 | (KJS::mathProtoFuncSin): |
| 21472 | (KJS::mathProtoFuncSqrt): |
| 21473 | (KJS::mathProtoFuncTan): |
| 21474 | * kjs/math_object.h: |
| 21475 | (KJS::MathObjectImp::classInfo): |
| 21476 | (KJS::MathObjectImp::): |
| 21477 | |
| 21478 | 2008-01-16 Sam Weinig <sam@webkit.org> |
| 21479 | |
| 21480 | Reviewed by Geoffrey Garen. |
| 21481 | |
| 21482 | Rename Lexer variable bol to atLineStart. |
| 21483 | |
| 21484 | * kjs/lexer.cpp: |
| 21485 | (KJS::Lexer::Lexer): |
| 21486 | (KJS::Lexer::setCode): |
| 21487 | (KJS::Lexer::nextLine): |
| 21488 | (KJS::Lexer::lex): |
| 21489 | * kjs/lexer.h: |
| 21490 | |
| 21491 | 2008-01-16 Sam Weinig <sam@webkit.org> |
| 21492 | |
| 21493 | Reviewed by Geoffrey Garen and Anders Carlsson. |
| 21494 | |
| 21495 | Remove uses of KJS_PURE_ECMA as we don't ever build with it defined, |
| 21496 | and we have many features that are not included in the ECMA spec. |
| 21497 | |
| 21498 | * kjs/lexer.cpp: |
| 21499 | (KJS::Lexer::Lexer): |
| 21500 | (KJS::Lexer::setCode): |
| 21501 | (KJS::Lexer::nextLine): |
| 21502 | (KJS::Lexer::lex): |
| 21503 | * kjs/lexer.h: |
| 21504 | * kjs/string_object.cpp: |
| 21505 | * kjs/string_object.h: |
| 21506 | |
| 21507 | 2008-01-15 Sam Weinig <sam@webkit.org> |
| 21508 | |
| 21509 | Reviewed by Geoffrey Garen. |
| 21510 | |
| 21511 | Fix <rdar://problem/5595552> r27608 introduced a 20% increase in JS binary size, 4% increase in WebCore binary size |
| 21512 | |
| 21513 | - This changes the way JS functions that use Lookup tables are handled. Instead of using |
| 21514 | one class per function, which allowed specialization of the virtual callAsFunction |
| 21515 | method, we now use one class, PrototypeFunction, which takes a pointer to a static |
| 21516 | function to use as the implementation. This significantly decreases the binary size |
| 21517 | of JavaScriptCore (about 145k on an Intel only build) while still keeping some of the |
| 21518 | speedup r27608 garnered (SunSpider says this is 1.005x as slow, which should leave some |
| 21519 | wiggle room from the original 1% speedup) and keeps the functions implementations in separate |
| 21520 | functions to help with optimizations. |
| 21521 | |
| 21522 | * JavaScriptCore.exp: |
| 21523 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 21524 | * kjs/array_object.cpp: |
| 21525 | (KJS::arrayProtoFuncToString): |
| 21526 | (KJS::arrayProtoFuncToLocaleString): |
| 21527 | (KJS::arrayProtoFuncJoin): |
| 21528 | (KJS::arrayProtoFuncConcat): |
| 21529 | (KJS::arrayProtoFuncPop): |
| 21530 | (KJS::arrayProtoFuncPush): |
| 21531 | (KJS::arrayProtoFuncReverse): |
| 21532 | (KJS::arrayProtoFuncShift): |
| 21533 | (KJS::arrayProtoFuncSlice): |
| 21534 | (KJS::arrayProtoFuncSort): |
| 21535 | (KJS::arrayProtoFuncSplice): |
| 21536 | (KJS::arrayProtoFuncUnShift): |
| 21537 | (KJS::arrayProtoFuncFilter): |
| 21538 | (KJS::arrayProtoFuncMap): |
| 21539 | (KJS::arrayProtoFuncEvery): |
| 21540 | (KJS::arrayProtoFuncForEach): |
| 21541 | (KJS::arrayProtoFuncSome): |
| 21542 | (KJS::arrayProtoFuncIndexOf): |
| 21543 | (KJS::arrayProtoFuncLastIndexOf): |
| 21544 | * kjs/array_object.h: |
| 21545 | * kjs/date_object.cpp: |
| 21546 | (KJS::DatePrototype::getOwnPropertySlot): |
| 21547 | (KJS::dateProtoFuncToString): |
| 21548 | (KJS::dateProtoFuncToUTCString): |
| 21549 | (KJS::dateProtoFuncToDateString): |
| 21550 | (KJS::dateProtoFuncToTimeString): |
| 21551 | (KJS::dateProtoFuncToLocaleString): |
| 21552 | (KJS::dateProtoFuncToLocaleDateString): |
| 21553 | (KJS::dateProtoFuncToLocaleTimeString): |
| 21554 | (KJS::dateProtoFuncValueOf): |
| 21555 | (KJS::dateProtoFuncGetTime): |
| 21556 | (KJS::dateProtoFuncGetFullYear): |
| 21557 | (KJS::dateProtoFuncGetUTCFullYear): |
| 21558 | (KJS::dateProtoFuncToGMTString): |
| 21559 | (KJS::dateProtoFuncGetMonth): |
| 21560 | (KJS::dateProtoFuncGetUTCMonth): |
| 21561 | (KJS::dateProtoFuncGetDate): |
| 21562 | (KJS::dateProtoFuncGetUTCDate): |
| 21563 | (KJS::dateProtoFuncGetDay): |
| 21564 | (KJS::dateProtoFuncGetUTCDay): |
| 21565 | (KJS::dateProtoFuncGetHours): |
| 21566 | (KJS::dateProtoFuncGetUTCHours): |
| 21567 | (KJS::dateProtoFuncGetMinutes): |
| 21568 | (KJS::dateProtoFuncGetUTCMinutes): |
| 21569 | (KJS::dateProtoFuncGetSeconds): |
| 21570 | (KJS::dateProtoFuncGetUTCSeconds): |
| 21571 | (KJS::dateProtoFuncGetMilliSeconds): |
| 21572 | (KJS::dateProtoFuncGetUTCMilliseconds): |
| 21573 | (KJS::dateProtoFuncGetTimezoneOffset): |
| 21574 | (KJS::dateProtoFuncSetTime): |
| 21575 | (KJS::dateProtoFuncSetMilliSeconds): |
| 21576 | (KJS::dateProtoFuncSetUTCMilliseconds): |
| 21577 | (KJS::dateProtoFuncSetSeconds): |
| 21578 | (KJS::dateProtoFuncSetUTCSeconds): |
| 21579 | (KJS::dateProtoFuncSetMinutes): |
| 21580 | (KJS::dateProtoFuncSetUTCMinutes): |
| 21581 | (KJS::dateProtoFuncSetHours): |
| 21582 | (KJS::dateProtoFuncSetUTCHours): |
| 21583 | (KJS::dateProtoFuncSetDate): |
| 21584 | (KJS::dateProtoFuncSetUTCDate): |
| 21585 | (KJS::dateProtoFuncSetMonth): |
| 21586 | (KJS::dateProtoFuncSetUTCMonth): |
| 21587 | (KJS::dateProtoFuncSetFullYear): |
| 21588 | (KJS::dateProtoFuncSetUTCFullYear): |
| 21589 | (KJS::dateProtoFuncSetYear): |
| 21590 | (KJS::dateProtoFuncGetYear): |
| 21591 | * kjs/date_object.h: |
| 21592 | * kjs/function.cpp: |
| 21593 | (KJS::PrototypeFunction::PrototypeFunction): |
| 21594 | (KJS::PrototypeFunction::callAsFunction): |
| 21595 | * kjs/function.h: |
| 21596 | * kjs/lookup.h: |
| 21597 | (KJS::HashEntry::): |
| 21598 | (KJS::staticFunctionGetter): |
| 21599 | * kjs/math_object.cpp: |
| 21600 | (KJS::mathProtoFuncAbs): |
| 21601 | (KJS::mathProtoFuncACos): |
| 21602 | (KJS::mathProtoFuncASin): |
| 21603 | (KJS::mathProtoFuncATan): |
| 21604 | (KJS::mathProtoFuncATan2): |
| 21605 | (KJS::mathProtoFuncCeil): |
| 21606 | (KJS::mathProtoFuncCos): |
| 21607 | (KJS::mathProtoFuncExp): |
| 21608 | (KJS::mathProtoFuncFloor): |
| 21609 | (KJS::mathProtoFuncLog): |
| 21610 | (KJS::mathProtoFuncMax): |
| 21611 | (KJS::mathProtoFuncMin): |
| 21612 | (KJS::mathProtoFuncPow): |
| 21613 | (KJS::mathProtoFuncRandom): |
| 21614 | (KJS::mathProtoFuncRound): |
| 21615 | (KJS::mathProtoFuncSin): |
| 21616 | (KJS::mathProtoFuncSqrt): |
| 21617 | (KJS::mathProtoFuncTan): |
| 21618 | * kjs/math_object.h: |
| 21619 | * kjs/string_object.cpp: |
| 21620 | (KJS::stringProtoFuncToString): |
| 21621 | (KJS::stringProtoFuncValueOf): |
| 21622 | (KJS::stringProtoFuncCharAt): |
| 21623 | (KJS::stringProtoFuncCharCodeAt): |
| 21624 | (KJS::stringProtoFuncConcat): |
| 21625 | (KJS::stringProtoFuncIndexOf): |
| 21626 | (KJS::stringProtoFuncLastIndexOf): |
| 21627 | (KJS::stringProtoFuncMatch): |
| 21628 | (KJS::stringProtoFuncSearch): |
| 21629 | (KJS::stringProtoFuncReplace): |
| 21630 | (KJS::stringProtoFuncSlice): |
| 21631 | (KJS::stringProtoFuncSplit): |
| 21632 | (KJS::stringProtoFuncSubstr): |
| 21633 | (KJS::stringProtoFuncSubstring): |
| 21634 | (KJS::stringProtoFuncToLowerCase): |
| 21635 | (KJS::stringProtoFuncToUpperCase): |
| 21636 | (KJS::stringProtoFuncToLocaleLowerCase): |
| 21637 | (KJS::stringProtoFuncToLocaleUpperCase): |
| 21638 | (KJS::stringProtoFuncLocaleCompare): |
| 21639 | (KJS::stringProtoFuncBig): |
| 21640 | (KJS::stringProtoFuncSmall): |
| 21641 | (KJS::stringProtoFuncBlink): |
| 21642 | (KJS::stringProtoFuncBold): |
| 21643 | (KJS::stringProtoFuncFixed): |
| 21644 | (KJS::stringProtoFuncItalics): |
| 21645 | (KJS::stringProtoFuncStrike): |
| 21646 | (KJS::stringProtoFuncSub): |
| 21647 | (KJS::stringProtoFuncSup): |
| 21648 | (KJS::stringProtoFuncFontcolor): |
| 21649 | (KJS::stringProtoFuncFontsize): |
| 21650 | (KJS::stringProtoFuncAnchor): |
| 21651 | (KJS::stringProtoFuncLink): |
| 21652 | * kjs/string_object.h: |
| 21653 | |
| 21654 | 2008-01-15 Geoffrey Garen <ggaren@apple.com> |
| 21655 | |
| 21656 | Reviewed by Adam Roben. |
| 21657 | |
| 21658 | Some tweaks to our headerdoc, suggested by David Gatwood on the docs |
| 21659 | team. |
| 21660 | |
| 21661 | * API/JSBase.h: |
| 21662 | * API/JSObjectRef.h: |
| 21663 | * API/JSStringRef.h: |
| 21664 | * API/JSValueRef.h: |
| 21665 | |
| 21666 | 2008-01-15 Alp Toker <alp@atoker.com> |
| 21667 | |
| 21668 | Rubber-stamped by Anders. |
| 21669 | |
| 21670 | Make the HTTP backend configurable in the GTK+ port. curl is currently |
| 21671 | the only option. |
| 21672 | |
| 21673 | * wtf/Platform.h: Don't hard-code WTF_USE_CURL for GTK |
| 21674 | |
| 21675 | 2008-01-15 Sam Weinig <sam@webkit.org> |
| 21676 | |
| 21677 | Reviewed by Beth Dakin. |
| 21678 | |
| 21679 | Remove unneeded variable. |
| 21680 | |
| 21681 | * kjs/string_object.cpp: |
| 21682 | (KJS::StringProtoFuncSubstr::callAsFunction): |
| 21683 | |
| 21684 | 2008-01-14 Steve Falkenburg <sfalken@apple.com> |
| 21685 | |
| 21686 | Use shared vsprops for most vcproj properties. |
| 21687 | |
| 21688 | Reviewed by Darin. |
| 21689 | |
| 21690 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add missing Debug_Internal config. |
| 21691 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add missing Debug_Internal config. |
| 21692 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: |
| 21693 | |
| 21694 | 2008-01-14 Adam Roben <aroben@apple.com> |
| 21695 | |
| 21696 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added |
| 21697 | some headers that were missing from the vcproj so their contents will |
| 21698 | be included in Find in Files. |
| 21699 | |
| 21700 | 2008-01-14 Adam Roben <aroben@apple.com> |
| 21701 | |
| 21702 | Fix Bug 16871: Crash when loading apple.com/startpage |
| 21703 | |
| 21704 | <http://bugs.webkit.org/show_bug.cgi?id=16871> |
| 21705 | <rdar://problem/5686670> |
| 21706 | |
| 21707 | Patch written by Darin, reviewed by me. |
| 21708 | |
| 21709 | * kjs/ExecState.cpp: |
| 21710 | (KJS::ExecState::mark): Call ActivationImp::markChildren if our |
| 21711 | m_activation is on the stack. This is what ScopeChain::mark also does, |
| 21712 | but apparently in some cases it's possible for an ExecState's |
| 21713 | ActivationImp to not be in any ScopeChain. |
| 21714 | |
| 21715 | 2008-01-14 Kevin McCullough <kmccullough@apple.com> |
| 21716 | |
| 21717 | Reviewed by Oliver. |
| 21718 | |
| 21719 | -<rdar://problem/5622667> REGRESSION (Leopard-ToT): Endless loading loop |
| 21720 | trying to view techreport.com comments |
| 21721 | - We need to set values in the map, because if they are already in the |
| 21722 | map they will not be reset when we use add(). |
| 21723 | |
| 21724 | * kjs/array_instance.cpp: |
| 21725 | (KJS::ArrayInstance::put): |
| 21726 | |
| 21727 | 2008-01-14 Darin Adler <darin@apple.com> |
| 21728 | |
| 21729 | Reviewed by Adam. |
| 21730 | |
| 21731 | - re-speed-up the page load test (my StringImpl change slowed it down) |
| 21732 | |
| 21733 | * wtf/RefCounted.h: |
| 21734 | (WTF::RefCounted::RefCounted): Allow derived classes to start with a reference |
| 21735 | count other than 0. Eventually everyone will want to start with a 1. This is a |
| 21736 | staged change. For now, there's a default of 0, and you can specify 1. Later, |
| 21737 | there will be no default and everyone will have to specify. And then later, there |
| 21738 | will be a default of 1. Eventually, we can take away even the option of starting |
| 21739 | with 0! |
| 21740 | |
| 21741 | * wtf/Vector.h: |
| 21742 | (WTF::Vector::Vector): Sped up creation of non-empty vectors by removing the |
| 21743 | overhead of first constructing something empty and then calling resize. |
| 21744 | (WTF::Vector::clear): Sped up the common case of calling clear on an empty |
| 21745 | vector by adding a check for that case. |
| 21746 | (WTF::Vector::releaseBuffer): Marked this function inline and removed a branch |
| 21747 | in the case of vectors with no inline capacity (normal vectors) by leaving out |
| 21748 | the code to copy the inline buffer in that case. |
| 21749 | |
| 21750 | 2008-01-14 Alexey Proskuryakov <ap@webkit.org> |
| 21751 | |
| 21752 | Reviewed by David Kilzer. |
| 21753 | |
| 21754 | http://bugs.webkit.org/show_bug.cgi?id=16787 |
| 21755 | array.splice() with 1 element not working |
| 21756 | |
| 21757 | Test: fast/js/array-splice.html |
| 21758 | |
| 21759 | * kjs/array_object.cpp: |
| 21760 | (KJS::ArrayProtoFuncSplice::callAsFunction): Implement this Mozilla extension, and fix |
| 21761 | some other edge cases. |
| 21762 | |
| 21763 | 2008-01-13 Steve Falkenburg <sfalken@apple.com> |
| 21764 | |
| 21765 | Share common files across projects. |
| 21766 | |
| 21767 | Unify vsprops files |
| 21768 | Debug: common.vsprops, debug.vsprops |
| 21769 | Debug_Internal: common.vsprops, debug.vsprops, debug_internal.vsprops |
| 21770 | Release: common.vsprops, release.vsprops |
| 21771 | |
| 21772 | Shared properties can go into common.vsprops, shared debug settings can go into debug.vsprops. |
| 21773 | debug_internal.vsprops will be mostly empty except for file path prefix modifiers. |
| 21774 | |
| 21775 | Reviewed by Adam Roben. |
| 21776 | |
| 21777 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 21778 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 21779 | * JavaScriptCore.vcproj/debug.vsprops: Removed. |
| 21780 | * JavaScriptCore.vcproj/debug_internal.vsprops: Removed. |
| 21781 | * JavaScriptCore.vcproj/release.vsprops: Removed. |
| 21782 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: |
| 21783 | |
| 21784 | 2008-01-13 Marius Bugge Monsen <mbm@trolltech.com> |
| 21785 | |
| 21786 | Contributions and review by Adriaan de Groot, |
| 21787 | Simon Hausmann, Eric Seidel, and Darin Adler. |
| 21788 | |
| 21789 | - http://bugs.webkit.org/show_bug.cgi?id=16590 |
| 21790 | Compilation fixes for Solaris. |
| 21791 | |
| 21792 | * kjs/DateMath.h: |
| 21793 | (KJS::GregorianDateTime::GregorianDateTime): Use the WIN_OS code path |
| 21794 | for SOLARIS too, presumably because Solaris also lacks the tm_gtoff and tm_zone |
| 21795 | fields. |
| 21796 | (KJS::GregorianDateTime::operator tm): Ditto. |
| 21797 | |
| 21798 | * kjs/collector.cpp: |
| 21799 | (KJS::currentThreadStackBase): Use thr_stksegment on Solaris. |
| 21800 | |
| 21801 | * wtf/MathExtras.h: |
| 21802 | (isfinite): Implement for Solaris. |
| 21803 | (isinf): Ditto. |
| 21804 | (signbit): Ditto. But this one is wrong, so I added a FIXME. |
| 21805 | |
| 21806 | * wtf/Platform.h: Define PLATFORM(SOLARIS) when "sun" or "__sun" is defined. |
| 21807 | |
| 21808 | 2008-01-13 Michael Goddard <michael.goddard@trolltech.com> |
| 21809 | |
| 21810 | Reviewed by Anders Carlsson. |
| 21811 | |
| 21812 | Add binding language type to Instance. |
| 21813 | Allows runtime determination of the type of an |
| 21814 | Instance, to allow safe casting. Doesn't actually |
| 21815 | add any safe casting yet, though. |
| 21816 | |
| 21817 | Add a helper function to get an Instance from a JSObject*. |
| 21818 | Given an object and the expected binding language, see if |
| 21819 | the JSObject actually wraps an Instance of the given type |
| 21820 | and return it. Otherwise return 0. |
| 21821 | |
| 21822 | Move RuntimeObjectImp creations into Instance. |
| 21823 | Make the ctor protected, and Instance a friend class, so |
| 21824 | that all creation of RuntimeObjectImps goes through |
| 21825 | one place. |
| 21826 | |
| 21827 | Remove copy ctor/assignment operator for QtInstance. |
| 21828 | Instance itself is Noncopyable, so QtInstance doesn't |
| 21829 | need to have these. |
| 21830 | |
| 21831 | Add caching for QtInstance and associated RuntimeObjectImps. |
| 21832 | Push any dealings with QtLanguage bindings into QtInstance, |
| 21833 | and cache them there, rather than in the Instance layer. Add |
| 21834 | a QtRuntimeObjectImp to help with caching. |
| 21835 | |
| 21836 | * JavaScriptCore.exp: |
| 21837 | * bindings/c/c_instance.h: |
| 21838 | * bindings/jni/jni_instance.h: |
| 21839 | * bindings/objc/objc_instance.h: |
| 21840 | * bindings/qt/qt_instance.cpp: |
| 21841 | (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp): |
| 21842 | (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp): |
| 21843 | (KJS::Bindings::QtRuntimeObjectImp::invalidate): |
| 21844 | (KJS::Bindings::QtRuntimeObjectImp::removeFromCache): |
| 21845 | (KJS::Bindings::QtInstance::QtInstance): |
| 21846 | (KJS::Bindings::QtInstance::~QtInstance): |
| 21847 | (KJS::Bindings::QtInstance::getQtInstance): |
| 21848 | (KJS::Bindings::QtInstance::getRuntimeObject): |
| 21849 | * bindings/qt/qt_instance.h: |
| 21850 | (KJS::Bindings::QtInstance::getBindingLanguage): |
| 21851 | * bindings/runtime.cpp: |
| 21852 | (KJS::Bindings::Instance::createBindingForLanguageInstance): |
| 21853 | (KJS::Bindings::Instance::createRuntimeObject): |
| 21854 | (KJS::Bindings::Instance::getInstance): |
| 21855 | * bindings/runtime.h: |
| 21856 | * bindings/runtime_object.h: |
| 21857 | (KJS::RuntimeObjectImp::getInternalInstance): |
| 21858 | |
| 21859 | 2008-01-12 Alp Toker <alp@atoker.com> |
| 21860 | |
| 21861 | Reviewed by Mark Rowe. |
| 21862 | |
| 21863 | Hide non-public symbols in GTK+/autotools release builds. |
| 21864 | |
| 21865 | * GNUmakefile.am: |
| 21866 | |
| 21867 | 2008-01-12 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 21868 | |
| 21869 | Reviewed by Mark Rowe. |
| 21870 | |
| 21871 | Fix http://bugs.webkit.org/show_bug.cgi?id=16852 |
| 21872 | Fixes leaking of ActivationStackNode objects. |
| 21873 | |
| 21874 | * kjs/JSGlobalObject.cpp: |
| 21875 | (KJS::JSGlobalObject::deleteActivationStack): |
| 21876 | (KJS::JSGlobalObject::~JSGlobalObject): |
| 21877 | (KJS::JSGlobalObject::init): |
| 21878 | (KJS::JSGlobalObject::reset): |
| 21879 | * kjs/JSGlobalObject.h: |
| 21880 | |
| 21881 | 2008-01-12 Darin Adler <darin@apple.com> |
| 21882 | |
| 21883 | - try to fix Qt Windows build |
| 21884 | |
| 21885 | * pcre/dftables: Remove reliance on the list form of Perl pipes. |
| 21886 | |
| 21887 | 2008-01-12 Darin Adler <darin@apple.com> |
| 21888 | |
| 21889 | - try to fix Qt build |
| 21890 | |
| 21891 | * kjs/function.cpp: Added include of scope_chain_mark.h. |
| 21892 | * kjs/scope_chain_mark.h: Added multiple-include guards. |
| 21893 | |
| 21894 | 2008-01-12 Mark Rowe <mrowe@apple.com> |
| 21895 | |
| 21896 | Another Windows build fix. |
| 21897 | |
| 21898 | * kjs/Activation.h: |
| 21899 | |
| 21900 | 2008-01-12 Mark Rowe <mrowe@apple.com> |
| 21901 | |
| 21902 | Attempted Windows build fix. Use struct consistently when forward-declaring |
| 21903 | ActivationStackNode and StackActivation. |
| 21904 | |
| 21905 | * kjs/Activation.h: |
| 21906 | * kjs/JSGlobalObject.h: |
| 21907 | |
| 21908 | 2008-01-12 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 21909 | |
| 21910 | Reviewed by Maciej. |
| 21911 | |
| 21912 | Fixes a problem with the ActivationImp tear-off patch (r29425) where |
| 21913 | some of the calls to JSGlobalObject::tearOffActivation() were using |
| 21914 | the wrong test to determine whether it should leave a relic behind. |
| 21915 | |
| 21916 | * kjs/function.cpp: |
| 21917 | (KJS::FunctionImp::argumentsGetter): |
| 21918 | (KJS::ActivationImp::getOwnPropertySlot): |
| 21919 | |
| 21920 | 2008-01-11 Geoffrey Garen <ggaren@apple.com> |
| 21921 | |
| 21922 | Reviewed by Oliver Hunt. |
| 21923 | |
| 21924 | Fixed <rdar://problem/5665251> REGRESSION (r28880-r28886): Global |
| 21925 | variable access (16644) |
| 21926 | |
| 21927 | This bug was caused by var declarations shadowing built-in properties of |
| 21928 | the global object. |
| 21929 | |
| 21930 | To match Firefox, we've decided that var declarations will never shadow |
| 21931 | built-in properties of the global object or its prototypes. We used to |
| 21932 | behave more like IE, which allows shadowing, but walking that line got |
| 21933 | us into trouble with websites that sent us down the Firefox codepath. |
| 21934 | |
| 21935 | * kjs/JSVariableObject.h: |
| 21936 | (KJS::JSVariableObject::symbolTableGet): New code to support calling |
| 21937 | hasProperty before the variable object is fully initialized (so you |
| 21938 | can call it during initialization). |
| 21939 | |
| 21940 | * kjs/nodes.cpp:. |
| 21941 | (KJS::ProgramNode::initializeSymbolTable): Always do a full hasProperty |
| 21942 | check when looking for duplicates, not getDirect, since it only checks |
| 21943 | the property map, and not hasOwnProperty, since it doesn't check |
| 21944 | prototypes. |
| 21945 | (KJS::EvalNode::processDeclarations): ditto |
| 21946 | |
| 21947 | * kjs/property_slot.h: |
| 21948 | (KJS::PropertySlot::ungettableGetter): Best function name evar. |
| 21949 | |
| 21950 | 2008-01-11 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 21951 | |
| 21952 | Reviewed by Maciej. |
| 21953 | |
| 21954 | Optimized ActivationImp allocation, so that activation records are now |
| 21955 | first allocated on an explicitly managed stack and only heap allocated |
| 21956 | when necessary. Roughly a 5% improvement on SunSpider, and a larger |
| 21957 | improvement on benchmarks that use more function calls. |
| 21958 | |
| 21959 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 21960 | * kjs/Activation.h: Added. |
| 21961 | (KJS::ActivationImp::ActivationData::ActivationData): |
| 21962 | (KJS::ActivationImp::ActivationImp): |
| 21963 | (KJS::ActivationImp::classInfo): |
| 21964 | (KJS::ActivationImp::isActivationObject): |
| 21965 | (KJS::ActivationImp::isOnStack): |
| 21966 | (KJS::ActivationImp::d): |
| 21967 | (KJS::StackActivation::StackActivation): |
| 21968 | * kjs/ExecState.cpp: |
| 21969 | (KJS::ExecState::ExecState): |
| 21970 | (KJS::ExecState::~ExecState): |
| 21971 | * kjs/ExecState.h: |
| 21972 | (KJS::ExecState::replaceScopeChainTop): |
| 21973 | (KJS::ExecState::setActivationObject): |
| 21974 | (KJS::ExecState::setLocalStorage): |
| 21975 | * kjs/JSGlobalObject.cpp: |
| 21976 | (KJS::JSGlobalObject::reset): |
| 21977 | (KJS::JSGlobalObject::pushActivation): |
| 21978 | (KJS::JSGlobalObject::checkActivationCount): |
| 21979 | (KJS::JSGlobalObject::popActivationHelper): |
| 21980 | (KJS::JSGlobalObject::popActivation): |
| 21981 | (KJS::JSGlobalObject::tearOffActivation): |
| 21982 | * kjs/JSGlobalObject.h: |
| 21983 | * kjs/JSVariableObject.h: |
| 21984 | (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData): |
| 21985 | (KJS::JSVariableObject::JSVariableObject): |
| 21986 | * kjs/function.cpp: |
| 21987 | (KJS::FunctionImp::argumentsGetter): |
| 21988 | (KJS::ActivationImp::ActivationImp): |
| 21989 | (KJS::ActivationImp::~ActivationImp): |
| 21990 | (KJS::ActivationImp::init): |
| 21991 | (KJS::ActivationImp::getOwnPropertySlot): |
| 21992 | (KJS::ActivationImp::markHelper): |
| 21993 | (KJS::ActivationImp::mark): |
| 21994 | (KJS::ActivationImp::ActivationData::ActivationData): |
| 21995 | (KJS::GlobalFuncImp::callAsFunction): |
| 21996 | * kjs/function.h: |
| 21997 | * kjs/nodes.cpp: |
| 21998 | (KJS::PostIncResolveNode::evaluate): |
| 21999 | (KJS::PostDecResolveNode::evaluate): |
| 22000 | (KJS::PreIncResolveNode::evaluate): |
| 22001 | (KJS::PreDecResolveNode::evaluate): |
| 22002 | (KJS::ReadModifyResolveNode::evaluate): |
| 22003 | (KJS::AssignResolveNode::evaluate): |
| 22004 | (KJS::WithNode::execute): |
| 22005 | (KJS::TryNode::execute): |
| 22006 | (KJS::FunctionBodyNode::processDeclarations): |
| 22007 | (KJS::FuncExprNode::evaluate): |
| 22008 | * kjs/object.h: |
| 22009 | * kjs/scope_chain.h: |
| 22010 | (KJS::ScopeChain::replace): |
| 22011 | * kjs/scope_chain_mark.h: Added. |
| 22012 | (KJS::ScopeChain::mark): |
| 22013 | |
| 22014 | 2008-01-11 Simon Hausmann <hausmann@webkit.org> |
| 22015 | |
| 22016 | Reviewed by Mark Rowe. |
| 22017 | |
| 22018 | Fix the (clean) qmake build. For generating chartables.c we don't |
| 22019 | depend on a separate input source file anymore, the dftables perl |
| 22020 | script is enough. So use that instead as value for the .input |
| 22021 | variable, to ensure that qmake also generates a rule to call dftables. |
| 22022 | |
| 22023 | * pcre/pcre.pri: |
| 22024 | |
| 22025 | 2008-01-10 Geoffrey Garen <ggaren@apple.com> |
| 22026 | |
| 22027 | Reviewed by John Sullivan. |
| 22028 | |
| 22029 | Fixed some world leak reports: |
| 22030 | * <rdar://problem/5669436> PLT complains about world leak of 1 JavaScript |
| 22031 | Interpreter after running cvs-base suite |
| 22032 | |
| 22033 | * <rdar://problem/5669423> PLT complains about world leak if browser |
| 22034 | window is open when PLT starts |
| 22035 | |
| 22036 | * kjs/collector.h: Added the ability to distinguish between global |
| 22037 | objects and GC-protected global objects, since we only consider the |
| 22038 | latter to be world leaks. |
| 22039 | * kjs/collector.cpp: |
| 22040 | |
| 22041 | 2008-01-11 Mark Rowe <mrowe@apple.com> |
| 22042 | |
| 22043 | Silence qmake warning about ctgen lacking input. |
| 22044 | |
| 22045 | Rubber-stamped by Alp Toker. |
| 22046 | |
| 22047 | * pcre/pcre.pri: |
| 22048 | |
| 22049 | 2008-01-10 David Kilzer <ddkilzer@apple.com> |
| 22050 | |
| 22051 | dftables should be rewritten as a script |
| 22052 | |
| 22053 | <http://bugs.webkit.org/show_bug.cgi?id=16818> |
| 22054 | <rdar://problem/5681463> |
| 22055 | |
| 22056 | Reviewed by Darin. |
| 22057 | |
| 22058 | Rewrote the dftables utility in Perl. Attempted to switch all |
| 22059 | build systems to call the script directly instead of building |
| 22060 | a binary first. Only the Xcode build was able to be tested. |
| 22061 | |
| 22062 | * DerivedSources.make: Added pcre directory to VPATH and changed |
| 22063 | to invoke dftables directly. |
| 22064 | * GNUmakefile.am: Removed build information and changed to invoke |
| 22065 | dftables directly. |
| 22066 | * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed reference to |
| 22067 | dftables project. |
| 22068 | * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Ditto. |
| 22069 | * JavaScriptCore.vcproj/dftables: Removed. |
| 22070 | * JavaScriptCore.vcproj/dftables/dftables.vcproj: Removed. |
| 22071 | * JavaScriptCore.xcodeproj/project.pbxproj: Removed dftables target. |
| 22072 | * jscore.bkl: Removed dftables executable definition. |
| 22073 | * pcre/dftables: Copied from JavaScriptCore/pcre/dftables.cpp. |
| 22074 | * pcre/dftables.cpp: Removed. |
| 22075 | * pcre/dftables.pro: Removed. |
| 22076 | * pcre/pcre.pri: Removed references to dftables.cpp and changed to |
| 22077 | invoke dftables directly. |
| 22078 | |
| 22079 | 2008-01-10 Dan Bernstein <mitz@apple.com> |
| 22080 | |
| 22081 | Reviewed by Darin Adler. |
| 22082 | |
| 22083 | - fix http://bugs.webkit.org/show_bug.cgi?id=16782 |
| 22084 | <rdar://problem/5675331> REGRESSION(r29266): Reproducible crash in fast/replaced/image-map.html |
| 22085 | |
| 22086 | The crash resulted from a native object (DumpRenderTree's |
| 22087 | EventSender) causing its wrapper to be invalidated (by clicking a |
| 22088 | link that replaced the document in the window) and consequently |
| 22089 | deallocated. The fix is to use RefPtrs to protect the native object |
| 22090 | from deletion by self-invalidation. |
| 22091 | |
| 22092 | * bindings/runtime_method.cpp: |
| 22093 | (RuntimeMethod::callAsFunction): |
| 22094 | * bindings/runtime_object.cpp: |
| 22095 | (RuntimeObjectImp::fallbackObjectGetter): |
| 22096 | (RuntimeObjectImp::fieldGetter): |
| 22097 | (RuntimeObjectImp::methodGetter): |
| 22098 | (RuntimeObjectImp::put): |
| 22099 | (RuntimeObjectImp::defaultValue): |
| 22100 | (RuntimeObjectImp::callAsFunction): |
| 22101 | |
| 22102 | 2008-01-07 Mark Rowe <mrowe@apple.com> |
| 22103 | |
| 22104 | Reviewed by Maciej Stachowiak. |
| 22105 | |
| 22106 | Turn testIsInteger assertions into compile-time asserts and move them into HashTraits.h |
| 22107 | where possible. |
| 22108 | |
| 22109 | * kjs/testkjs.cpp: |
| 22110 | * wtf/HashTraits.h: |
| 22111 | |
| 22112 | 2008-01-07 Nikolas Zimmermann <zimmermann@kde.org> |
| 22113 | |
| 22114 | Reviewed by Mark. |
| 22115 | |
| 22116 | Enable SVG_FONTS by default. |
| 22117 | |
| 22118 | * Configurations/JavaScriptCore.xcconfig: |
| 22119 | |
| 22120 | 2008-01-07 Darin Adler <darin@apple.com> |
| 22121 | |
| 22122 | Rubber stamped by David Kilzer. |
| 22123 | |
| 22124 | - get rid of empty fpconst.cpp |
| 22125 | |
| 22126 | * GNUmakefile.am: Remove fpconst.cpp. |
| 22127 | * JavaScriptCore.pri: Ditto. |
| 22128 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto. |
| 22129 | * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| 22130 | * JavaScriptCoreSources.bkl: Ditto. |
| 22131 | |
| 22132 | * kjs/fpconst.cpp: Removed. |
| 22133 | |
| 22134 | 2008-01-07 Darin Adler <darin@apple.com> |
| 22135 | |
| 22136 | Reviewed by David Kilzer. |
| 22137 | |
| 22138 | - fix alignment problem with NaN and Inf globals |
| 22139 | |
| 22140 | * kjs/fpconst.cpp: Move the contents of this file from here back to |
| 22141 | value.cpp. The reason this was in a separate file is that the DARWIN |
| 22142 | version of this used a declaration of the globals with a different |
| 22143 | type to avoid creating "init routines". That's no longer necessary for |
| 22144 | DARWIN and was never necessary for the non-DARWIN code path. |
| 22145 | To make this patch easy to merge, I didn't actually delete this file |
| 22146 | yet. We'll do that in a separate changeset. |
| 22147 | |
| 22148 | * kjs/value.cpp: If C99's NAN and INFINITY are present, then use them, |
| 22149 | othrewise use the union trick from fpconst.cpp. I think it would be |
| 22150 | better to eliminate KJS::NaN and KJS::Inf and just use NAN and INFINITY |
| 22151 | directly or std::numeric_limits<double>::quiet_nan() and |
| 22152 | std::numeric_limits<double>::infinity(). But when I tried that, it |
| 22153 | slowed down SunSpider. Someone else could do that cleanup if they |
| 22154 | could do it without slowing down the engine. |
| 22155 | |
| 22156 | 2008-01-07 Adam Roben <aroben@apple.com> |
| 22157 | |
| 22158 | Windows build fix |
| 22159 | |
| 22160 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added |
| 22161 | JavaScript.h to the project. |
| 22162 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: |
| 22163 | Copy JavaScript.h to WEBKITOUTPUTDIR. |
| 22164 | |
| 22165 | 2008-01-07 Timothy Hatcher <timothy@apple.com> |
| 22166 | |
| 22167 | Reviewed by Darin. |
| 22168 | |
| 22169 | Fix Mac build. |
| 22170 | |
| 22171 | * API/JSNode.c: |
| 22172 | * API/JSNode.h: |
| 22173 | * API/JSNodeList.c: |
| 22174 | * API/JSNodeList.h: |
| 22175 | * API/JavaScript.h: |
| 22176 | * API/JavaScriptCore.h: |
| 22177 | * API/minidom.c: |
| 22178 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 22179 | |
| 22180 | 2008-01-07 Alp Toker <alp@atoker.com> |
| 22181 | |
| 22182 | Reviewed by Darin. |
| 22183 | |
| 22184 | http://bugs.webkit.org/show_bug.cgi?id=16029 |
| 22185 | JavaScriptCore.h is not suitable for platforms other than Mac OS X |
| 22186 | |
| 22187 | Introduce a new JavaScriptCore/JavaScript.h public API header. This |
| 22188 | should be used by all new portable code using the JavaScriptCore API. |
| 22189 | |
| 22190 | JavaScriptCore/JavaScriptCore.h will remain for compatibility with |
| 22191 | existing applications that depend on it including JSStringRefCF.h |
| 22192 | which isn't portable. |
| 22193 | |
| 22194 | Also add minidom to the GTK+/autotools build since we can now support |
| 22195 | it on all platforms. |
| 22196 | |
| 22197 | * API/JSNode.h: |
| 22198 | * API/JSNodeList.h: |
| 22199 | * API/JavaScript.h: Added. |
| 22200 | * API/JavaScriptCore.h: |
| 22201 | * ForwardingHeaders/JavaScriptCore/JavaScript.h: Added. |
| 22202 | * GNUmakefile.am: |
| 22203 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 22204 | |
| 22205 | 2008-01-06 Eric Seidel <eric@webkit.org> |
| 22206 | |
| 22207 | Reviewed by Sam. |
| 22208 | |
| 22209 | Abstract all DateObject.set* functions in preparation for fixing: |
| 22210 | http://bugs.webkit.org/show_bug.cgi?id=16753 |
| 22211 | |
| 22212 | SunSpider had random changes here and there but was overall a wash. |
| 22213 | |
| 22214 | * kjs/date_object.cpp: |
| 22215 | (KJS::fillStructuresUsingTimeArgs): |
| 22216 | (KJS::setNewValueFromTimeArgs): |
| 22217 | (KJS::setNewValueFromDateArgs): |
| 22218 | (KJS::DateProtoFuncSetMilliSeconds::callAsFunction): |
| 22219 | (KJS::DateProtoFuncSetUTCMilliseconds::callAsFunction): |
| 22220 | (KJS::DateProtoFuncSetSeconds::callAsFunction): |
| 22221 | (KJS::DateProtoFuncSetUTCSeconds::callAsFunction): |
| 22222 | (KJS::DateProtoFuncSetMinutes::callAsFunction): |
| 22223 | (KJS::DateProtoFuncSetUTCMinutes::callAsFunction): |
| 22224 | (KJS::DateProtoFuncSetHours::callAsFunction): |
| 22225 | (KJS::DateProtoFuncSetUTCHours::callAsFunction): |
| 22226 | (KJS::DateProtoFuncSetDate::callAsFunction): |
| 22227 | (KJS::DateProtoFuncSetUTCDate::callAsFunction): |
| 22228 | (KJS::DateProtoFuncSetMonth::callAsFunction): |
| 22229 | (KJS::DateProtoFuncSetUTCMonth::callAsFunction): |
| 22230 | (KJS::DateProtoFuncSetFullYear::callAsFunction): |
| 22231 | (KJS::DateProtoFuncSetUTCFullYear::callAsFunction): |
| 22232 | |
| 22233 | 2008-01-06 Nikolas Zimmermann <zimmermann@kde.org> |
| 22234 | |
| 22235 | Reviewed by Dan. |
| 22236 | |
| 22237 | Add new helper function isArabicChar - SVG Fonts support needs it. |
| 22238 | |
| 22239 | * wtf/unicode/icu/UnicodeIcu.h: |
| 22240 | (WTF::Unicode::isArabicChar): |
| 22241 | * wtf/unicode/qt4/UnicodeQt4.h: |
| 22242 | (WTF::Unicode::isArabicChar): |
| 22243 | |
| 22244 | 2008-01-06 Alp Toker <alp@atoker.com> |
| 22245 | |
| 22246 | Reviewed by Mark Rowe. |
| 22247 | |
| 22248 | Use $(EXEEXT) to account for the .exe extension in the GTK+ Windows |
| 22249 | build. (This is already done correctly in DerivedSources.make.) Issue |
| 22250 | noticed by Mikkel when building in Cygwin. |
| 22251 | |
| 22252 | Add a missing slash. This was a hack from the qmake build system that |
| 22253 | isn't necessary with autotools. |
| 22254 | |
| 22255 | * GNUmakefile.am: |
| 22256 | |
| 22257 | 2008-01-05 Darin Adler <darin@apple.com> |
| 22258 | |
| 22259 | * API/JSRetainPtr.h: One more file that needed the change below. |
| 22260 | |
| 22261 | 2008-01-05 Darin Adler <darin@apple.com> |
| 22262 | |
| 22263 | * wtf/OwnPtr.h: OwnPtr needs the same fix as RefPtr below. |
| 22264 | |
| 22265 | 2008-01-05 Adam Roben <aroben@apple.com> |
| 22266 | |
| 22267 | Build fix. |
| 22268 | |
| 22269 | Reviewed by Maciej. |
| 22270 | |
| 22271 | * wtf/RetainPtr.h: Use PtrType instead of T* because of the |
| 22272 | RemovePointer magic. |
| 22273 | |
| 22274 | 2008-01-05 Darin Adler <darin@apple.com> |
| 22275 | |
| 22276 | Rubber stamped by Maciej Stachowiak. |
| 22277 | |
| 22278 | - cut down own PIC branches by using a pointer-to-member-data instead of a |
| 22279 | pointer-to-member-function in WTF smart pointers |
| 22280 | |
| 22281 | * wtf/OwnArrayPtr.h: |
| 22282 | * wtf/OwnPtr.h: |
| 22283 | * wtf/PassRefPtr.h: |
| 22284 | * wtf/RefPtr.h: |
| 22285 | * wtf/RetainPtr.h: |
| 22286 | Use a pointer to the m_ptr member instead of the get member. |
| 22287 | The GCC compiler generates better code for this idiom. |
| 22288 | |
| 22289 | 2008-01-05 Henry Mason <hmason@mac.com> |
| 22290 | |
| 22291 | Reviewed by Maciej Stachowiak. |
| 22292 | |
| 22293 | http://bugs.webkit.org/show_bug.cgi?id=16738 |
| 22294 | Bug 16738: Collector block offset could be stored as an cell offset instead of a byte offset |
| 22295 | |
| 22296 | Gives a 0.4% SunSpider boost and prettier code. |
| 22297 | |
| 22298 | * kjs/collector.cpp: Switched to cell offsets from byte offsets |
| 22299 | (KJS::Collector::heapAllocate): |
| 22300 | (KJS::Collector::sweep): |
| 22301 | |
| 22302 | 2008-01-04 Mark Rowe <mrowe@apple.com> |
| 22303 | |
| 22304 | Reviewed by Maciej Stachowiak. |
| 22305 | |
| 22306 | Have the two malloc zones print useful diagnostics if their free method are unexpectedly invoked. |
| 22307 | Due to <rdar://problem/5671357> this can happen if an application attempts to free a pointer that |
| 22308 | was not allocated by any registered malloc zone on the system. |
| 22309 | |
| 22310 | * kjs/CollectorHeapIntrospector.h: |
| 22311 | * wtf/FastMalloc.cpp: |
| 22312 | |
| 22313 | 2008-01-04 Alp Toker <alp@atoker.com> |
| 22314 | |
| 22315 | GTK+ autotools build fix. Terminate empty rules. |
| 22316 | |
| 22317 | * GNUmakefile.am: |
| 22318 | |
| 22319 | 2008-01-03 Simon Hausmann <hausmann@webkit.org> |
| 22320 | |
| 22321 | Reviewed by Mark Rowe. |
| 22322 | |
| 22323 | Fix compilation with gcc 4.3: limits.h is needed for INT_MAX. |
| 22324 | |
| 22325 | * pcre/pcre_exec.cpp: |
| 22326 | |
| 22327 | 2008-01-03 Darin Adler <darin@apple.com> |
| 22328 | |
| 22329 | * tests/mozilla/expected.html: The fix for bug 16696 also fixed a test |
| 22330 | case, ecma_3/RegExp/perlstress-002.js, so updated results to expect |
| 22331 | that test to succeed. |
| 22332 | |
| 22333 | 2008-01-02 Darin Adler <darin@apple.com> |
| 22334 | |
| 22335 | Reviewed by Geoff. |
| 22336 | |
| 22337 | - fix http://bugs.webkit.org/show_bug.cgi?id=16696 |
| 22338 | JSCRE fails fails to match Acid3 regexp |
| 22339 | |
| 22340 | Test: fast/regex/early-acid3-86.html |
| 22341 | |
| 22342 | The problem was with the cutoff point between backreferences and octal |
| 22343 | escape sequences. We need to determine the cutoff point by counting the |
| 22344 | total number of capturing brackets, which requires an extra pass through |
| 22345 | the expression when compiling it. |
| 22346 | |
| 22347 | * pcre/pcre_compile.cpp: |
| 22348 | (CompileData::CompileData): Added numCapturingBrackets. Removed some |
| 22349 | unused fields. |
| 22350 | (compileBranch): Use numCapturingBrackets when calling checkEscape. |
| 22351 | (calculateCompiledPatternLength): Use numCapturingBrackets when calling |
| 22352 | checkEscape, and also store the bracket count at the end of the compile. |
| 22353 | (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to |
| 22354 | count the number of brackets and then a second time to calculate the length. |
| 22355 | |
| 22356 | 2008-01-02 Darin Adler <darin@apple.com> |
| 22357 | |
| 22358 | Reviewed by Geoff. |
| 22359 | |
| 22360 | - fix http://bugs.webkit.org/show_bug.cgi?id=16696 |
| 22361 | JSCRE fails fails to match Acid3 regexp |
| 22362 | |
| 22363 | Test: fast/regex/early-acid3-86.html |
| 22364 | |
| 22365 | The problem was with the cutoff point between backreferences and octal |
| 22366 | escape sequences. We need to determine the cutoff point by counting the |
| 22367 | total number of capturing brackets, which requires an extra pass through |
| 22368 | the expression when compiling it. |
| 22369 | |
| 22370 | * pcre/pcre_compile.cpp: |
| 22371 | (CompileData::CompileData): Added numCapturingBrackets. Removed some |
| 22372 | unused fields. |
| 22373 | (compileBranch): Use numCapturingBrackets when calling checkEscape. |
| 22374 | (calculateCompiledPatternLength): Use numCapturingBrackets when calling |
| 22375 | checkEscape, and also store the bracket count at the end of the compile. |
| 22376 | (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to |
| 22377 | count the number of brackets and then a second time to calculate the length. |
| 22378 | |
| 22379 | 2008-01-02 David Kilzer <ddkilzer@webkit.org> |
| 22380 | |
| 22381 | Reviewed and landed by Darin. |
| 22382 | |
| 22383 | * kjs/nodes.cpp: |
| 22384 | (KJS::DoWhileNode::execute): Added a missing return. |
| 22385 | |
| 22386 | 2008-01-02 Darin Adler <darin@apple.com> |
| 22387 | |
| 22388 | - try to fix Qt build |
| 22389 | |
| 22390 | * wtf/unicode/qt4/UnicodeQt4.h: |
| 22391 | (WTF::Unicode::foldCase): Add some missing const. |
| 22392 | |
| 22393 | 2008-01-02 Alice Liu <alice.liu@apple.com> |
| 22394 | |
| 22395 | Reviewed by Sam Weinig. |
| 22396 | |
| 22397 | need to export ASCIICType.h for use in DRT |
| 22398 | |
| 22399 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 22400 | * wtf/ASCIICType.h: |
| 22401 | (WTF::isASCIIUpper): |
| 22402 | |
| 22403 | 2008-01-02 Sam Weinig <sam@webkit.org> |
| 22404 | |
| 22405 | Reviewed by Beth Dakin. |
| 22406 | |
| 22407 | Cleanup error_object.h/cpp. |
| 22408 | |
| 22409 | * kjs/JSGlobalObject.cpp: |
| 22410 | (KJS::JSGlobalObject::reset): |
| 22411 | * kjs/error_object.cpp: |
| 22412 | (KJS::ErrorInstance::ErrorInstance): |
| 22413 | (KJS::ErrorPrototype::ErrorPrototype): |
| 22414 | (KJS::ErrorProtoFuncToString::ErrorProtoFuncToString): |
| 22415 | (KJS::ErrorProtoFuncToString::callAsFunction): |
| 22416 | (KJS::ErrorObjectImp::ErrorObjectImp): |
| 22417 | (KJS::ErrorObjectImp::implementsConstruct): |
| 22418 | (KJS::ErrorObjectImp::construct): |
| 22419 | (KJS::ErrorObjectImp::callAsFunction): |
| 22420 | (KJS::NativeErrorPrototype::NativeErrorPrototype): |
| 22421 | (KJS::NativeErrorImp::NativeErrorImp): |
| 22422 | (KJS::NativeErrorImp::implementsConstruct): |
| 22423 | (KJS::NativeErrorImp::construct): |
| 22424 | (KJS::NativeErrorImp::callAsFunction): |
| 22425 | (KJS::NativeErrorImp::mark): |
| 22426 | * kjs/error_object.h: |
| 22427 | (KJS::ErrorInstance::classInfo): |
| 22428 | (KJS::NativeErrorImp::classInfo): |
| 22429 | |
| 22430 | 2008-01-02 Mark Rowe <mrowe@apple.com> |
| 22431 | |
| 22432 | Rubber-stamped by Alp Toker. |
| 22433 | |
| 22434 | * GNUmakefile.am: Add missing dependency on grammar.y. |
| 22435 | |
| 22436 | 2008-01-01 Darin Adler <darin@apple.com> |
| 22437 | |
| 22438 | Reviewed by Eric. |
| 22439 | |
| 22440 | - fix for http://bugs.webkit.org/show_bug.cgi?id=16695 |
| 22441 | JSC allows non-identifier codepoints in identifiers (affects Acid3) |
| 22442 | |
| 22443 | Test: fast/js/kde/parse.html |
| 22444 | |
| 22445 | * kjs/lexer.cpp: |
| 22446 | (KJS::Lexer::lex): Added additional states to distinguish Unicode escapes at the |
| 22447 | start of identifiers from ones inside identifiers. Rejected characters that don't pass |
| 22448 | the isIdentStart and isIdentPart tests. |
| 22449 | (KJS::Lexer::convertUnicode): Removed incorrect FIXME comment. |
| 22450 | |
| 22451 | * kjs/lexer.h: Added new states to distinguish \u escapes at the start of identifiers |
| 22452 | from \u escapes inside identifiers. |
| 22453 | |
| 22454 | 2008-01-01 Darin Adler <darin@apple.com> |
| 22455 | |
| 22456 | - rolled scope chain optimization out; it was breaking the world |
| 22457 | |
| 22458 | 2008-01-01 Darin Adler <darin@apple.com> |
| 22459 | |
| 22460 | Reviewed by Geoff. |
| 22461 | |
| 22462 | - http://bugs.webkit.org/show_bug.cgi?id=16685 |
| 22463 | eliminate List::empty() to cut down on PIC branches |
| 22464 | |
| 22465 | Also included one other speed-up -- remove the call to reserveCapacity from |
| 22466 | FunctionBodyNode::processDeclarations in all but the most unusual cases. |
| 22467 | |
| 22468 | Together these make SunSpider 1.016x as fast. |
| 22469 | |
| 22470 | * JavaScriptCore.exp: Updated. |
| 22471 | * kjs/ExecState.cpp: |
| 22472 | (KJS::globalEmptyList): Added. Called only when creating global ExecState |
| 22473 | instances. |
| 22474 | (KJS::ExecState::ExecState): Broke constructor up into three separate functions, |
| 22475 | for the three separate node types. Also went through each of the three and |
| 22476 | streamlined as much as possible, removing dead code. This prevents us from having |
| 22477 | to access the global in the function body version of the constructor. |
| 22478 | |
| 22479 | * kjs/ExecState.h: Added emptyList(). Replaced the constructor with a set of |
| 22480 | three that are specific to the different node types that can create new execution |
| 22481 | state objects. |
| 22482 | |
| 22483 | * kjs/array_object.cpp: |
| 22484 | (KJS::ArrayProtoFuncToLocaleString::callAsFunction): Use exec->emptyList() instead |
| 22485 | of List::empty(). |
| 22486 | (KJS::ArrayProtoFuncConcat::callAsFunction): Ditto. |
| 22487 | (KJS::ArrayProtoFuncSlice::callAsFunction): Ditto. |
| 22488 | (KJS::ArrayProtoFuncSplice::callAsFunction): Ditto. |
| 22489 | (KJS::ArrayProtoFuncFilter::callAsFunction): Ditto. |
| 22490 | * kjs/function.cpp: |
| 22491 | (KJS::FunctionImp::callAsFunction): Updated to call new ExecState constructor. |
| 22492 | (KJS::GlobalFuncImp::callAsFunction): Ditto (for eval). |
| 22493 | * kjs/function_object.cpp: |
| 22494 | (FunctionObjectImp::construct): Use exec->emptyList() instead of List::empty(). |
| 22495 | |
| 22496 | * kjs/list.cpp: Removed List::empty. |
| 22497 | * kjs/list.h: Ditto. |
| 22498 | |
| 22499 | * kjs/nodes.cpp: |
| 22500 | (KJS::ElementNode::evaluate): Use exec->emptyList() instead of List::empty(). |
| 22501 | (KJS::ArrayNode::evaluate): Ditto. |
| 22502 | (KJS::ObjectLiteralNode::evaluate): Ditto. |
| 22503 | (KJS::PropertyListNode::evaluate): Ditto. |
| 22504 | (KJS::FunctionBodyNode::processDeclarations): Another speed-up. Check the capacity |
| 22505 | before calling reserveCapacity, because it doesn't get inlined the local storage |
| 22506 | vector is almost always big enough -- saving the function call overhead is a big |
| 22507 | deal. |
| 22508 | (KJS::FuncDeclNode::makeFunction): Use exec->emptyList() instead of List::empty(). |
| 22509 | (KJS::FuncExprNode::evaluate): Ditto. |
| 22510 | * kjs/object.cpp: |
| 22511 | (KJS::tryGetAndCallProperty): Ditto. |
| 22512 | * kjs/property_slot.cpp: |
| 22513 | (KJS::PropertySlot::functionGetter): Ditto. |
| 22514 | * kjs/string_object.cpp: |
| 22515 | (KJS::StringProtoFuncSplit::callAsFunction): Ditto. |
| 22516 | |
| 22517 | 2008-01-01 Darin Adler <darin@apple.com> |
| 22518 | |
| 22519 | Reviewed by Geoff. |
| 22520 | |
| 22521 | - fix http://bugs.webkit.org/show_bug.cgi?id=16648 |
| 22522 | REGRESSION (r28165): Yuku.com navigation prints "jsRegExpExecute failed with result -2" |
| 22523 | <rdar://problem/5646486> REGRESSION (r28165): Layout test fast/regex/test1 fails intermittently |
| 22524 | |
| 22525 | Fixes 34 failing test cases in the fast/regex/test1.html test. |
| 22526 | |
| 22527 | Restored the stack which prevents infinite loops for brackets that match the empty |
| 22528 | string; it had been removed as an optimization. |
| 22529 | |
| 22530 | Unfortunately, restoring this stack causes the regular expression test in SunSpider |
| 22531 | to be 1.095x as slow and the overall test to be 1.004x as slow. Maybe we can find |
| 22532 | a correct optimization to restore the speed! |
| 22533 | |
| 22534 | It's possible the original change was on the right track but just off by one. |
| 22535 | |
| 22536 | * pcre/pcre_exec.cpp: Add back eptrblock, but name it BracketChainNode. |
| 22537 | (MatchStack::pushNewFrame): Add back the logic needed here. |
| 22538 | (startNewGroup): Ditto. |
| 22539 | (match): Ditto. |
| 22540 | |
| 22541 | 2008-01-01 Darin Adler <darin@apple.com> |
| 22542 | |
| 22543 | Reviewed by Geoff. |
| 22544 | |
| 22545 | - http://bugs.webkit.org/show_bug.cgi?id=16683 |
| 22546 | speed up function calls by making ScopeChain::push cheaper |
| 22547 | |
| 22548 | This gives a 1.019x speedup on SunSpider. |
| 22549 | |
| 22550 | After doing this, I realized this probably will be obsolete when the optimization |
| 22551 | to avoid creating an activation object is done. When we do that one we should check |
| 22552 | if rolling this out will speed things up, since this does add overhead at the time |
| 22553 | you copy the scope chain. |
| 22554 | |
| 22555 | * kjs/object.h: Removed the ScopeChain::release function. It was |
| 22556 | marked inline, and called in exactly one place, so moved it there. |
| 22557 | No idea why it was in this header file! |
| 22558 | |
| 22559 | * kjs/scope_chain.cpp: Removed the overload of the ScopeChain::push |
| 22560 | function that takes another ScopeChain. It was unused. I think we used |
| 22561 | it over in WebCore at one point, but not any more. |
| 22562 | |
| 22563 | * kjs/scope_chain.h: Changed ScopeChainNode into a struct rather than |
| 22564 | a class, got rid of its constructor so we can have one that's uninitialized, |
| 22565 | and moved the refCount into a derived struct, ScopeChainHeapNode. Made _node |
| 22566 | mutable so it can be changed in the moveToHeap function. Changed the copy |
| 22567 | constructor and assignment operator to call moveToHeap, since the top node |
| 22568 | can't be shared when it's embedded in another ScopeChain object. Updated |
| 22569 | functions as needed to handle the case where the first object isn't on the |
| 22570 | heap or to add casts for cases where it's guaranteed to be. Changed the push |
| 22571 | function to always put the new node into the ScopeChain object; it will get |
| 22572 | put onto the heap when needed later. |
| 22573 | |
| 22574 | 2008-01-01 Geoffrey Garen <ggaren@apple.com> |
| 22575 | |
| 22576 | Reviewed by Darin Adler. |
| 22577 | |
| 22578 | Fixed slight logic error in reserveCapacity, where we would reallocate |
| 22579 | the storage buffer unnecessarily. |
| 22580 | |
| 22581 | * wtf/Vector.h: |
| 22582 | (WTF::::reserveCapacity): No need to grow the buffer if newCapacity is |
| 22583 | equal to capacity(). |
| 22584 | |
| 22585 | 2008-01-01 Darin Adler <darin@apple.com> |
| 22586 | |
| 22587 | Reviewed by Oliver. |
| 22588 | |
| 22589 | - http://bugs.webkit.org/show_bug.cgi?id=16684 |
| 22590 | eliminate debugger overhead from function body execution |
| 22591 | |
| 22592 | Speeds SunSpider up 1.003x. That's a small amount, but measurable. |
| 22593 | |
| 22594 | * JavaScriptCore.exp: Updated. |
| 22595 | * kjs/Parser.h: |
| 22596 | (KJS::Parser::parse): Create the node with a static member function named create() instead |
| 22597 | of using new explicitly. |
| 22598 | |
| 22599 | * kjs/grammar.y: Changed calls to new FunctionBodyNode to use FunctionBodyNode::create(). |
| 22600 | |
| 22601 | * kjs/nodes.cpp: |
| 22602 | (KJS::ProgramNode::create): Added. Calls new. |
| 22603 | (KJS::EvalNode::create): Ditto. |
| 22604 | (KJS::FunctionBodyNode::create): Ditto, but creates FunctionBodyNodeWithDebuggerHooks |
| 22605 | when a debugger is present. |
| 22606 | (KJS::FunctionBodyNode::execute): Removed debugger hooks. |
| 22607 | (KJS::FunctionBodyNodeWithDebuggerHooks::FunctionBodyNodeWithDebuggerHooks): Added. |
| 22608 | (KJS::FunctionBodyNodeWithDebuggerHooks::execute): Calls the debugger, then the code, |
| 22609 | then the debugger again. |
| 22610 | |
| 22611 | * kjs/nodes.h: Added create functions, made the constructors private and protected. |
| 22612 | |
| 22613 | 2007-12-30 Eric Seidel <eric@webkit.org> |
| 22614 | |
| 22615 | Reviewed by Sam. |
| 22616 | |
| 22617 | More small cleanup to array_object.cpp |
| 22618 | |
| 22619 | * kjs/array_object.cpp: |
| 22620 | (KJS::ArrayProtoFuncToString::callAsFunction): |
| 22621 | (KJS::ArrayProtoFuncToLocaleString::callAsFunction): |
| 22622 | (KJS::ArrayProtoFuncJoin::callAsFunction): |
| 22623 | (KJS::ArrayProtoFuncConcat::callAsFunction): |
| 22624 | (KJS::ArrayProtoFuncReverse::callAsFunction): |
| 22625 | (KJS::ArrayProtoFuncShift::callAsFunction): |
| 22626 | (KJS::ArrayProtoFuncSlice::callAsFunction): |
| 22627 | (KJS::ArrayProtoFuncSort::callAsFunction): |
| 22628 | (KJS::ArrayProtoFuncSplice::callAsFunction): |
| 22629 | (KJS::ArrayProtoFuncUnShift::callAsFunction): |
| 22630 | (KJS::ArrayProtoFuncFilter::callAsFunction): |
| 22631 | (KJS::ArrayProtoFuncMap::callAsFunction): |
| 22632 | (KJS::ArrayProtoFuncEvery::callAsFunction): |
| 22633 | |
| 22634 | 2007-12-30 Eric Seidel <eric@webkit.org> |
| 22635 | |
| 22636 | Reviewed by Sam. |
| 22637 | |
| 22638 | Apply wkstyle to array_object.cpp |
| 22639 | |
| 22640 | * kjs/array_object.cpp: |
| 22641 | (KJS::ArrayPrototype::ArrayPrototype): |
| 22642 | (KJS::ArrayPrototype::getOwnPropertySlot): |
| 22643 | (KJS::ArrayProtoFuncConcat::callAsFunction): |
| 22644 | (KJS::ArrayProtoFuncPop::callAsFunction): |
| 22645 | (KJS::ArrayProtoFuncReverse::callAsFunction): |
| 22646 | (KJS::ArrayProtoFuncShift::callAsFunction): |
| 22647 | (KJS::ArrayProtoFuncSlice::callAsFunction): |
| 22648 | (KJS::ArrayProtoFuncSort::callAsFunction): |
| 22649 | (KJS::ArrayProtoFuncSplice::callAsFunction): |
| 22650 | (KJS::ArrayProtoFuncUnShift::callAsFunction): |
| 22651 | (KJS::ArrayProtoFuncFilter::callAsFunction): |
| 22652 | (KJS::ArrayProtoFuncMap::callAsFunction): |
| 22653 | (KJS::ArrayProtoFuncEvery::callAsFunction): |
| 22654 | (KJS::ArrayProtoFuncLastIndexOf::callAsFunction): |
| 22655 | (KJS::ArrayObjectImp::ArrayObjectImp): |
| 22656 | (KJS::ArrayObjectImp::implementsConstruct): |
| 22657 | (KJS::ArrayObjectImp::construct): |
| 22658 | (KJS::ArrayObjectImp::callAsFunction): |
| 22659 | |
| 22660 | 2007-12-30 Eric Seidel <eric@webkit.org> |
| 22661 | |
| 22662 | Reviewed by Sam. |
| 22663 | |
| 22664 | Remove maxInt/minInt, replacing with std:max/min<int>() |
| 22665 | |
| 22666 | * kjs/array_object.cpp: |
| 22667 | (KJS::ArrayProtoFuncSplice::callAsFunction): |
| 22668 | * kjs/operations.cpp: |
| 22669 | * kjs/operations.h: |
| 22670 | |
| 22671 | 2007-12-30 Eric Seidel <eric@webkit.org> |
| 22672 | |
| 22673 | Reviewed by Sam. |
| 22674 | |
| 22675 | Update Number.toString to properly throw exceptions. |
| 22676 | Cleanup code in Number.toString implementation. |
| 22677 | |
| 22678 | * kjs/number_object.cpp: |
| 22679 | (KJS::numberToString): |
| 22680 | * kjs/object.cpp: |
| 22681 | (KJS::Error::create): Remove bogus debug lines. |
| 22682 | |
| 22683 | 2007-12-28 Eric Seidel <eric@webkit.org> |
| 22684 | |
| 22685 | Reviewed by Oliver. |
| 22686 | |
| 22687 | ASSERT when debugging via Drosera due to missed var lookup optimization. |
| 22688 | http://bugs.webkit.org/show_bug.cgi?id=16634 |
| 22689 | |
| 22690 | No test case possible. |
| 22691 | |
| 22692 | * kjs/nodes.cpp: |
| 22693 | (KJS::BreakpointCheckStatement::optimizeVariableAccess): |
| 22694 | * kjs/nodes.h: |
| 22695 | |
| 22696 | 2007-12-28 Eric Seidel <eric@webkit.org> |
| 22697 | |
| 22698 | Reviewed by Oliver. |
| 22699 | |
| 22700 | Fix (-0).toFixed() and re-factor a little |
| 22701 | Fix (-0).toExponential() and printing of trailing 0s in toExponential |
| 22702 | Fix toPrecision(nan) handling |
| 22703 | http://bugs.webkit.org/show_bug.cgi?id=16640 |
| 22704 | |
| 22705 | * kjs/number_object.cpp: |
| 22706 | (KJS::numberToFixed): |
| 22707 | (KJS::fractionalPartToString): |
| 22708 | (KJS::numberToExponential): |
| 22709 | (KJS::numberToPrecision): |
| 22710 | |
| 22711 | 2007-12-28 Eric Seidel <eric@webkit.org> |
| 22712 | |
| 22713 | Reviewed by Sam. |
| 22714 | |
| 22715 | More changes to make number code readable |
| 22716 | |
| 22717 | * kjs/number_object.cpp: |
| 22718 | (KJS::integer_part_noexp): |
| 22719 | (KJS::numberToFixed): |
| 22720 | (KJS::numberToExponential): |
| 22721 | |
| 22722 | 2007-12-28 Eric Seidel <eric@webkit.org> |
| 22723 | |
| 22724 | Reviewed by Sam. |
| 22725 | |
| 22726 | More small cleanups to toPrecision |
| 22727 | |
| 22728 | * kjs/number_object.cpp: |
| 22729 | (KJS::numberToPrecision): |
| 22730 | |
| 22731 | 2007-12-28 Eric Seidel <eric@webkit.org> |
| 22732 | |
| 22733 | Reviewed by Sam. |
| 22734 | |
| 22735 | More small attempts to make number code readable |
| 22736 | |
| 22737 | * kjs/number_object.cpp: |
| 22738 | (KJS::exponentialPartToString): |
| 22739 | (KJS::numberToExponential): |
| 22740 | (KJS::numberToPrecision): |
| 22741 | |
| 22742 | 2007-12-28 Eric Seidel <eric@webkit.org> |
| 22743 | |
| 22744 | Reviewed by Sam. |
| 22745 | |
| 22746 | Break out callAsFunction implementations into static functions |
| 22747 | |
| 22748 | * kjs/number_object.cpp: |
| 22749 | (KJS::numberToString): |
| 22750 | (KJS::numberToFixed): |
| 22751 | (KJS::numberToExponential): |
| 22752 | (KJS::numberToPrecision): |
| 22753 | (KJS::NumberProtoFunc::callAsFunction): |
| 22754 | |
| 22755 | 2007-12-28 Eric Seidel <eric@webkit.org> |
| 22756 | |
| 22757 | Reviewed by Sam. |
| 22758 | |
| 22759 | Apply wkstyle/astyle and fix placement of * |
| 22760 | |
| 22761 | * kjs/number_object.cpp: |
| 22762 | (KJS::NumberInstance::NumberInstance): |
| 22763 | (KJS::NumberPrototype::NumberPrototype): |
| 22764 | (KJS::NumberProtoFunc::NumberProtoFunc): |
| 22765 | (KJS::integer_part_noexp): |
| 22766 | (KJS::intPow10): |
| 22767 | (KJS::NumberProtoFunc::callAsFunction): |
| 22768 | (KJS::NumberObjectImp::NumberObjectImp): |
| 22769 | (KJS::NumberObjectImp::getOwnPropertySlot): |
| 22770 | (KJS::NumberObjectImp::getValueProperty): |
| 22771 | (KJS::NumberObjectImp::implementsConstruct): |
| 22772 | (KJS::NumberObjectImp::construct): |
| 22773 | (KJS::NumberObjectImp::callAsFunction): |
| 22774 | * kjs/object.cpp: |
| 22775 | (KJS::JSObject::put): |
| 22776 | |
| 22777 | 2007-12-27 Eric Seidel <eric@webkit.org> |
| 22778 | |
| 22779 | Reviewed by Sam. |
| 22780 | |
| 22781 | ASSERT in JavaScriptCore while viewing WICD test case |
| 22782 | http://bugs.webkit.org/show_bug.cgi?id=16626 |
| 22783 | |
| 22784 | * kjs/nodes.cpp: |
| 22785 | (KJS::ForInNode::execute): move KJS_CHECK_EXCEPTION to proper place |
| 22786 | |
| 22787 | 2007-12-26 Jan Michael Alonzo <jmalonzo@unpluggable.com> |
| 22788 | |
| 22789 | Reviewed by Alp Toker. |
| 22790 | |
| 22791 | http://bugs.webkit.org/show_bug.cgi?id=16390 |
| 22792 | Use autotools or GNU make as the build system for the GTK port |
| 22793 | |
| 22794 | * GNUmakefile.am: Added. |
| 22795 | |
| 22796 | 2007-12-25 Maciej Stachowiak <mjs@apple.com> |
| 22797 | |
| 22798 | Reviewed by Oliver. |
| 22799 | |
| 22800 | - Remove unnecessary redundant check from property setting |
| 22801 | http://bugs.webkit.org/show_bug.cgi?id=16602 |
| 22802 | |
| 22803 | 1.3% speedup on SunSpider. |
| 22804 | |
| 22805 | * kjs/object.cpp: |
| 22806 | (KJS::JSObject::put): Don't do canPut check when not needed; let |
| 22807 | the PropertyMap handle it. |
| 22808 | (KJS::JSObject::canPut): Don't check the static property |
| 22809 | table. lookupPut does that already. |
| 22810 | |
| 22811 | 2007-12-24 Alp Toker <alp@atoker.com> |
| 22812 | |
| 22813 | Fix builds that don't use AllInOneFile.cpp following breakage |
| 22814 | introduced in r28973. |
| 22815 | |
| 22816 | * kjs/grammar.y: |
| 22817 | |
| 22818 | 2007-12-24 Maciej Stachowiak <mjs@apple.com> |
| 22819 | |
| 22820 | Reviewed by Eric. |
| 22821 | |
| 22822 | - Optimize variable declarations |
| 22823 | http://bugs.webkit.org/show_bug.cgi?id=16585 |
| 22824 | |
| 22825 | 3.5% speedup on SunSpider. |
| 22826 | |
| 22827 | var statements now result in either assignments or empty statements. |
| 22828 | |
| 22829 | This allows a couple of optimization opportunities: |
| 22830 | - No need to branch at runtime to check if there is an initializer |
| 22831 | - EmptyStatementNodes can be removed entirely (also done in this patch) |
| 22832 | - Assignment expressions get properly optimized for local variables |
| 22833 | |
| 22834 | This patch also includes some code cleanup: |
| 22835 | - Most of the old VarStatement/VarDecl logic is now only used for const declarations, |
| 22836 | thus it is renamed appropriately |
| 22837 | - AssignExprNode is gone |
| 22838 | |
| 22839 | * JavaScriptCore.exp: |
| 22840 | * kjs/NodeInfo.h: |
| 22841 | * kjs/grammar.y: |
| 22842 | * kjs/nodes.cpp: |
| 22843 | (KJS::SourceElements::append): |
| 22844 | (KJS::ConstDeclNode::ConstDeclNode): |
| 22845 | (KJS::ConstDeclNode::optimizeVariableAccess): |
| 22846 | (KJS::ConstDeclNode::handleSlowCase): |
| 22847 | (KJS::ConstDeclNode::evaluateSingle): |
| 22848 | (KJS::ConstDeclNode::evaluate): |
| 22849 | (KJS::ConstStatementNode::optimizeVariableAccess): |
| 22850 | (KJS::ConstStatementNode::execute): |
| 22851 | (KJS::VarStatementNode::optimizeVariableAccess): |
| 22852 | (KJS::VarStatementNode::execute): |
| 22853 | (KJS::ForInNode::ForInNode): |
| 22854 | (KJS::ForInNode::optimizeVariableAccess): |
| 22855 | (KJS::ForInNode::execute): |
| 22856 | (KJS::FunctionBodyNode::initializeSymbolTable): |
| 22857 | (KJS::ProgramNode::initializeSymbolTable): |
| 22858 | (KJS::FunctionBodyNode::processDeclarations): |
| 22859 | (KJS::ProgramNode::processDeclarations): |
| 22860 | (KJS::EvalNode::processDeclarations): |
| 22861 | * kjs/nodes.h: |
| 22862 | (KJS::DeclarationStacks::): |
| 22863 | (KJS::StatementNode::): |
| 22864 | (KJS::ConstDeclNode::): |
| 22865 | (KJS::ConstStatementNode::): |
| 22866 | (KJS::EmptyStatementNode::): |
| 22867 | (KJS::VarStatementNode::): |
| 22868 | (KJS::ForNode::): |
| 22869 | * kjs/nodes2string.cpp: |
| 22870 | (KJS::ConstDeclNode::streamTo): |
| 22871 | (KJS::ConstStatementNode::streamTo): |
| 22872 | (KJS::ScopeNode::streamTo): |
| 22873 | (KJS::VarStatementNode::streamTo): |
| 22874 | (KJS::ForNode::streamTo): |
| 22875 | (KJS::ForInNode::streamTo): |
| 22876 | |
| 22877 | 2007-12-21 Mark Rowe <mrowe@apple.com> |
| 22878 | |
| 22879 | Reviewed by Oliver Hunt. |
| 22880 | |
| 22881 | * JavaScriptCore.exp: Remove unused symbol to prevent a weak external symbol |
| 22882 | being generated in JavaScriptCore.framework. |
| 22883 | |
| 22884 | 2007-12-21 Darin Adler <darin@apple.com> |
| 22885 | |
| 22886 | Requested by Maciej. |
| 22887 | |
| 22888 | * kjs/nodes.h: Use the new NEVER_INLINE here and eliminate the old |
| 22889 | KJS_NO_INLINE. We don't want to have two, and we figured it was better |
| 22890 | to keep the one that's in WTF. |
| 22891 | |
| 22892 | 2007-12-21 Darin Adler <darin@apple.com> |
| 22893 | |
| 22894 | Reviewed by Eric. |
| 22895 | |
| 22896 | - http://bugs.webkit.org/show_bug.cgi?id=16561 |
| 22897 | remove debugger overhead from non-debugged JavaScript execution |
| 22898 | |
| 22899 | 1.022x as fast on SunSpider. |
| 22900 | |
| 22901 | * JavaScriptCore.exp: Updated. |
| 22902 | |
| 22903 | * kjs/NodeInfo.h: Renamed SourceElementsStub to SourceElements, |
| 22904 | since that more accurately describes the role of this object, which |
| 22905 | is a reference-counted wrapper for a Vector. |
| 22906 | |
| 22907 | * kjs/Parser.cpp: |
| 22908 | (KJS::Parser::didFinishParsing): Changed parameter type to SourceElements, |
| 22909 | and use plain assignment instead of set. |
| 22910 | * kjs/Parser.h: Changed parameter type of didFinishParsing to a |
| 22911 | SourceElements. Also changed m_sourceElements; we now use a RefPtr instead |
| 22912 | of an OwnPtr as well. |
| 22913 | |
| 22914 | * kjs/grammar.y: Got rid of all the calls to release() on SourceElements. |
| 22915 | That's now handed inside the constructors for various node types, since we now |
| 22916 | use vector swapping instead. |
| 22917 | |
| 22918 | * kjs/nodes.cpp: |
| 22919 | (KJS::Node::rethrowException): Added NEVER_INLINE, because this was getting inlined |
| 22920 | and we want exception handling out of the normal code flow. |
| 22921 | (KJS::SourceElements::append): Moved here from the header. This now handles |
| 22922 | creating a BreakpointCheckStatement for each statement in the debugger case. |
| 22923 | That way we can get breakpoint handling without having it in every execute function. |
| 22924 | (KJS::BreakpointCheckStatement::BreakpointCheckStatement): Added. |
| 22925 | (KJS::BreakpointCheckStatement::execute): Added. Contains the code that was formerly |
| 22926 | in the StatementNode::hitStatement function and the KJS_BREAKPOINT macro. |
| 22927 | (KJS::BreakpointCheckStatement::streamTo): Added. |
| 22928 | (KJS::ArgumentListNode::evaluateList): Use KJS_CHECKEXCEPTIONVOID since the return |
| 22929 | type is void. |
| 22930 | (KJS::VarStatementNode::execute): Removed KJS_BREAKPOINT. |
| 22931 | (KJS::BlockNode::BlockNode): Changed parameter type to SourceElements. |
| 22932 | Changed code to use release since the class now contains a vector rather than |
| 22933 | a vector point. |
| 22934 | (KJS::BlockNode::optimizeVariableAccess): Updated since member is now a vector |
| 22935 | rather than a vector pointer. |
| 22936 | (KJS::BlockNode::execute): Ditto. |
| 22937 | (KJS::ExprStatementNode::execute): Removed KJS_BREAKPOINT. |
| 22938 | (KJS::IfNode::execute): Ditto. |
| 22939 | (KJS::IfElseNode::execute): Ditto. |
| 22940 | (KJS::DoWhileNode::execute): Ditto. |
| 22941 | (KJS::WhileNode::execute): Ditto. |
| 22942 | (KJS::ContinueNode::execute): Ditto. |
| 22943 | (KJS::BreakNode::execute): Ditto. |
| 22944 | (KJS::ReturnNode::execute): Ditto. |
| 22945 | (KJS::WithNode::execute): Ditto. |
| 22946 | (KJS::CaseClauseNode::optimizeVariableAccess): Updated since member is now a vector |
| 22947 | rather than a vector pointer. |
| 22948 | (KJS::CaseClauseNode::executeStatements): Ditto. |
| 22949 | (KJS::SwitchNode::execute): Removed KJS_BREAKPOINT. |
| 22950 | (KJS::ThrowNode::execute): Ditto. |
| 22951 | (KJS::TryNode::execute): Ditto. |
| 22952 | (KJS::ScopeNode::ScopeNode): Changed parameter type to SourceElements. |
| 22953 | (KJS::ProgramNode::ProgramNode): Ditto. |
| 22954 | (KJS::EvalNode::EvalNode): Ditto. |
| 22955 | (KJS::FunctionBodyNode::FunctionBodyNode): Ditto. |
| 22956 | (KJS::ScopeNode::optimizeVariableAccess): Updated since member is now a vector |
| 22957 | rather than a vector pointer. |
| 22958 | |
| 22959 | * kjs/nodes.h: Removed hitStatement. Renamed SourceElements to StatementVector. |
| 22960 | Renamed SourceElementsStub to SourceElements and made it derive from |
| 22961 | ParserRefCounted rather than from Node, hold a vector rather than a pointer to |
| 22962 | a vector, and changed the release function to swap with another vector rather |
| 22963 | than the pointer idiom. Updated BlockNode and CaseClauseNode to hold actual |
| 22964 | vectors instead of pointers to vectors. Added BreakpointCheckStatement. |
| 22965 | |
| 22966 | * kjs/nodes2string.cpp: |
| 22967 | (KJS::statementListStreamTo): Changed to work on a vector instead of a pointer |
| 22968 | to a vector. |
| 22969 | (KJS::BlockNode::streamTo): Ditto. |
| 22970 | (KJS::CaseClauseNode::streamTo): Ditto. |
| 22971 | |
| 22972 | * wtf/AlwaysInline.h: Added NEVER_INLINE. |
| 22973 | * wtf/PassRefPtr.h: Tweaked formatting. Added clear() function that matches the |
| 22974 | ones in OwnPtr and auto_ptr. |
| 22975 | * wtf/RefPtr.h: Ditto. |
| 22976 | |
| 22977 | 2007-12-21 Darin Adler <darin@apple.com> |
| 22978 | |
| 22979 | - fix broken regression tests |
| 22980 | |
| 22981 | The broken tests were fast/js/do-while-expression-value.html and |
| 22982 | fast/js/while-expression-value.html. |
| 22983 | |
| 22984 | * kjs/nodes.cpp: Check in the correct version of this file. I had accidentally landed |
| 22985 | an old version of my patch for bug 16471. |
| 22986 | (KJS::statementListExecute): The logic here was backwards. Have to set the value |
| 22987 | even for non-normal execution results. |
| 22988 | |
| 22989 | 2007-12-20 Alexey Proskuryakov <ap@webkit.org> |
| 22990 | |
| 22991 | Windows build fix |
| 22992 | |
| 22993 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Copy npruntime_internal.h |
| 22994 | to WebKitBuild. |
| 22995 | |
| 22996 | 2007-12-20 Eric Seidel <eric@webkit.org> |
| 22997 | |
| 22998 | Reviewed by mjs. |
| 22999 | |
| 23000 | Split IfNode into IfNode and IfElseNode for speedup. |
| 23001 | http://bugs.webkit.org/show_bug.cgi?id=16470 |
| 23002 | |
| 23003 | SunSpider claims this is 1.003x as fast as before. |
| 23004 | (This required running with --runs 15 to get consistent enough results to tell!) |
| 23005 | |
| 23006 | * kjs/grammar.y: |
| 23007 | * kjs/nodes.cpp: |
| 23008 | (KJS::IfNode::optimizeVariableAccess): |
| 23009 | (KJS::IfNode::execute): |
| 23010 | (KJS::IfNode::getDeclarations): |
| 23011 | (KJS::IfElseNode::optimizeVariableAccess): |
| 23012 | (KJS::IfElseNode::execute): |
| 23013 | (KJS::IfElseNode::getDeclarations): |
| 23014 | * kjs/nodes.h: |
| 23015 | (KJS::IfNode::): |
| 23016 | (KJS::IfElseNode::): |
| 23017 | * kjs/nodes2string.cpp: |
| 23018 | (KJS::IfNode::streamTo): |
| 23019 | (KJS::IfElseNode::streamTo): |
| 23020 | |
| 23021 | 2007-12-20 Darin Adler <darin@apple.com> |
| 23022 | |
| 23023 | Reviewed by Sam. |
| 23024 | |
| 23025 | * wtf/OwnPtr.h: |
| 23026 | (WTF::operator==): Added. |
| 23027 | (WTF::operator!=): Added. |
| 23028 | |
| 23029 | 2007-12-20 Geoffrey Garen <ggaren@apple.com> |
| 23030 | |
| 23031 | Reviewed by Oliver Hunt. |
| 23032 | |
| 23033 | AST optimization: Avoid NULL-checking ForNode's child nodes. |
| 23034 | |
| 23035 | 0.6% speedup on SunSpider. |
| 23036 | |
| 23037 | This is a proof of concept patch that demonstrates how to optimize |
| 23038 | grammar productions with optional components, like |
| 23039 | |
| 23040 | for (optional; optional; optional) { |
| 23041 | ... |
| 23042 | } |
| 23043 | |
| 23044 | The parser emits NULL for an optional component that is not present. |
| 23045 | |
| 23046 | Instead of checking for a NULL child at execution time, a node that |
| 23047 | expects an optional component to be present more often than not checks |
| 23048 | for a NULL child at construction time, and substitutes a viable |
| 23049 | alternative node in its place. |
| 23050 | |
| 23051 | (We'd like the parser to start emitting NULL a lot more once we teach |
| 23052 | it to emit NULL for certain no-op productions like EmptyStatement and |
| 23053 | VariableStatement, so, as a foundation, it's important for nodes with |
| 23054 | NULL optional components to be fast.) |
| 23055 | |
| 23056 | * kjs/Parser.cpp: |
| 23057 | (KJS::Parser::didFinishParsing): Check for NULL SourceElements. Also, |
| 23058 | moved didFinishParsing into the .cpp file because adding a branch while |
| 23059 | it was in the header file caused a substantial and inexplicable |
| 23060 | performance regression. (Did I mention that GCC is crazy?) |
| 23061 | |
| 23062 | * kjs/grammar.y: |
| 23063 | |
| 23064 | * kjs/nodes.cpp: |
| 23065 | (KJS::BlockNode::BlockNode): Check for NULL SourceElements. |
| 23066 | (KJS::ForNode::optimizeVariableAccess): No need to check for NULL here. |
| 23067 | (KJS::ForNode::execute): No need to check for NULL here. |
| 23068 | * kjs/nodes.h: |
| 23069 | (KJS::ForNode::): Check for NULL SourceElements. Substitute a TrueNode |
| 23070 | because it's semantically harmless, and it evaluates to boolean in an |
| 23071 | efficient manner. |
| 23072 | |
| 23073 | 2007-12-20 Oliver Hunt <oliver@apple.com> |
| 23074 | |
| 23075 | Reviewed by Geoff. |
| 23076 | |
| 23077 | Slight logic reordering in JSImmediate::from(double) |
| 23078 | |
| 23079 | This gives a 0.6% improvement in SunSpider. |
| 23080 | |
| 23081 | * kjs/JSImmediate.h: |
| 23082 | (KJS::JSImmediate::from): |
| 23083 | |
| 23084 | 2007-12-20 Eric Seidel <eric@webkit.org> |
| 23085 | |
| 23086 | Reviewed by mjs. |
| 23087 | |
| 23088 | Fix major Array regression introduced by 28899. |
| 23089 | |
| 23090 | SunSpider claims this is at least 1.37x as fast as pre-regression. :) |
| 23091 | |
| 23092 | * kjs/array_instance.cpp: make Arrays fast again! |
| 23093 | |
| 23094 | 2007-12-20 Eric Seidel <eric@webkit.org> |
| 23095 | |
| 23096 | Reviewed by Geoff, then re-rubber-stamped by Geoff after final search/replace and testing. |
| 23097 | |
| 23098 | Small reworking of Date code for 4% speedup on Date tests (0.2% overall) |
| 23099 | http://bugs.webkit.org/show_bug.cgi?id=16537 |
| 23100 | |
| 23101 | Make msToYear human-readable |
| 23102 | Make msToDayInMonth slightly more readable and avoid recalculating msToYear |
| 23103 | Remove use of isInLeapYear to avoid calling msToYear |
| 23104 | Remove dayInYear call by changing msToDayInMonth to dayInMonthFromDayInYear |
| 23105 | Remove more duplicate calls to dayInYear and getUTCOffset for further speedup |
| 23106 | |
| 23107 | * kjs/DateMath.cpp: |
| 23108 | (KJS::daysFrom1970ToYear): |
| 23109 | (KJS::msToYear): |
| 23110 | (KJS::monthFromDayInYear): |
| 23111 | (KJS::checkMonth): |
| 23112 | (KJS::dayInMonthFromDayInYear): |
| 23113 | (KJS::dateToDayInYear): |
| 23114 | (KJS::getDSTOffsetSimple): |
| 23115 | (KJS::getDSTOffset): |
| 23116 | (KJS::gregorianDateTimeToMS): |
| 23117 | (KJS::msToGregorianDateTime): |
| 23118 | |
| 23119 | 2007-12-20 Rodney Dawes <dobey@wayofthemonkey.com> |
| 23120 | |
| 23121 | Reviewed by Darin Adler. |
| 23122 | |
| 23123 | Proxy includes of npruntime.h or npapi.h through npruntime_internal.h |
| 23124 | Include stdio.h in npapi.h for the use of FILE with XP_UNIX defined |
| 23125 | This is for building with X11, as some type and enum names conflict |
| 23126 | with #define names in X11 headers. |
| 23127 | http://bugs.webkit.org/show_bug.cgi?id=15669 |
| 23128 | |
| 23129 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 23130 | * bindings/NP_jsobject.h: |
| 23131 | * bindings/npapi.h: |
| 23132 | * bindings/npruntime.cpp: |
| 23133 | * bindings/npruntime_impl.h: |
| 23134 | * bindings/npruntime_priv.h: |
| 23135 | * bindings/npruntime_internal.h: |
| 23136 | * bindings/testbindings.cpp: |
| 23137 | * bindings/c/c_class.h: |
| 23138 | * bindings/c/c_runtime.h: |
| 23139 | * bindings/c/c_utility.h: |
| 23140 | |
| 23141 | 2007-12-20 Darin Adler <darin@apple.com> |
| 23142 | |
| 23143 | - re-fix http://bugs.webkit.org/show_bug.cgi?id=16471 |
| 23144 | Completions need to be smaller (or not exist at all) |
| 23145 | |
| 23146 | Same patch as last time with the test failures problem fixed. |
| 23147 | |
| 23148 | * kjs/function.cpp: |
| 23149 | (KJS::GlobalFuncImp::callAsFunction): Make sure to check the completion |
| 23150 | type from newExec to see if the execute raised an exception. |
| 23151 | |
| 23152 | 2007-12-20 Darin Adler <darin@apple.com> |
| 23153 | |
| 23154 | - roll out that last change -- it was causing test failures; |
| 23155 | I'll check it back in after fixing them |
| 23156 | |
| 23157 | 2007-12-20 Darin Adler <darin@apple.com> |
| 23158 | |
| 23159 | Reviewed by Eric. |
| 23160 | |
| 23161 | - http://bugs.webkit.org/show_bug.cgi?id=16471 |
| 23162 | Completions need to be smaller (or not exist at all) |
| 23163 | |
| 23164 | SuSpider shows 2.4% speedup. |
| 23165 | |
| 23166 | Stop using completions in the execution engine. |
| 23167 | Instead, the completion type and label target are both |
| 23168 | stored in the ExecState. |
| 23169 | |
| 23170 | * API/JSContextRef.cpp: Removed unneeded include of "completion.h". |
| 23171 | * bindings/runtime_method.cpp: Removed unused execute function. |
| 23172 | * bindings/runtime_method.h: Ditto. |
| 23173 | |
| 23174 | * kjs/ExecState.h: Added completionType, breakOrContinueTarget, |
| 23175 | setCompletionType, setNormalCompletion, setBreakCompletion, |
| 23176 | setContinueCompletion, setReturnValueCompletion, setThrowCompletion, |
| 23177 | setInterruptedCompletion, m_completionType, and m_breakOrContinueTarget. |
| 23178 | |
| 23179 | * kjs/completion.h: Removed constructor and getter for target |
| 23180 | for break and continue from Completion. This class is now only |
| 23181 | used for the public API to Interpreter and such. |
| 23182 | |
| 23183 | * kjs/date_object.h: Removed unused execute function. |
| 23184 | |
| 23185 | * kjs/function.cpp: |
| 23186 | (KJS::FunctionImp::callAsFunction): Removed some unneeded |
| 23187 | exception processing. Updated to call the new execute function |
| 23188 | and to get the completion type from the ExecState. Merged in |
| 23189 | the execute function, which repeated some of the same logic and |
| 23190 | was called only from here. |
| 23191 | (KJS::GlobalFuncImp::callAsFunction): More of the same for eval. |
| 23192 | * kjs/function.h: Removed execute. |
| 23193 | |
| 23194 | * kjs/interpreter.cpp: |
| 23195 | (KJS::Interpreter::evaluate): Added code to convert the result of |
| 23196 | execut into a Completion. |
| 23197 | |
| 23198 | * kjs/nodes.cpp: |
| 23199 | (KJS::Node::setErrorCompletion): Renamed from createErrorCompletion. |
| 23200 | Now sets the completion type in the ExecState. |
| 23201 | (KJS::Node::rethrowException): Now sets the completion type in the |
| 23202 | ExecState. |
| 23203 | (KJS::StatementNode::hitStatement): Now sets the completion type in |
| 23204 | the ExecState. |
| 23205 | (KJS::VarStatementNode::execute): Updated to put completion type in |
| 23206 | the ExecState instead of a Completion object. |
| 23207 | (KJS::statementListExecute): Ditto. Also changed the for loop to use |
| 23208 | indices instead of iterators. |
| 23209 | (KJS::BlockNode::execute): Updated return type. |
| 23210 | (KJS::EmptyStatementNode::execute): Updated to put completion type in |
| 23211 | the ExecState instead of a Completion object. |
| 23212 | (KJS::ExprStatementNode::execute): Ditto. |
| 23213 | (KJS::IfNode::execute): Ditto. |
| 23214 | (KJS::DoWhileNode::execute): Ditto. Also streamlined the logic a little |
| 23215 | to make the normal case a little faster and moved the end outside the |
| 23216 | loop so that "break" can do a break. |
| 23217 | (KJS::WhileNode::execute): Ditto. |
| 23218 | (KJS::ForNode::execute): Ditto. |
| 23219 | (KJS::ForInNode::execute): Ditto. |
| 23220 | (KJS::ContinueNode::execute): Updated to put completion type in |
| 23221 | the ExecState instead of a Completion object. |
| 23222 | (KJS::BreakNode::execute): Ditto. |
| 23223 | (KJS::ReturnNode::execute): Ditto. |
| 23224 | (KJS::WithNode::execute): Ditto. |
| 23225 | (KJS::CaseClauseNode::executeStatements): Ditto. Also renamed to have |
| 23226 | execute in its name to reflect the fact that it's a member of the same |
| 23227 | family of functions. |
| 23228 | (KJS::CaseBlockNode::executeBlock): Ditto. |
| 23229 | (KJS::SwitchNode::execute): Ditto. |
| 23230 | (KJS::LabelNode::execute): Ditto. |
| 23231 | (KJS::ThrowNode::execute): Ditto. |
| 23232 | (KJS::TryNode::execute): Ditto. |
| 23233 | (KJS::ProgramNode::execute): Ditto. |
| 23234 | (KJS::EvalNode::execute): Ditto. |
| 23235 | (KJS::FunctionBodyNode::execute): Ditto. |
| 23236 | (KJS::FuncDeclNode::execute): Ditto. |
| 23237 | |
| 23238 | * kjs/nodes.h: Renamed setErrorCompletion to createErrorCompletion, made |
| 23239 | hitStatement protected, changed return value of execute to a JSValue, |
| 23240 | renamed evalStatements to executeStatements, and evalBlock to executeBlock. |
| 23241 | |
| 23242 | * kjs/number_object.h: Removed unused execute function. |
| 23243 | |
| 23244 | 2007-12-20 Geoffrey Garen <ggaren@apple.com> |
| 23245 | |
| 23246 | Added Radar number. |
| 23247 | |
| 23248 | * kjs/nodes.cpp: |
| 23249 | (KJS::ProgramNode::processDeclarations): |
| 23250 | |
| 23251 | 2007-12-20 Geoffrey Garen <ggaren@apple.com> |
| 23252 | |
| 23253 | Linux build fix: config.h has to come first. |
| 23254 | |
| 23255 | * kjs/error_object.cpp: |
| 23256 | |
| 23257 | 2007-12-19 Geoffrey Garen <ggaren@apple.com> |
| 23258 | |
| 23259 | Reviewed by Oliver Hunt. |
| 23260 | |
| 23261 | Optimized global access to global variables, using a symbol table. |
| 23262 | |
| 23263 | SunSpider reports a 1.5% overall speedup, a 6.2% speedup on 3d-morph, |
| 23264 | and a whopping 33.1% speedup on bitops-bitwise-and. |
| 23265 | |
| 23266 | * API/JSCallbackObjectFunctions.h: Replaced calls to JSObject:: with |
| 23267 | calls to Base::, since JSObject is not always our base class. This |
| 23268 | was always a bug, but the bug is even more apparent after some of my |
| 23269 | changes. |
| 23270 | |
| 23271 | (KJS::::staticFunctionGetter): Replaced use of getDirect with call to |
| 23272 | getOwnPropertySlot. Global declarations are no longer stored in the |
| 23273 | property map, so a call to getDirect is insufficient for finding |
| 23274 | override properties. |
| 23275 | |
| 23276 | * API/testapi.c: |
| 23277 | * API/testapi.js: Added test for the getDirect change mentioned above. |
| 23278 | |
| 23279 | * kjs/ExecState.cpp: |
| 23280 | * kjs/ExecState.h: Dialed back the optimization to store a direct |
| 23281 | pointer to the localStorage buffer. One ExecState can grow the global |
| 23282 | object's localStorage without another ExecState's knowledge, so |
| 23283 | ExecState can't store a direct pointer to the localStorage buffer |
| 23284 | unless/until we invent a way to update all the relevant ExecStates. |
| 23285 | |
| 23286 | * kjs/JSGlobalObject.cpp: Inserted the symbol table into get and put |
| 23287 | operations. |
| 23288 | (KJS::JSGlobalObject::reset): Reset the symbol table and local storage, |
| 23289 | too. Also, clear the property map here, removing the need for a |
| 23290 | separate call. |
| 23291 | |
| 23292 | * kjs/JSVariableObject.cpp: |
| 23293 | * kjs/JSVariableObject.h: Added support for saving localStorage and the |
| 23294 | symbol table to the back/forward cache, and restoring them. |
| 23295 | |
| 23296 | * kjs/function.cpp: |
| 23297 | (KJS::GlobalFuncImp::callAsFunction): Renamed progNode to evalNode |
| 23298 | because it's an EvalNode, not a ProgramNode. |
| 23299 | |
| 23300 | * kjs/lookup.h: |
| 23301 | (KJS::cacheGlobalObject): Replaced put with faster putDirect, since |
| 23302 | that's how the rest of lookup.h works. putDirect is safe here because |
| 23303 | cacheGlobalObject is only used for objects whose names are not valid |
| 23304 | identifiers. |
| 23305 | |
| 23306 | * kjs/nodes.cpp: The good stuff! |
| 23307 | |
| 23308 | (KJS::EvalNode::processDeclarations): Replaced hasProperty with |
| 23309 | the new hasOwnProperty, which is slightly faster. |
| 23310 | |
| 23311 | * kjs/object.h: Nixed clearProperties because clear() does this job now. |
| 23312 | |
| 23313 | * kjs/property_map.cpp: |
| 23314 | * kjs/property_map.h: More back/forward cache support. |
| 23315 | |
| 23316 | * wtf/Vector.h: |
| 23317 | (WTF::::grow): Added fast non-branching grow function. I used it in |
| 23318 | an earlier version of this patch, even though it's not used anymore. |
| 23319 | |
| 23320 | 2007-12-09 Mark Rowe <mrowe@apple.com> |
| 23321 | |
| 23322 | Reviewed by Oliver Hunt. |
| 23323 | |
| 23324 | Build fix for non-Mac platforms. Move NodeInfo into its own header so that the YYTYPE |
| 23325 | declaration in grammar.h is able to declare members of that type. |
| 23326 | |
| 23327 | * kjs/NodeInfo.h: Added. |
| 23328 | (KJS::createNodeInfo): |
| 23329 | (KJS::mergeDeclarationLists): |
| 23330 | (KJS::appendToVarDeclarationList): |
| 23331 | * kjs/grammar.y: |
| 23332 | * kjs/lexer.cpp: |
| 23333 | |
| 23334 | 2007-12-19 Oliver Hunt <oliver@apple.com> |
| 23335 | |
| 23336 | Make appendToVarDeclarationList static |
| 23337 | |
| 23338 | RS=Weinig. |
| 23339 | |
| 23340 | * kjs/grammar.y: |
| 23341 | |
| 23342 | 2007-12-18 Oliver Hunt <oliver@apple.com> |
| 23343 | |
| 23344 | Remove dead code due to removal of post-parse declaration discovery. |
| 23345 | |
| 23346 | RS=Geoff. |
| 23347 | |
| 23348 | Due to the removal of the declaration discovery pass after parsing we |
| 23349 | no longer need any of the logic used for that discovery. |
| 23350 | |
| 23351 | * kjs/nodes.cpp: |
| 23352 | (KJS::Node::Node): |
| 23353 | (KJS::VarDeclNode::VarDeclNode): |
| 23354 | (KJS::BlockNode::BlockNode): |
| 23355 | (KJS::ForInNode::ForInNode): |
| 23356 | (KJS::CaseBlockNode::CaseBlockNode): |
| 23357 | * kjs/nodes.h: |
| 23358 | (KJS::VarStatementNode::): |
| 23359 | (KJS::IfNode::): |
| 23360 | (KJS::DoWhileNode::): |
| 23361 | (KJS::WhileNode::): |
| 23362 | (KJS::WithNode::): |
| 23363 | (KJS::LabelNode::): |
| 23364 | (KJS::TryNode::): |
| 23365 | (KJS::FuncDeclNode::): |
| 23366 | (KJS::CaseClauseNode::): |
| 23367 | (KJS::ClauseListNode::): |
| 23368 | (KJS::SwitchNode::): |
| 23369 | |
| 23370 | 2007-12-18 Oliver Hunt <oliver@apple.com> |
| 23371 | |
| 23372 | Replace post-parse pass to find declarations with logic in the parser itself |
| 23373 | |
| 23374 | Reviewed by Geoff. |
| 23375 | |
| 23376 | Instead of finding declarations in a pass following the initial parsing of |
| 23377 | a program, we incorporate the logic directly into the parser. This lays |
| 23378 | the groundwork for further optimisations (such as improving performance in |
| 23379 | declaration expressions -- var x = y; -- to match that of standard assignment) |
| 23380 | in addition to providing a 0.4% performance improvement in SunSpider. |
| 23381 | |
| 23382 | * JavaScriptCore.exp: |
| 23383 | * kjs/Parser.cpp: |
| 23384 | (KJS::Parser::parse): |
| 23385 | * kjs/Parser.h: |
| 23386 | (KJS::Parser::didFinishParsing): |
| 23387 | (KJS::Parser::parse): |
| 23388 | * kjs/grammar.y: |
| 23389 | * kjs/nodes.cpp: |
| 23390 | (KJS::ParserTracked::ParserTracked): |
| 23391 | (KJS::ParserTracked::~ParserTracked): |
| 23392 | (KJS::ParserTracked::ref): |
| 23393 | (KJS::ParserTracked::deref): |
| 23394 | (KJS::ParserTracked::refcount): |
| 23395 | (KJS::ParserTracked::clearNewTrackedObjects): |
| 23396 | (KJS::Node::Node): |
| 23397 | (KJS::ScopeNode::ScopeNode): |
| 23398 | (KJS::ProgramNode::ProgramNode): |
| 23399 | (KJS::EvalNode::EvalNode): |
| 23400 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 23401 | (KJS::FunctionBodyNode::initializeSymbolTable): |
| 23402 | (KJS::FunctionBodyNode::processDeclarations): |
| 23403 | * kjs/nodes.h: |
| 23404 | (KJS::ParserTracked::): |
| 23405 | (KJS::Node::): |
| 23406 | (KJS::ScopeNode::): |
| 23407 | |
| 23408 | 2007-12-18 Xan Lopez <xan@gnome.org> |
| 23409 | |
| 23410 | Reviewed by Geoff. |
| 23411 | |
| 23412 | Fix http://bugs.webkit.org/show_bug.cgi?id=14521 |
| 23413 | Bug 14521: JavaScriptCore fails to build on Linux/PPC gcc 4.1.2 |
| 23414 | |
| 23415 | * wtf/TCSpinLock.h: |
| 23416 | (TCMalloc_SpinLock::Unlock): |
| 23417 | |
| 23418 | Use less strict memory operand constraint on inline asm generation. |
| 23419 | PLATFORM(DARWIN) left unpatched due to Apple's GCC bug. |
| 23420 | |
| 23421 | Patch by David Kilzer <ddkilzer@webkit.org> |
| 23422 | |
| 23423 | 2007-12-18 Mark Rowe <mrowe@apple.com> |
| 23424 | |
| 23425 | Rubber-stamped by Maciej Stachowiak. |
| 23426 | |
| 23427 | Remove outdated and non-functioning project files for the Apollo port. |
| 23428 | |
| 23429 | * JavaScriptCore.apolloproj: Removed. |
| 23430 | |
| 23431 | 2007-12-18 Darin Adler <darin@apple.com> |
| 23432 | |
| 23433 | - fix Windows build |
| 23434 | |
| 23435 | * pcre/pcre_exec.cpp: |
| 23436 | (jsRegExpExecute): Change back from false/true to 0/1 -- I probably should not have |
| 23437 | deleted MATCH_MATCH and MATCH_NOMATCH, but I'm going to leave them out. |
| 23438 | |
| 23439 | 2007-12-18 Darin Adler <darin@apple.com> |
| 23440 | |
| 23441 | Reviewed by Geoff. |
| 23442 | |
| 23443 | - fix http://bugs.webkit.org/show_bug.cgi?id=16458 |
| 23444 | REGRESSION (r28164): regular expressions can now hang due to lack of a match limit |
| 23445 | <rdar://problem/5636067> |
| 23446 | |
| 23447 | Test: fast/regex/slow.html |
| 23448 | |
| 23449 | Slows down SunSpider a bit (about 1.01x); filed a bug to follow up on that: |
| 23450 | http://bugs.webkit.org/show_bug.cgi?id=16503 |
| 23451 | |
| 23452 | * pcre/pcre.h: Changed name of error code to not specifically mention "recursion". |
| 23453 | * pcre/pcre_exec.cpp: |
| 23454 | (match): Replaced the depth limit, MATCH_RECURSION_LIMIT, with a total match looping |
| 23455 | limit, matchLimit. Also eliminated the constants for MATCH_MATCH and MATCH_NOMATCH, |
| 23456 | since they are just true and false (1 and 0). |
| 23457 | (jsRegExpExecute): More of the MATCH_MATCH change. |
| 23458 | |
| 23459 | 2007-12-17 Darin Adler <darin@apple.com> |
| 23460 | |
| 23461 | - speculative build fix for non-gcc platforms |
| 23462 | |
| 23463 | * pcre/pcre_exec.cpp: (match): Remove unused cases from return switch. |
| 23464 | |
| 23465 | 2007-12-16 Mark Rowe <mrowe@apple.com> |
| 23466 | |
| 23467 | Speculative build fix for non-Mac platforms. |
| 23468 | |
| 23469 | * pcre/pcre_compile.cpp: Include string.h for memset, memmove, etc. |
| 23470 | |
| 23471 | 2007-12-16 Darin Adler <darin@apple.com> |
| 23472 | |
| 23473 | Reviewed by Maciej. |
| 23474 | |
| 23475 | - http://bugs.webkit.org/show_bug.cgi?id=16438 |
| 23476 | - removed some more unused code |
| 23477 | - changed quite a few more names to WebKit-style |
| 23478 | - moved more things out of pcre_internal.h |
| 23479 | - changed some indentation to WebKit-style |
| 23480 | - improved design of the functions for reading and writing |
| 23481 | 2-byte values from the opcode stream (in pcre_internal.h) |
| 23482 | |
| 23483 | * pcre/dftables.cpp: |
| 23484 | (main): Added the kjs prefix a normal way in lieu of using macros. |
| 23485 | |
| 23486 | * pcre/pcre_compile.cpp: Moved some definitions here from pcre_internal.h. |
| 23487 | (errorText): Name changes, fewer typedefs. |
| 23488 | (checkEscape): Ditto. Changed uppercase conversion to use toASCIIUpper. |
| 23489 | (isCountedRepeat): Name change. |
| 23490 | (readRepeatCounts): Name change. |
| 23491 | (firstSignificantOpcode): Got rid of the use of OP_lengths, which is |
| 23492 | very lightly used here. Hard-coded the length of OP_BRANUMBER. |
| 23493 | (firstSignificantOpcodeSkippingAssertions): Ditto. Also changed to |
| 23494 | use the advanceToEndOfBracket function. |
| 23495 | (getOthercaseRange): Name changes. |
| 23496 | (encodeUTF8): Ditto. |
| 23497 | (compileBranch): Name changes. Removed unused after_manual_callout and |
| 23498 | the code to handle it. Removed code to handle OP_ONCE since we never |
| 23499 | emit this opcode. Changed to use advanceToEndOfBracket in more places. |
| 23500 | (compileBracket): Name changes. |
| 23501 | (branchIsAnchored): Removed code to handle OP_ONCE since we never emit |
| 23502 | this opcode. |
| 23503 | (bracketIsAnchored): Name changes. |
| 23504 | (branchNeedsLineStart): More fo the same. |
| 23505 | (bracketNeedsLineStart): Ditto. |
| 23506 | (branchFindFirstAssertedCharacter): Removed OP_ONCE code. |
| 23507 | (bracketFindFirstAssertedCharacter): More of the same. |
| 23508 | (calculateCompiledPatternLengthAndFlags): Ditto. |
| 23509 | (returnError): Name changes. |
| 23510 | (jsRegExpCompile): Ditto. |
| 23511 | |
| 23512 | * pcre/pcre_exec.cpp: Moved some definitions here from pcre_internal.h. |
| 23513 | (matchRef): Updated names. |
| 23514 | Improved macros to use the do { } while(0) idiom so they expand to single |
| 23515 | statements rather than to blocks or multiple statements. And refeactored |
| 23516 | the recursive match macros. |
| 23517 | (MatchStack::pushNewFrame): Name changes. |
| 23518 | (getUTF8CharAndIncrementLength): Name changes. |
| 23519 | (match): Name changes. Removed the ONCE opcode. |
| 23520 | (jsRegExpExecute): Name changes. |
| 23521 | |
| 23522 | * pcre/pcre_internal.h: Removed quite a few unneeded includes. Rewrote |
| 23523 | quite a few comments. Removed the macros that add kjs prefixes to the |
| 23524 | functions with external linkage; instead renamed the functions. Removed |
| 23525 | the unneeded typedefs pcre_uint16, pcre_uint32, and uschar. Removed the |
| 23526 | dead and not-all-working code for LINK_SIZE values other than 2, although |
| 23527 | we aim to keep the abstraction working. Removed the OP_LENGTHS macro. |
| 23528 | (put2ByteValue): Replaces put2ByteOpcodeValueAtOffset. |
| 23529 | (get2ByteValue): Replaces get2ByteOpcodeValueAtOffset. |
| 23530 | (put2ByteValueAndAdvance): Replaces put2ByteOpcodeValueAtOffsetAndAdvance. |
| 23531 | (putLinkValueAllowZero): Replaces putOpcodeValueAtOffset; doesn't do the |
| 23532 | addition, since a comma is really no better than a plus sign. Added an |
| 23533 | assertion to catch out of range values and changed the parameter type to |
| 23534 | int rather than unsigned. |
| 23535 | (getLinkValueAllowZero): Replaces getOpcodeValueAtOffset. |
| 23536 | (putLinkValue): New function that most former callers of the |
| 23537 | putOpcodeValueAtOffset function can use; asserts the value that is |
| 23538 | being stored is non-zero and then calls putLinkValueAllowZero. |
| 23539 | (getLinkValue): Ditto. |
| 23540 | (putLinkValueAndAdvance): Replaces putOpcodeValueAtOffsetAndAdvance. No |
| 23541 | caller was using an offset, which makes sense given the advancing behavior. |
| 23542 | (putLinkValueAllowZeroAndAdvance): Ditto. |
| 23543 | (isBracketOpcode): Added. For use in an assertion. |
| 23544 | (advanceToEndOfBracket): Renamed from moveOpcodePtrPastAnyAlternateBranches, |
| 23545 | and removed comments about how it's not well designed. This function takes |
| 23546 | a pointer to the beginning of a bracket and advances to the end of the |
| 23547 | bracket. |
| 23548 | |
| 23549 | * pcre/pcre_tables.cpp: Updated names. |
| 23550 | * pcre/pcre_ucp_searchfuncs.cpp: |
| 23551 | (kjs_pcre_ucp_othercase): Ditto. |
| 23552 | * pcre/pcre_xclass.cpp: |
| 23553 | (getUTF8CharAndAdvancePointer): Ditto. |
| 23554 | (kjs_pcre_xclass): Ditto. |
| 23555 | * pcre/ucpinternal.h: Ditto. |
| 23556 | |
| 23557 | * wtf/ASCIICType.h: |
| 23558 | (WTF::isASCIIAlpha): Added an int overload, like the one we already have for |
| 23559 | isASCIIDigit. |
| 23560 | (WTF::isASCIIAlphanumeric): Ditto. |
| 23561 | (WTF::isASCIIHexDigit): Ditto. |
| 23562 | (WTF::isASCIILower): Ditto. |
| 23563 | (WTF::isASCIISpace): Ditto. |
| 23564 | (WTF::toASCIILower): Ditto. |
| 23565 | (WTF::toASCIIUpper): Ditto. |
| 23566 | |
| 23567 | 2007-12-16 Darin Adler <darin@apple.com> |
| 23568 | |
| 23569 | Reviewed by Maciej. |
| 23570 | |
| 23571 | - fix http://bugs.webkit.org/show_bug.cgi?id=16459 |
| 23572 | REGRESSION: assertion failure with regexp with \B in a case-ignoring character range |
| 23573 | <rdar://problem/5646361> |
| 23574 | |
| 23575 | The problem was that \B was not handled properly in character classes. |
| 23576 | |
| 23577 | Test: fast/js/regexp-overflow.html |
| 23578 | |
| 23579 | * pcre/pcre_compile.cpp: |
| 23580 | (check_escape): Added handling of ESC_b and ESC_B in character classes here. |
| 23581 | Allows us to get rid of the handling of \b in character classes from all the |
| 23582 | call sites that handle it separately and to handle \B properly as well. |
| 23583 | (compileBranch): Remove the ESC_b handling, since it's not needed any more. |
| 23584 | (calculateCompiledPatternLengthAndFlags): Ditto. |
| 23585 | |
| 23586 | 2007-12-16 Mark Rowe <mrowe@apple.com> |
| 23587 | |
| 23588 | Reviewed by Maciej Stachowiak. |
| 23589 | |
| 23590 | Fix http://bugs.webkit.org/show_bug.cgi?id=16448 |
| 23591 | Bug 16448: [GTK] Celtic Kane JavaScript performance on Array test is slow relative to Mac |
| 23592 | |
| 23593 | * kjs/array_instance.cpp: |
| 23594 | (KJS::compareByStringPairForQSort): |
| 23595 | (KJS::ArrayInstance::sort): Convert JSValue's to strings once up front and then sort the |
| 23596 | results. This avoids calling toString twice per comparison, but requires a temporary buffer |
| 23597 | so we only use this approach in cases where the array being sorted is not too large. |
| 23598 | |
| 23599 | 2007-12-16 Geoffrey Garen <ggaren@apple.com> |
| 23600 | |
| 23601 | Reviewed by Darin Adler and Maciej Stachowiak. |
| 23602 | |
| 23603 | More refactoring to support global variable optimization. |
| 23604 | |
| 23605 | Changed SymbolTable to use RefPtr<UString::Rep> as its key instead of |
| 23606 | UString::Rep*. With globals, the symbol table can outlast the |
| 23607 | declaration node for any given symbol, so the symbol table needs to ref |
| 23608 | its symbol names. |
| 23609 | |
| 23610 | In support, specialized HashMaps with RefPtr keys to allow lookup |
| 23611 | via raw pointer, avoiding refcount churn. |
| 23612 | |
| 23613 | SunSpider reports a .6% speedup (prolly just noise). |
| 23614 | |
| 23615 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added new file: wtf/RefPtrHashMap.h |
| 23616 | * JavaScriptCore.xcodeproj/project.pbxproj: ditto |
| 23617 | |
| 23618 | * kjs/JSVariableObject.cpp: |
| 23619 | (KJS::JSVariableObject::getPropertyNames): Symbol table keys are RefPtrs now. |
| 23620 | |
| 23621 | * kjs/SymbolTable.h: Modified key traits to match RefPtr. Added a |
| 23622 | static Rep* for null, which helps compute the deletedValue() trait. |
| 23623 | |
| 23624 | * wtf/HashMap.h: #include the RefPtr specialization so everyone can use it. |
| 23625 | |
| 23626 | * wtf/RefPtrHashMap.h: Copied from wtf/HashMap.h. Added overloaded versions |
| 23627 | of find(), contains(), get(), set(), add(), remove(), and take() that take |
| 23628 | raw pointers as keys. |
| 23629 | |
| 23630 | 2007-12-16 Alexey Proskuryakov <ap@webkit.org> |
| 23631 | |
| 23632 | Reviewed by Darin. |
| 23633 | |
| 23634 | http://bugs.webkit.org/show_bug.cgi?id=16162 |
| 23635 | Problems with float parsing on Linux (locale-dependent parsing was used). |
| 23636 | |
| 23637 | * kjs/dtoa.cpp: Removed USE_LOCALE to reduce future confusion. |
| 23638 | * kjs/lexer.cpp: (KJS::Lexer::lex): Parse with kjs_strtod, not the system one. |
| 23639 | |
| 23640 | 2007-12-14 Alp Toker <alp@atoker.com> |
| 23641 | |
| 23642 | Reviewed by Mark Rowe. |
| 23643 | |
| 23644 | Enable the AllInOneFile.cpp optimization for the GTK+ port. |
| 23645 | |
| 23646 | * JavaScriptCore.pri: |
| 23647 | |
| 23648 | 2007-12-14 Mark Rowe <mrowe@apple.com> |
| 23649 | |
| 23650 | Unreviewed. Remove commented out fprintf's that were for debugging purposes only. |
| 23651 | |
| 23652 | * wtf/FastMalloc.cpp: |
| 23653 | (WTF::TCMalloc_PageHeap::IncrementalScavenge): |
| 23654 | |
| 23655 | 2007-12-14 Mark Rowe <mrowe@apple.com> |
| 23656 | |
| 23657 | Reviewed by Maciej Stachowiak. |
| 23658 | |
| 23659 | Don't use the MADV_DONTNEED code path for now as it has no effect on Mac OS X and is |
| 23660 | currently untested on other platforms. |
| 23661 | |
| 23662 | * wtf/TCSystemAlloc.cpp: |
| 23663 | (TCMalloc_SystemRelease): Return after releasing memory rather than potentially falling |
| 23664 | through into another mechanism if multiple are supported. |
| 23665 | |
| 23666 | 2007-12-14 Alp Toker <alp@atoker.com> |
| 23667 | |
| 23668 | Build fix for GTK+/Qt and ports that don't use AllInOneFile.cpp. |
| 23669 | |
| 23670 | Include UnusedParam.h. |
| 23671 | |
| 23672 | * wtf/TCSystemAlloc.cpp: |
| 23673 | |
| 23674 | 2007-12-14 Oliver Hunt <oliver@apple.com> |
| 23675 | |
| 23676 | Reviewed by Stephanie. |
| 23677 | |
| 23678 | Fix build on windows |
| 23679 | |
| 23680 | * wtf/FastMalloc.cpp: |
| 23681 | (WTF::TCMalloc_PageHeap::IncrementalScavenge): |
| 23682 | |
| 23683 | 2007-12-14 Dan Bernstein <mitz@apple.com> |
| 23684 | |
| 23685 | - try again to fix the Windows build |
| 23686 | |
| 23687 | * wtf/TCSystemAlloc.cpp: |
| 23688 | (TCMalloc_SystemRelease): |
| 23689 | |
| 23690 | 2007-12-14 Dan Bernstein <mitz@apple.com> |
| 23691 | |
| 23692 | - try to fix the Windows build |
| 23693 | |
| 23694 | * wtf/TCSystemAlloc.cpp: |
| 23695 | (TCMalloc_SystemRelease): |
| 23696 | |
| 23697 | 2007-12-14 Mark Rowe <mrowe@apple.com> |
| 23698 | |
| 23699 | Reviewed by Maciej and Oliver. |
| 23700 | |
| 23701 | Add final changes to make TCMalloc release memory to the system. |
| 23702 | This results in a 0.4% regression against ToT, but this is offset |
| 23703 | against the gains made by the original TCMalloc r38 merge - in fact |
| 23704 | we retain around 0.3-0.4% progression overall. |
| 23705 | |
| 23706 | * wtf/FastMalloc.cpp: |
| 23707 | (WTF::InitSizeClasses): |
| 23708 | (WTF::TCMalloc_PageHeap::IncrementalScavenge): |
| 23709 | * wtf/TCSystemAlloc.cpp: |
| 23710 | (TCMalloc_SystemRelease): |
| 23711 | |
| 23712 | 2007-12-14 Darin Adler <darin@apple.com> |
| 23713 | |
| 23714 | Reviewed by Sam. |
| 23715 | |
| 23716 | - removed unnecessary includes of "Vector.h" |
| 23717 | |
| 23718 | * wtf/HashMap.h: |
| 23719 | (WTF::copyKeysToVector): Make the type of the vector be a template parameter. |
| 23720 | This allows copying keys into a vector of a base class or one with an inline capacity. |
| 23721 | (WTF::copyValuesToVector): Ditto. |
| 23722 | * wtf/HashSet.h: |
| 23723 | (WTF::copyToVector): Ditto. |
| 23724 | |
| 23725 | 2007-12-14 Anders Carlsson <andersca@apple.com> |
| 23726 | |
| 23727 | Reviewed by Darin and Geoff. |
| 23728 | |
| 23729 | <rdar://problem/5619295> |
| 23730 | REGRESSION: 303-304: Embedded YouTube video fails to render- JS errors (16150) (Flash 9) |
| 23731 | |
| 23732 | Get rid of unnecessary and incorrect security checks for plug-ins accessing JavaScript objects. |
| 23733 | |
| 23734 | The way this used to work was that each NPObject that wrapped a JSObject would have a root object |
| 23735 | corresponding to the frame object (used for managing the lifecycle) and an origin root object (used for |
| 23736 | doing security checks). |
| 23737 | |
| 23738 | This would prevent a plug-in from accessing a frame's window object if it's security origin was different |
| 23739 | (some parts of the window, such as the location object, can be accessed from frames with different security |
| 23740 | origins, and those checks are being done in WebCore). |
| 23741 | |
| 23742 | Also, if a plug-in were to access a window object of a frame that later went away, it could lead to that |
| 23743 | Window JSObject being garbage collected and the NPObject pointing to freed memory. |
| 23744 | |
| 23745 | How this works now is that there is no origin root object anymore, and all NPObject wrappers that are created |
| 23746 | for a plug-in will have the root object of the containing frame of that plug-in. |
| 23747 | |
| 23748 | * bindings/NP_jsobject.cpp: |
| 23749 | (jsDeallocate): |
| 23750 | Don't free the origin root object. |
| 23751 | |
| 23752 | (_NPN_CreateScriptObject): |
| 23753 | Remove the origin root object parameter. |
| 23754 | |
| 23755 | (_NPN_InvokeDefault): |
| 23756 | (_NPN_Invoke): |
| 23757 | (_NPN_Evaluate): |
| 23758 | (_NPN_GetProperty): |
| 23759 | (_NPN_SetProperty): |
| 23760 | (_NPN_RemoveProperty): |
| 23761 | (_NPN_HasProperty): |
| 23762 | (_NPN_HasMethod): |
| 23763 | (_NPN_Enumerate): |
| 23764 | Get rid of all security checks. |
| 23765 | |
| 23766 | * bindings/NP_jsobject.h: |
| 23767 | Remove originRootObject from the JavaScriptObject struct. |
| 23768 | |
| 23769 | * bindings/c/c_utility.cpp: |
| 23770 | (KJS::Bindings::convertValueToNPVariant): |
| 23771 | Always use the root object from the ExecState. |
| 23772 | |
| 23773 | 2007-12-13 Steve Falkenburg <sfalken@apple.com> |
| 23774 | |
| 23775 | Move source file generation into its own vcproj to fix build dependencies. |
| 23776 | |
| 23777 | Reviewed by Adam. |
| 23778 | |
| 23779 | * JavaScriptCore.vcproj/JavaScriptCore.sln: |
| 23780 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 23781 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Added. |
| 23782 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added. |
| 23783 | * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: |
| 23784 | |
| 23785 | 2007-12-13 Alp Toker <alp@atoker.com> |
| 23786 | |
| 23787 | http://bugs.webkit.org/show_bug.cgi?id=16406 |
| 23788 | [Gtk] JavaScriptCore needs -lpthread |
| 23789 | |
| 23790 | Build fix for Debian and any other platforms that don't implicitly |
| 23791 | link to pthread. |
| 23792 | |
| 23793 | Link to pthread on non-Windows platforms until this dependency is |
| 23794 | removed from JSC. |
| 23795 | |
| 23796 | 2007-12-11 Geoffrey Garen <ggaren@apple.com> |
| 23797 | |
| 23798 | Reviewed by Sam Weinig. |
| 23799 | |
| 23800 | Build fix: Note some variables that are used only for ASSERTs. |
| 23801 | |
| 23802 | * API/testapi.c: |
| 23803 | (Base_finalize): |
| 23804 | (globalObject_initialize): |
| 23805 | (testInitializeFinalize): |
| 23806 | |
| 23807 | 2007-12-11 Geoffrey Garen <ggaren@apple.com> |
| 23808 | |
| 23809 | Reviewed by Darin Adler. |
| 23810 | |
| 23811 | Fixed: All JS tests crash on Windows. |
| 23812 | |
| 23813 | NDEBUG wasn't defined when compiling testkjs in release builds, so the |
| 23814 | HashTable definition in HashTable.h included an extra data member. |
| 23815 | |
| 23816 | The solution was to add NDEBUG to the release testkjs configuration on |
| 23817 | Windows and Mac. |
| 23818 | |
| 23819 | For giggles, I also added other missing #defines to testkjs on Windows. |
| 23820 | |
| 23821 | * Configurations/Base.xcconfig: |
| 23822 | * Configurations/JavaScriptCore.xcconfig: |
| 23823 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: |
| 23824 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 23825 | * kjs/testkjs.cpp: |
| 23826 | (main): |
| 23827 | |
| 23828 | 2007-12-11 Geoffrey Garen <ggaren@apple.com> |
| 23829 | |
| 23830 | Reviewed by Darin Adler. |
| 23831 | |
| 23832 | Removed bogus ASSERT. |
| 23833 | |
| 23834 | ASSERT should only be used when we know that a code path will not be |
| 23835 | taken. This code path is taken often during the jsFunFuzz test. |
| 23836 | |
| 23837 | * pcre/pcre_exec.cpp: |
| 23838 | (jsRegExpExecute): |
| 23839 | |
| 23840 | 2007-12-11 Darin Adler <darin@apple.com> |
| 23841 | |
| 23842 | * wtf/unicode/qt4/UnicodeQt4.h: Try to fix Qt build by adding U16_IS_SINGLE. |
| 23843 | |
| 23844 | 2007-12-10 Darin Adler <darin@apple.com> |
| 23845 | |
| 23846 | Reviewed by Sam Weinig. |
| 23847 | |
| 23848 | - fix http://bugs.webkit.org/show_bug.cgi?id=16379 |
| 23849 | REGRESSION(r28525): Failures in http/tests/xmlhttprequest/response-encoding.html and |
| 23850 | fast/dom/xmlhttprequest-html-response-encoding.html |
| 23851 | and <rdar://problem/5640230> REGRESSION (306A4-ToT): Access violation in PCRE function |
| 23852 | find_firstassertedchar |
| 23853 | |
| 23854 | Test: fast/js/regexp-find-first-asserted.html |
| 23855 | |
| 23856 | * pcre/pcre_compile.cpp: |
| 23857 | (compileBracket): Take out unnecessary initialization of out parameters. |
| 23858 | (branchFindFirstAssertedCharacter): Added. Broke out the half of the function that handles |
| 23859 | a branch. |
| 23860 | (bracketFindFirstAssertedCharacter): Renamed from find_firstassertedchar. Also removed the |
| 23861 | options parameter -- the caller can handle the options. |
| 23862 | (jsRegExpCompile): Changed call site to call the appropriate bracket or branch version of |
| 23863 | the find_firstassertedchar function. Also put the REQ_IGNORE_CASE code here instead of |
| 23864 | passing in the options. |
| 23865 | |
| 23866 | 2007-12-10 Geoffrey Garen <ggaren@apple.com> |
| 23867 | |
| 23868 | Reviewed by Sam Weinig. |
| 23869 | |
| 23870 | Split this: |
| 23871 | |
| 23872 | FunctionBodyNode |
| 23873 | ^ |
| 23874 | | |
| 23875 | ProgramNode |
| 23876 | |
| 23877 | into this: |
| 23878 | |
| 23879 | ScopeNode |
| 23880 | ^ ^ ^ |
| 23881 | | | | |
| 23882 | FunctionBodyNode ProgramNode EvalNode |
| 23883 | |
| 23884 | in preparation for specializing each class more while optimizing global |
| 23885 | variable access. |
| 23886 | |
| 23887 | Also removed some cruft from the FunctionBodyNode interface to simplify |
| 23888 | things. |
| 23889 | |
| 23890 | SunSpider says this patch is a .8% speedup, which seems reasonable, |
| 23891 | since it eliminates a few branches and adds KJS_FAST_CALL in a few |
| 23892 | places. |
| 23893 | |
| 23894 | Layout tests and JS tests pass. Also, this baby builds on Windows! (Qt |
| 23895 | mileage may vary...) |
| 23896 | |
| 23897 | 2007-12-10 Geoffrey Garen <ggaren@apple.com> |
| 23898 | |
| 23899 | RS by Mark Rowe. |
| 23900 | |
| 23901 | Mac build fix: added some exported symbols, now that Parser::parse is |
| 23902 | defined in the header. |
| 23903 | |
| 23904 | * JavaScriptCore.exp: |
| 23905 | |
| 23906 | 2007-12-10 Sam Weinig <sam@webkit.org> |
| 23907 | |
| 23908 | Build fix. |
| 23909 | |
| 23910 | Template methods need to be in the header. |
| 23911 | |
| 23912 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 23913 | * kjs/Parser.cpp: |
| 23914 | * kjs/Parser.h: |
| 23915 | (KJS::Parser::parse): |
| 23916 | |
| 23917 | 2007-12-10 Geoffrey Garen <ggaren@apple.com> |
| 23918 | |
| 23919 | Reviewed by Sam Weinig. |
| 23920 | |
| 23921 | Merged different implementations of Parser::parse into a single, |
| 23922 | templatized implementation, in preparation for adding yet another |
| 23923 | implementation for "eval" code. |
| 23924 | |
| 23925 | JS and layout tests pass. |
| 23926 | |
| 23927 | 2007-12-10 Timothy Hatcher <timothy@apple.com> |
| 23928 | |
| 23929 | Reviewed by Mark Rowe |
| 23930 | |
| 23931 | <rdar://problem/5639463> Bundle versions on Tiger should be 4523.x not 523.x |
| 23932 | |
| 23933 | * Configurations/Version.xcconfig: Some Tiger versions of Xcode don't set MAC_OS_X_VERSION_MAJOR, |
| 23934 | so assume Tiger and use a 4 for the SYSTEM_VERSION_PREFIX. |
| 23935 | |
| 23936 | 2007-12-10 Mark Rowe <mrowe@apple.com> |
| 23937 | |
| 23938 | Tiger build fix. |
| 23939 | |
| 23940 | * kjs/grammar.y: Use @1 and @0 in place of @$ where Tiger's bison chokes. |
| 23941 | |
| 23942 | 2007-12-10 Darin Adler <darin@apple.com> |
| 23943 | |
| 23944 | Reviewed by Mark Rowe. |
| 23945 | |
| 23946 | - fix http://bugs.webkit.org/show_bug.cgi?id=16375 |
| 23947 | REGRESSION: Safari crashes on quit |
| 23948 | |
| 23949 | Probably a debug-only issue. |
| 23950 | |
| 23951 | * kjs/Parser.cpp: |
| 23952 | (KJS::parser): Create the parser and never destroy it by using a pointer instead |
| 23953 | of a global object. |
| 23954 | |
| 23955 | 2007-12-09 Darin Adler <darin@apple.com> |
| 23956 | |
| 23957 | Reviewed by Sam Weinig. |
| 23958 | |
| 23959 | - fix http://bugs.webkit.org/show_bug.cgi?id=16369 |
| 23960 | REGRESSION (r28525): regular expression tests failing due to bad firstByte optimization |
| 23961 | |
| 23962 | * pcre/pcre_compile.cpp: Changed some names to use interCaps intead of under_scores. |
| 23963 | (branchIsAnchored): Broke is_anchored into two separate functions; this one works on a |
| 23964 | branch and the other on an anchor. The old function would only work on a bracket. |
| 23965 | Also removed unneeded parameters; the anchored check does not require the bracket |
| 23966 | map or the options any more because we have a reduced set of features. |
| 23967 | (bracketIsAnchored): Ditto. |
| 23968 | (branchNeedsLineStart): Broke canApplyFirstCharOptimization into two functions and gave |
| 23969 | both a better name. This is the function that was returning the wrong value. The failure |
| 23970 | was beacuse the old function would only work on a bracket. |
| 23971 | (bracketNeedsLineStart): Ditto. |
| 23972 | (jsRegExpCompile): Changed to call the appropriate branch or bracket flavor of the |
| 23973 | functions based on whether we compiled an outer bracket. Also removed inaccurate comments |
| 23974 | and unneeded parameters. |
| 23975 | |
| 23976 | - other small changes |
| 23977 | |
| 23978 | * pcre/pcre.h: Renumbered error codes, in a logical order. First, normal failure, then |
| 23979 | the recursion limit, then running out of memory, and finally an unexpected internal error. |
| 23980 | |
| 23981 | * pcre/pcre_exec.cpp: Fixed indentation. |
| 23982 | (jsRegExpExecute): Corrected an inaccurate comment. |
| 23983 | |
| 23984 | 2007-12-09 Darin Adler <darin@apple.com> |
| 23985 | |
| 23986 | Reviewed by Maciej. |
| 23987 | |
| 23988 | - fix http://bugs.webkit.org/show_bug.cgi?id=16370 |
| 23989 | REGRESSION (r28540): source URL and line number no longer set for outer function/programs |
| 23990 | |
| 23991 | Test: fast/js/exception-linenums-in-html-1.html |
| 23992 | Test: fast/js/exception-linenums-in-html-2.html |
| 23993 | Test: fast/js/exception-linenums.html |
| 23994 | |
| 23995 | By the time the ProgramNode was constructed, the source URL was empty. |
| 23996 | |
| 23997 | * kjs/Parser.cpp: |
| 23998 | (KJS::Parser::parseProgram): Added code to set and clear m_sourceURL, which is now |
| 23999 | handled here instead of in the lexer; it needs to still be set when we create the |
| 24000 | program node. Call setLoc to set the first and last line number. |
| 24001 | (KJS::Parser::parseFunctionBody): Ditto, but for the body. |
| 24002 | (KJS::Parser::parse): Removed the sourceURL argument. |
| 24003 | |
| 24004 | * kjs/Parser.h: Added sourceURL(), m_sourceURL, and m_lastLine. Added a lastLine |
| 24005 | parameter to didFinishParsing, since the bison grammar knows the last line number |
| 24006 | and we otherwise do not know it. Removed the sourceURL parameter from parse, since |
| 24007 | that's now handled at a higher level. |
| 24008 | |
| 24009 | * kjs/grammar.y: Pass the last line number to didFinishParsing. |
| 24010 | |
| 24011 | * kjs/lexer.cpp: |
| 24012 | (KJS::Lexer::setCode): Removed the sourceURL argument and the code to set m_sourceURL. |
| 24013 | (KJS::Lexer::clear): Ditto. |
| 24014 | * kjs/lexer.h: More of the same. |
| 24015 | |
| 24016 | * kjs/nodes.cpp: |
| 24017 | (KJS::FunctionBodyNode::FunctionBodyNode): Get the source URL from the parser rather |
| 24018 | than from the lexer. Removed unneeded call to setLoc, since the line numbers already |
| 24019 | both default to -1. |
| 24020 | |
| 24021 | 2007-12-08 Oliver Hunt <oliver@apple.com> |
| 24022 | |
| 24023 | Reviewed by Sam W. |
| 24024 | |
| 24025 | Split the ENABLE_SVG_EXPERIMENTAL_FEATURES flag into separate flags. |
| 24026 | |
| 24027 | Fixes <rdar://problem/5620249> Must disable SVG animation |
| 24028 | <rdar://problem/5612772> Disable SVG filters on Mac to match Windows behavior |
| 24029 | |
| 24030 | Minor config changes. |
| 24031 | |
| 24032 | * Configurations/JavaScriptCore.xcconfig: |
| 24033 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 24034 | |
| 24035 | 2007-12-07 Sam Weinig <sam@webkit.org> |
| 24036 | |
| 24037 | Reviewed by Darin. |
| 24038 | |
| 24039 | - Rename isSafeScript to allowsAccessFrom. |
| 24040 | |
| 24041 | * bindings/NP_jsobject.cpp: |
| 24042 | (_isSafeScript): |
| 24043 | * kjs/JSGlobalObject.h: |
| 24044 | (KJS::JSGlobalObject::allowsAccessFrom): Reverse caller/argument of allowsAccessFrom to match |
| 24045 | the new call. |
| 24046 | |
| 24047 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24048 | |
| 24049 | Reviewed by Sam Weinig. |
| 24050 | |
| 24051 | Refactored variable access optimization: Removed the assumption that |
| 24052 | the FunctionBodyNode holds the symbol table. |
| 24053 | |
| 24054 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24055 | |
| 24056 | Build fix: added #include. |
| 24057 | |
| 24058 | * kjs/nodes.cpp: |
| 24059 | |
| 24060 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24061 | |
| 24062 | Build fix: added #include. |
| 24063 | |
| 24064 | * kjs/interpreter.cpp: |
| 24065 | |
| 24066 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24067 | |
| 24068 | Build fix: added #include. |
| 24069 | |
| 24070 | * kjs/grammar.y: |
| 24071 | |
| 24072 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24073 | |
| 24074 | Build fix: added #include. |
| 24075 | |
| 24076 | * kjs/function_object.cpp: |
| 24077 | |
| 24078 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24079 | |
| 24080 | Reviewed by Sam Weinig. |
| 24081 | |
| 24082 | Fixed crash seen running layout tests. |
| 24083 | |
| 24084 | Reverted a change I made earlier today. Added a comment to try to |
| 24085 | discourage myself from making this mistake a third time. |
| 24086 | |
| 24087 | * kjs/function.cpp: |
| 24088 | (KJS::ActivationImp::mark): |
| 24089 | * kjs/function.h: |
| 24090 | (KJS::ActivationImp::ActivationImpData::ActivationImpData): |
| 24091 | |
| 24092 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24093 | |
| 24094 | Reviewed by Sam Weinig. |
| 24095 | |
| 24096 | Refactored parsing of global code: Removed the assumption that |
| 24097 | ProgramNode inherits from FunctionBodyNode from the parser. |
| 24098 | |
| 24099 | * kjs/Parser.cpp: |
| 24100 | (KJS::Parser::parseProgram): |
| 24101 | (KJS::Parser::parseFunctionBody): |
| 24102 | (KJS::Parser::parse): |
| 24103 | * kjs/Parser.h: |
| 24104 | (KJS::Parser::didFinishParsing): |
| 24105 | * kjs/function.cpp: |
| 24106 | * kjs/grammar.y: |
| 24107 | * kjs/nodes.h: |
| 24108 | |
| 24109 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24110 | |
| 24111 | Build fix: added JSVariableObject.cpp to the .pri file. |
| 24112 | |
| 24113 | * JavaScriptCore.pri: |
| 24114 | |
| 24115 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24116 | |
| 24117 | Build fix: added #include. |
| 24118 | |
| 24119 | * kjs/function.cpp: |
| 24120 | |
| 24121 | 2007-12-07 Steve Falkenburg <sfalken@apple.com> |
| 24122 | |
| 24123 | Re-named our B&I flag from BUILDBOT to PRODUCTION. |
| 24124 | |
| 24125 | Reviewed by Sam Weinig. |
| 24126 | |
| 24127 | * JavaScriptCore.vcproj/JavaScriptCore.make: |
| 24128 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: |
| 24129 | |
| 24130 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24131 | |
| 24132 | Build fix: removed stray name qualification. |
| 24133 | |
| 24134 | * kjs/function.h: |
| 24135 | (KJS::ActivationImp::ActivationImp): |
| 24136 | |
| 24137 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24138 | |
| 24139 | Build fix: moved functions with qualified names outside of class |
| 24140 | declaration. |
| 24141 | |
| 24142 | * kjs/JSVariableObject.h: |
| 24143 | (KJS::JSVariableObject::symbolTableGet): |
| 24144 | (KJS::JSVariableObject::symbolTablePut): |
| 24145 | |
| 24146 | 2007-12-07 Geoffrey Garen <ggaren@apple.com> |
| 24147 | |
| 24148 | Reviewed by Sam Weinig. |
| 24149 | |
| 24150 | Next step in refactoring JSGlobalObject: Added JSVariableObject class, |
| 24151 | and factored symbol-table-related code into it. (JSGlobalObject doesn't |
| 24152 | use the symbol table code yet, though.) |
| 24153 | |
| 24154 | Layout and JS tests, and testapi, pass. SunSpider reports no regression. |
| 24155 | |
| 24156 | 2007-12-07 Darin Adler <darin@apple.com> |
| 24157 | |
| 24158 | Reviewed by Geoff. |
| 24159 | |
| 24160 | - fix http://bugs.webkit.org/show_bug.cgi?id=16185 |
| 24161 | jsRegExpCompile should not add implicit non-capturing bracket |
| 24162 | |
| 24163 | While this does not make SunSpider faster, it will make many regular |
| 24164 | expressions a bit faster. |
| 24165 | |
| 24166 | * pcre/pcre_compile.cpp: Moved CompileData struct in here from the |
| 24167 | header since it's private to this file. |
| 24168 | (compile_branch): Updated for function name change. |
| 24169 | (compile_bracket): Renamed from compile_regex, since, for one thing, |
| 24170 | this does not compile an entire regular expression. |
| 24171 | (calculateCompiledPatternLengthAndFlags): Removed unused item_count |
| 24172 | local variable. Renamed CompileData to cd instead of compile_block |
| 24173 | to be consistent with other functions. Added code to set the |
| 24174 | needOuterBracket flag if there's at least one "|" at the outer level. |
| 24175 | (jsRegExpCompile): Renamed CompileData to cd instead of compile_block |
| 24176 | to be consistent with other functions. Removed unneeded "size" field |
| 24177 | from the compiled regular expression. If no outer bracket is needed, |
| 24178 | then use compile_branch to compile the regular expression. |
| 24179 | |
| 24180 | * pcre/pcre_internal.h: Removed the CompileData struct, which is now |
| 24181 | private to pcre_compile.cpp. Removed the size member from JSRegExp. |
| 24182 | |
| 24183 | 2007-12-06 Kevin Ollivier <kevino@theolliviers.com> |
| 24184 | |
| 24185 | MSVC7 build fix due to a compiler bug with placement new and/or |
| 24186 | templates and casting. |
| 24187 | |
| 24188 | Reviewed by Darin Adler. |
| 24189 | |
| 24190 | * wtf/Vector.h: |
| 24191 | (WTF::::append): |
| 24192 | |
| 24193 | 2007-12-06 Darin Adler <darin@apple.com> |
| 24194 | |
| 24195 | Reviewed by Eric Seidel. |
| 24196 | |
| 24197 | - fix http://bugs.webkit.org/show_bug.cgi?id=16321 |
| 24198 | new RegExp("[\u0097]{4,6}", "gmy") crashes in DEBUG builds |
| 24199 | <rdar://problem/5632992> |
| 24200 | |
| 24201 | Test: fast/js/regexp-oveflow.html |
| 24202 | |
| 24203 | * pcre/pcre_compile.cpp: |
| 24204 | (calculateCompiledPatternLengthAndFlags): In the case where a single character |
| 24205 | character class is optimized to not use a character class at all, the preflight |
| 24206 | code was not setting the lastitemlength variable. |
| 24207 | |
| 24208 | 2007-12-05 Mark Rowe <mrowe@apple.com> |
| 24209 | |
| 24210 | Qt Windows build fix. Include the time-related headers in the correct place. |
| 24211 | |
| 24212 | * kjs/JSGlobalObject.cpp: |
| 24213 | * kjs/interpreter.cpp: |
| 24214 | |
| 24215 | 2007-12-05 Darin Adler <darin@apple.com> |
| 24216 | |
| 24217 | Not reviewed; just undoing a previous commit. |
| 24218 | |
| 24219 | - remove earlier incorrect fix for http://bugs.webkit.org/show_bug.cgi?id=16220 |
| 24220 | <rdar://problem/5625221> Crash opening www.news.com (CNet) |
| 24221 | |
| 24222 | The real bug was the backwards ?: in the compile function, which Geoff just |
| 24223 | fixed. Rolling out the incorrect earlier fix. |
| 24224 | |
| 24225 | * pcre/pcre_compile.cpp: (calculateCompiledPatternLengthAndFlags): Take out |
| 24226 | the unneeded preflight change. The regression test proves this is still working |
| 24227 | fine, so the bug remains fixed. |
| 24228 | |
| 24229 | 2007-12-01 Mark Rowe <mrowe@apple.com> |
| 24230 | |
| 24231 | Build fix. Include headers before trying to use the things that they declare. |
| 24232 | |
| 24233 | * kjs/JSImmediate.cpp: |
| 24234 | * kjs/nodes.cpp: |
| 24235 | * kjs/object.cpp: |
| 24236 | * kjs/object_object.cpp: |
| 24237 | * kjs/regexp_object.cpp: |
| 24238 | * kjs/string_object.cpp: |
| 24239 | |
| 24240 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24241 | |
| 24242 | Build fix: added some #includes. |
| 24243 | |
| 24244 | * kjs/JSImmediate.cpp: |
| 24245 | |
| 24246 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24247 | |
| 24248 | Build fix: added some #includes. |
| 24249 | |
| 24250 | * kjs/JSGlobalObject.cpp: |
| 24251 | * kjs/JSImmediate.cpp: |
| 24252 | |
| 24253 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24254 | |
| 24255 | Build fix: Fixed #include spelling. |
| 24256 | |
| 24257 | * kjs/debugger.cpp: |
| 24258 | |
| 24259 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24260 | |
| 24261 | Build fix: added #include. |
| 24262 | |
| 24263 | * kjs/debugger.cpp: |
| 24264 | |
| 24265 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24266 | |
| 24267 | Build fix: added a forward declaration. |
| 24268 | |
| 24269 | * kjs/debugger.h: |
| 24270 | |
| 24271 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24272 | |
| 24273 | Build fix: added an #include. |
| 24274 | |
| 24275 | * kjs/error_object.cpp: |
| 24276 | |
| 24277 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24278 | |
| 24279 | Build fix: added an #include. |
| 24280 | |
| 24281 | * kjs/bool_object.cpp: |
| 24282 | |
| 24283 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24284 | |
| 24285 | Reviewed by Darin Adler. |
| 24286 | |
| 24287 | Third step in refactoring JSGlobalObject: Moved data members and |
| 24288 | functions accessing data members from Interpreter to JSGlobalObject. |
| 24289 | Changed Interpreter member functions to static functions. |
| 24290 | |
| 24291 | This resolves a bug in global object bootstrapping, where the global |
| 24292 | ExecState could be used when uninitialized. |
| 24293 | |
| 24294 | This is a big change, but it's mostly code motion and renaming. |
| 24295 | |
| 24296 | Layout and JS tests, and testjsglue and testapi, pass. SunSpider reports |
| 24297 | a .7% regression, but Shark sees no difference related to this patch, |
| 24298 | and SunSpider reported a .7% speedup from an earlier step in this |
| 24299 | refactoring, so I think it's fair to call that a wash. |
| 24300 | |
| 24301 | 2007-12-05 Geoffrey Garen <ggaren@apple.com> |
| 24302 | |
| 24303 | Reviewed by Darin Adler. (Or vice versa.) |
| 24304 | |
| 24305 | Fixed ASSERT during run-javascriptcore-tests. (Darin just added the |
| 24306 | ASSERT, but the bug wasn't new.) |
| 24307 | |
| 24308 | * pcre/pcre_compile.cpp: |
| 24309 | (compile_branch): The ?: operator here was backwards, causing us to |
| 24310 | execute the loop too many times, adding stray KET opcodes to the |
| 24311 | compiled regular expression. |
| 24312 | |
| 24313 | 2007-12-05 Kevin McCullough <kmccullough@apple.com> |
| 24314 | |
| 24315 | Reviewed by Geoff. |
| 24316 | |
| 24317 | - Wait until local variable data is fully constructed before notifying the debugger of entering |
| 24318 | or leaving a call frame. |
| 24319 | |
| 24320 | * kjs/function.cpp: |
| 24321 | (KJS::FunctionImp::callAsFunction): |
| 24322 | * kjs/nodes.cpp: |
| 24323 | (KJS::FunctionBodyNode::execute): |
| 24324 | |
| 24325 | 2007-12-05 Mark Rowe <mrowe@apple.com> |
| 24326 | |
| 24327 | Reviewed by Oliver. |
| 24328 | |
| 24329 | Build fix for GCC 4.2. Cast via a union to avoid strict-aliasing issues. |
| 24330 | |
| 24331 | * wtf/FastMalloc.cpp: |
| 24332 | (WTF::): |
| 24333 | (WTF::getPageHeap): |
| 24334 | |
| 24335 | 2007-12-05 Mark Rowe <mrowe@apple.com> |
| 24336 | |
| 24337 | Reviewed by Darin. |
| 24338 | |
| 24339 | Fix testkjs in 64-bit. |
| 24340 | |
| 24341 | When built for 64-bit the TCMalloc spin lock uses pthread mutexes rather than a custom spin lock |
| 24342 | implemented in assembly. If we fail to initialize the pthread mutex, attempts to lock or unlock |
| 24343 | it will fail and trigger a call to abort. |
| 24344 | |
| 24345 | * wtf/FastMalloc.cpp: Initialize the spin lock so that we can later lock and unlock it. |
| 24346 | * wtf/TCSpinLock.h: Add an Init method to the optimised spin lock. |
| 24347 | |
| 24348 | 2007-12-04 Oliver Hunt <oliver@apple.com> |
| 24349 | |
| 24350 | Fix gtk build. |
| 24351 | |
| 24352 | * wtf/TCSystemAlloc.cpp: |
| 24353 | |
| 24354 | 2007-12-03 Oliver Hunt <oliver@apple.com> |
| 24355 | |
| 24356 | Reviewed by Mark Rowe and Geoff Garen. |
| 24357 | |
| 24358 | Merge TCMalloc r38 |
| 24359 | |
| 24360 | It also result in a performance progression between 0.5% and |
| 24361 | 0.9% depending on the test, however most if not all of this |
| 24362 | gain will be consumed by the overhead involved in the later |
| 24363 | change to release memory to the system. |
| 24364 | |
| 24365 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 24366 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 24367 | * wtf/FastMalloc.cpp: |
| 24368 | (WTF::KernelSupportsTLS): |
| 24369 | (WTF::CheckIfKernelSupportsTLS): |
| 24370 | (WTF::): |
| 24371 | (WTF::ClassIndex): |
| 24372 | (WTF::SLL_Next): |
| 24373 | (WTF::SLL_SetNext): |
| 24374 | (WTF::SLL_Push): |
| 24375 | (WTF::SLL_Pop): |
| 24376 | (WTF::SLL_PopRange): |
| 24377 | (WTF::SLL_PushRange): |
| 24378 | (WTF::SLL_Size): |
| 24379 | (WTF::SizeClass): |
| 24380 | (WTF::ByteSizeForClass): |
| 24381 | (WTF::NumMoveSize): |
| 24382 | (WTF::InitSizeClasses): |
| 24383 | (WTF::AllocationSize): |
| 24384 | (WTF::TCMalloc_PageHeap::GetSizeClassIfCached): |
| 24385 | (WTF::TCMalloc_PageHeap::CacheSizeClass): |
| 24386 | (WTF::TCMalloc_PageHeap::init): |
| 24387 | (WTF::TCMalloc_PageHeap::New): |
| 24388 | (WTF::TCMalloc_PageHeap::AllocLarge): |
| 24389 | (WTF::TCMalloc_PageHeap::Carve): |
| 24390 | (WTF::TCMalloc_PageHeap::Delete): |
| 24391 | (WTF::TCMalloc_PageHeap::IncrementalScavenge): |
| 24392 | (WTF::PagesToMB): |
| 24393 | (WTF::TCMalloc_PageHeap::Dump): |
| 24394 | (WTF::TCMalloc_PageHeap::GrowHeap): |
| 24395 | (WTF::TCMalloc_PageHeap::Check): |
| 24396 | (WTF::ReleaseFreeList): |
| 24397 | (WTF::TCMalloc_PageHeap::ReleaseFreePages): |
| 24398 | (WTF::TCMalloc_ThreadCache_FreeList::Push): |
| 24399 | (WTF::TCMalloc_ThreadCache_FreeList::PushRange): |
| 24400 | (WTF::TCMalloc_ThreadCache_FreeList::PopRange): |
| 24401 | (WTF::TCMalloc_ThreadCache_FreeList::Pop): |
| 24402 | (WTF::TCMalloc_Central_FreeList::length): |
| 24403 | (WTF::TCMalloc_Central_FreeList::tc_length): |
| 24404 | (WTF::TCMalloc_Central_FreeList::Init): |
| 24405 | (WTF::TCMalloc_Central_FreeList::ReleaseListToSpans): |
| 24406 | (WTF::TCMalloc_Central_FreeList::EvictRandomSizeClass): |
| 24407 | (WTF::TCMalloc_Central_FreeList::MakeCacheSpace): |
| 24408 | (WTF::TCMalloc_Central_FreeList::ShrinkCache): |
| 24409 | (WTF::TCMalloc_Central_FreeList::InsertRange): |
| 24410 | (WTF::TCMalloc_Central_FreeList::RemoveRange): |
| 24411 | (WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe): |
| 24412 | (WTF::TCMalloc_Central_FreeList::Populate): |
| 24413 | (WTF::TCMalloc_ThreadCache::Init): |
| 24414 | (WTF::TCMalloc_ThreadCache::Cleanup): |
| 24415 | (WTF::TCMalloc_ThreadCache::Allocate): |
| 24416 | (WTF::TCMalloc_ThreadCache::Deallocate): |
| 24417 | (WTF::TCMalloc_ThreadCache::FetchFromCentralCache): |
| 24418 | (WTF::TCMalloc_ThreadCache::ReleaseToCentralCache): |
| 24419 | (WTF::TCMalloc_ThreadCache::Scavenge): |
| 24420 | (WTF::TCMalloc_ThreadCache::PickNextSample): |
| 24421 | (WTF::TCMalloc_ThreadCache::NewHeap): |
| 24422 | (WTF::TCMalloc_ThreadCache::GetThreadHeap): |
| 24423 | (WTF::TCMalloc_ThreadCache::GetCache): |
| 24424 | (WTF::TCMalloc_ThreadCache::GetCacheIfPresent): |
| 24425 | (WTF::TCMalloc_ThreadCache::InitTSD): |
| 24426 | (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): |
| 24427 | (WTF::TCMallocStats::ExtractStats): |
| 24428 | (WTF::TCMallocStats::DumpStats): |
| 24429 | (WTF::TCMallocStats::DumpStackTraces): |
| 24430 | (WTF::TCMallocStats::TCMallocImplementation::MarkThreadIdle): |
| 24431 | (WTF::TCMallocStats::TCMallocImplementation::ReleaseFreeMemory): |
| 24432 | (WTF::TCMallocStats::TCMallocGuard::TCMallocGuard): |
| 24433 | (WTF::TCMallocStats::TCMallocGuard::~TCMallocGuard): |
| 24434 | (WTF::TCMallocStats::DoSampledAllocation): |
| 24435 | (WTF::TCMallocStats::CheckCachedSizeClass): |
| 24436 | (WTF::TCMallocStats::CheckedMallocResult): |
| 24437 | (WTF::TCMallocStats::SpanToMallocResult): |
| 24438 | (WTF::TCMallocStats::do_malloc): |
| 24439 | (WTF::TCMallocStats::do_free): |
| 24440 | (WTF::TCMallocStats::do_memalign): |
| 24441 | (WTF::TCMallocStats::do_malloc_stats): |
| 24442 | (WTF::TCMallocStats::do_mallopt): |
| 24443 | (WTF::TCMallocStats::do_mallinfo): |
| 24444 | (WTF::TCMallocStats::realloc): |
| 24445 | (WTF::TCMallocStats::cpp_alloc): |
| 24446 | (WTF::TCMallocStats::operator new): |
| 24447 | (WTF::TCMallocStats::): |
| 24448 | (WTF::TCMallocStats::operator new[]): |
| 24449 | (WTF::TCMallocStats::malloc_stats): |
| 24450 | (WTF::TCMallocStats::mallopt): |
| 24451 | (WTF::TCMallocStats::mallinfo): |
| 24452 | * wtf/TCPackedCache.h: Added. |
| 24453 | (PackedCache::PackedCache): |
| 24454 | (PackedCache::Put): |
| 24455 | (PackedCache::Has): |
| 24456 | (PackedCache::GetOrDefault): |
| 24457 | (PackedCache::Clear): |
| 24458 | (PackedCache::EntryToValue): |
| 24459 | (PackedCache::EntryToUpper): |
| 24460 | (PackedCache::KeyToUpper): |
| 24461 | (PackedCache::UpperToPartialKey): |
| 24462 | (PackedCache::Hash): |
| 24463 | (PackedCache::KeyMatch): |
| 24464 | * wtf/TCPageMap.h: |
| 24465 | (TCMalloc_PageMap2::PreallocateMoreMemory): |
| 24466 | * wtf/TCSystemAlloc.cpp: |
| 24467 | (TCMalloc_SystemRelease): |
| 24468 | * wtf/TCSystemAlloc.h: |
| 24469 | |
| 24470 | 2007-12-04 Anders Carlsson <andersca@apple.com> |
| 24471 | |
| 24472 | Reviewed by Sam. |
| 24473 | |
| 24474 | Make isSafeScript const. |
| 24475 | |
| 24476 | * kjs/JSGlobalObject.h: |
| 24477 | (KJS::JSGlobalObject::isSafeScript): |
| 24478 | |
| 24479 | 2007-12-04 Darin Adler <darin@apple.com> |
| 24480 | |
| 24481 | Reviewed by Geoff. |
| 24482 | |
| 24483 | - fix first part of http://bugs.webkit.org/show_bug.cgi?id=16220 |
| 24484 | <rdar://problem/5625221> Crash opening www.news.com (CNet) |
| 24485 | |
| 24486 | Test: fast/js/regexp-overflow.html |
| 24487 | |
| 24488 | * pcre/pcre_compile.cpp: |
| 24489 | (calculateCompiledPatternLengthAndFlags): Add room for the additional BRA/KET that |
| 24490 | was generated in the compile code but not taken into account here. |
| 24491 | |
| 24492 | 2007-12-03 Darin Adler <darin@apple.com> |
| 24493 | |
| 24494 | Reviewed by Geoff. |
| 24495 | |
| 24496 | - fix http://bugs.webkit.org/show_bug.cgi?id=15618 |
| 24497 | <rdar://problem/5619353> REGRESSION: Stack overflow/crash in KJS::equal (15618) |
| 24498 | |
| 24499 | Test: fast/js/recursion-limit-equal.html |
| 24500 | |
| 24501 | * kjs/operations.cpp: (KJS::equal): Check the exception from toPrimitive. |
| 24502 | |
| 24503 | 2007-12-03 Dan Bernstein <mitz@apple.com> |
| 24504 | |
| 24505 | - fix a copy-and-paste-o |
| 24506 | |
| 24507 | * bindings/npruntime.cpp: |
| 24508 | (_NPN_GetIntIdentifier): |
| 24509 | |
| 24510 | 2007-12-03 Dan Bernstein <mitz@apple.com> |
| 24511 | |
| 24512 | Reviewed by Darin Adler. |
| 24513 | |
| 24514 | - fix an ASSERT when getIntIdentifier is called with 0 or -1 |
| 24515 | |
| 24516 | * bindings/npruntime.cpp: |
| 24517 | (_NPN_GetIntIdentifier): We cannot use the hashmap for 0 and -1 since |
| 24518 | they are the empty value and the deleted value. Instead, keep the |
| 24519 | identifiers for those two integers in a static array. |
| 24520 | |
| 24521 | 2007-12-02 Darin Adler <darin@apple.com> |
| 24522 | |
| 24523 | Reviewed by Mitz. |
| 24524 | |
| 24525 | - fix http://bugs.webkit.org/show_bug.cgi?id=15848 |
| 24526 | <rdar://problem/5619330> REGRESSION: Assertion failure viewing comments page on digg.com |
| 24527 | |
| 24528 | Test: fast/js/sparse-array.html |
| 24529 | |
| 24530 | * kjs/array_instance.cpp: |
| 24531 | (KJS::ArrayInstance::inlineGetOwnPropertySlot): Check sparse array cutoff before looking |
| 24532 | in hash map. Can't avoid the branch because we can't look for 0 in the hash. |
| 24533 | (KJS::ArrayInstance::deleteProperty): Ditto. |
| 24534 | |
| 24535 | 2007-12-02 Geoffrey Garen <ggaren@apple.com> |
| 24536 | |
| 24537 | Build fix: added an #include. |
| 24538 | |
| 24539 | * kjs/collector.cpp: |
| 24540 | |
| 24541 | 2007-12-02 Geoffrey Garen <ggaren@apple.com> |
| 24542 | |
| 24543 | Reviewed by Eric Seidel. |
| 24544 | |
| 24545 | Second step in refactoring JSGlobalObject: moved virtual functions from |
| 24546 | Interpreter to JSGlobalObject. |
| 24547 | |
| 24548 | Layout and JS tests pass. SunSpider reports a .7% speedup -- don't |
| 24549 | believe his lies. |
| 24550 | |
| 24551 | 2007-12-01 Alp Toker <alp@atoker.com> |
| 24552 | |
| 24553 | Reviewed by Adam Roben. |
| 24554 | |
| 24555 | http://bugs.webkit.org/show_bug.cgi?id=16228 |
| 24556 | kJSClassDefinitionEmpty is not exported with JS_EXPORT |
| 24557 | |
| 24558 | Add JS_EXPORT to kJSClassDefinitionEmpty. |
| 24559 | |
| 24560 | Make the gcc compiler check take precedence over the WIN32||_WIN32 |
| 24561 | check to ensure that symbols are exported on Windows when using gcc. |
| 24562 | |
| 24563 | Add a TODO referencing the bug about JS_EXPORT in the Win build |
| 24564 | (http://bugs.webkit.org/show_bug.cgi?id=16227) |
| 24565 | |
| 24566 | Don't define JS_EXPORT as 'extern' when the compiler is unknown since |
| 24567 | it would result in the incorrect expansion: |
| 24568 | |
| 24569 | extern extern const JSClassDefinition kJSClassDefinitionEmpty; |
| 24570 | |
| 24571 | (This was something we inherited from CFBase.h that doesn't make sense |
| 24572 | for JSBase.h) |
| 24573 | |
| 24574 | * API/JSBase.h: |
| 24575 | * API/JSObjectRef.h: |
| 24576 | |
| 24577 | 2007-11-30 Geoffrey Garen <ggaren@apple.com> |
| 24578 | |
| 24579 | Reviewed by Beth Dakin. |
| 24580 | |
| 24581 | Reversed the ownership relationship between Interpreter and JSGlobalObject. |
| 24582 | Now, the JSGlobalObject owns the Interpreter, and top-level objects |
| 24583 | that need the two to persist just protect the JSGlobalObject from GC. |
| 24584 | |
| 24585 | Global object bootstrapping looks a little odd right now, but it will |
| 24586 | make much more sense soon, after further rounds of refactoring. |
| 24587 | |
| 24588 | * bindings/runtime_root.h: Made this class inherit from RefCounted, |
| 24589 | to avoid code duplication. |
| 24590 | |
| 24591 | * kjs/collector.cpp: |
| 24592 | (KJS::Collector::collect): No need to give special GC treatment to |
| 24593 | Interpreters, since we mark their global objects, which mark them. |
| 24594 | |
| 24595 | * kjs/interpreter.cpp: |
| 24596 | (KJS::Interpreter::mark): No need to mark our global object, since it |
| 24597 | marks us. |
| 24598 | * kjs/interpreter.h: Don't inherit from RefCounted -- JSGlobalObject |
| 24599 | owns us directly. |
| 24600 | |
| 24601 | * kjs/testkjs.cpp: Modified to follow the new rules. |
| 24602 | (createGlobalObject): |
| 24603 | (runWithScripts): |
| 24604 | |
| 24605 | 2007-11-30 Brent Fulgham <bfulgham@gmail.com> |
| 24606 | |
| 24607 | Reviewed by Eric. |
| 24608 | |
| 24609 | * ChangeLog: |
| 24610 | * pcre/pcre_compile.cpp: |
| 24611 | (compile_branch): |
| 24612 | |
| 24613 | 2007-11-30 Eric Seidel <eric@webkit.org> |
| 24614 | |
| 24615 | No review, build fix only. |
| 24616 | |
| 24617 | Fix uninitialized var warnings in release build. |
| 24618 | |
| 24619 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 24620 | * pcre/pcre_compile.cpp: |
| 24621 | (compile_regex): |
| 24622 | |
| 24623 | 2007-11-30 Darin Adler <darin@apple.com> |
| 24624 | |
| 24625 | Reviewed by Adam Roben. |
| 24626 | |
| 24627 | - fix http://bugs.webkit.org/show_bug.cgi?id=16207 |
| 24628 | JavaScript regular expressions should match UTF-16 code units rather than characters |
| 24629 | |
| 24630 | SunSpider says this is 5.5% faster on the regexp test, 0.4% faste overall. |
| 24631 | |
| 24632 | Test: fast/js/regexp-non-bmp.html |
| 24633 | |
| 24634 | Renamed ANY_CHAR to NOT_NEWLINE to more-accurately reflect its meaning. |
| 24635 | |
| 24636 | * pcre/pcre_compile.cpp: |
| 24637 | (compile_branch): Removed calls to the UTF-16 character accessor functions, replacing |
| 24638 | them with simple pointer dereferences in some cases, and no code at all in others. |
| 24639 | (calculateCompiledPatternLengthAndFlags): Ditto. |
| 24640 | |
| 24641 | * pcre/pcre_exec.cpp: |
| 24642 | (match): Fixed indentation of some case labels (including all the BEGIN_OPCODE). |
| 24643 | Removed calls to the UTF-16 character accessor functions, replacing them with simple |
| 24644 | pointer dereferences in some cases, and no code at all in others. Also removed some |
| 24645 | explicit UTF-16 support code in a few cases. Removed the unneeded "UTF-8" code path |
| 24646 | in the ANY_CHAR repeat code, and in another case, eliminated the code to check against |
| 24647 | end_subject in because it is already done outside the loop. |
| 24648 | (jsRegExpExecute): |
| 24649 | |
| 24650 | * pcre/pcre_internal.h: Removed all the UTF-16 helper functions. |
| 24651 | |
| 24652 | 2007-11-30 Eric Seidel <eric@webkit.org> |
| 24653 | |
| 24654 | Reviewed by darin. |
| 24655 | |
| 24656 | PCRE crashes under GuardMalloc |
| 24657 | http://bugs.webkit.org/show_bug.cgi?id=16127 |
| 24658 | check against patternEnd to make sure we don't walk off the end of the string |
| 24659 | |
| 24660 | * pcre/pcre_compile.cpp: |
| 24661 | (compile_branch): |
| 24662 | (calculateCompiledPatternLengthAndFlags): |
| 24663 | |
| 24664 | 2007-11-30 Eric Seidel <eric@webkit.org> |
| 24665 | |
| 24666 | Reviewed by Maciej. |
| 24667 | |
| 24668 | Fix layout test regressions caused by r28186 |
| 24669 | http://bugs.webkit.org/show_bug.cgi?id=16195 |
| 24670 | change first_byte and req_byte back to shorts instead of chars |
| 24671 | (I think PCRE stuffs information in the high bits) |
| 24672 | |
| 24673 | * pcre/pcre_internal.h: |
| 24674 | |
| 24675 | 2007-11-29 Oliver Hunt <oliver@apple.com> |
| 24676 | |
| 24677 | Reviewed by Maciej and Darin. |
| 24678 | |
| 24679 | Make the JS collector work with multiple threads |
| 24680 | |
| 24681 | Under heavy contention it was possible the GC to suspend other |
| 24682 | threads inside the pthread spinlock, which could lead to the GC |
| 24683 | thread blocking on the pthread spinlock itself. |
| 24684 | |
| 24685 | We now determine and store each thread's stack base when it is |
| 24686 | registered, thus removing the need for any calls to pthread_get_stackaddr_np |
| 24687 | that needed the pthread spinlock. |
| 24688 | |
| 24689 | * kjs/collector.cpp: |
| 24690 | (KJS::Collector::Thread::Thread): |
| 24691 | (KJS::Collector::registerThread): |
| 24692 | (KJS::Collector::markOtherThreadConservatively): |
| 24693 | |
| 24694 | 2007-11-29 Adam Roben <aroben@apple.com> |
| 24695 | |
| 24696 | Windows build fix |
| 24697 | |
| 24698 | Removed some unreachable code (ironically, the code was some |
| 24699 | ASSERT_NOT_REACHED()s). |
| 24700 | |
| 24701 | * pcre/pcre_compile.cpp: |
| 24702 | (compile_branch): |
| 24703 | * pcre/pcre_exec.cpp: |
| 24704 | (match): |
| 24705 | |
| 24706 | 2007-11-29 Eric Seidel <eric@webkit.org> |
| 24707 | |
| 24708 | Reviewed by Mark Rowe. |
| 24709 | |
| 24710 | Fix for --guard crash of fast/js/regexp-charclass-crash introduced by r28151. |
| 24711 | |
| 24712 | * pcre/pcre_compile.cpp: |
| 24713 | (is_anchored): |
| 24714 | |
| 24715 | 2007-11-28 Mark Rowe <mrowe@apple.com> |
| 24716 | |
| 24717 | Gtk build fix. Rubber-stamped by Eric. |
| 24718 | |
| 24719 | * pcre/pcre_exec.cpp: |
| 24720 | (match): Add braces around the body of the case statement to prevent |
| 24721 | wanings about jumps across the initialization of a variable. |
| 24722 | |
| 24723 | 2007-11-29 Eric Seidel <eric@webkit.org> |
| 24724 | |
| 24725 | Reviewed by Mark Rowe. |
| 24726 | |
| 24727 | Attempt to fix non-mac builds after PCRE cleanup. |
| 24728 | |
| 24729 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 24730 | * JavaScriptCoreSources.bkl: |
| 24731 | * pcre/pcre.pri: |
| 24732 | |
| 24733 | 2007-11-28 Eric Seidel <eric@webkit.org> |
| 24734 | |
| 24735 | Reviewed by Maciej. |
| 24736 | |
| 24737 | Centralize code for subjectPtr adjustments using inlines, only ever check for a single |
| 24738 | trailing surrogate (as UTF16 only allows one), possibly fix PCRE bugs involving char |
| 24739 | classes and garbled UTF16 strings. |
| 24740 | |
| 24741 | * pcre/pcre_exec.cpp: |
| 24742 | (match): |
| 24743 | (jsRegExpExecute): |
| 24744 | * pcre/pcre_internal.h: |
| 24745 | (getPreviousChar): |
| 24746 | (movePtrToPreviousChar): |
| 24747 | (movePtrToNextChar): |
| 24748 | (movePtrToStartOfCurrentChar): |
| 24749 | |
| 24750 | 2007-11-28 Eric Seidel <eric@webkit.org> |
| 24751 | |
| 24752 | Reviewed by Maciej. |
| 24753 | |
| 24754 | change getChar* functions to return result and push 'c' into local scopes for clarity |
| 24755 | |
| 24756 | * pcre/pcre_compile.cpp: |
| 24757 | (compile_branch): |
| 24758 | (calculateCompiledPatternLengthAndFlags): |
| 24759 | * pcre/pcre_exec.cpp: |
| 24760 | (match): |
| 24761 | * pcre/pcre_internal.h: |
| 24762 | (getChar): |
| 24763 | (getCharAndAdvance): |
| 24764 | (getCharAndLength): |
| 24765 | (getCharAndAdvanceIfSurrogate): |
| 24766 | |
| 24767 | 2007-11-28 Eric Seidel <eric@webkit.org> |
| 24768 | |
| 24769 | Reviewed by Sam. |
| 24770 | |
| 24771 | Comment cleanup |
| 24772 | |
| 24773 | * pcre/pcre_exec.cpp: |
| 24774 | (match): |
| 24775 | |
| 24776 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24777 | |
| 24778 | Reviewed by Sam. |
| 24779 | |
| 24780 | Further cleanups to calculateCompiledPatternLengthAndFlags |
| 24781 | |
| 24782 | * pcre/pcre_compile.cpp: |
| 24783 | (calculateCompiledPatternLengthAndFlags): |
| 24784 | * pcre/pcre_internal.h: |
| 24785 | |
| 24786 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24787 | |
| 24788 | Reviewed by Sam. |
| 24789 | |
| 24790 | Give consistent naming to the RegExp options/compile flags |
| 24791 | |
| 24792 | * pcre/pcre_compile.cpp: |
| 24793 | (compile_branch): |
| 24794 | (is_anchored): |
| 24795 | (find_firstassertedchar): |
| 24796 | (printCompiledRegExp): |
| 24797 | (jsRegExpCompile): |
| 24798 | * pcre/pcre_exec.cpp: |
| 24799 | (jsRegExpExecute): |
| 24800 | * pcre/pcre_internal.h: |
| 24801 | |
| 24802 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24803 | |
| 24804 | Reviewed by Sam. |
| 24805 | |
| 24806 | Pull first_byte and req_byte optimizations out into separate static funtions, SunSpider reported this as a win. |
| 24807 | |
| 24808 | * pcre/pcre_exec.cpp: |
| 24809 | (tryFirstByteOptimization): |
| 24810 | (tryRequiredByteOptimization): |
| 24811 | (jsRegExpExecute): |
| 24812 | * pcre/pcre_internal.h: |
| 24813 | |
| 24814 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24815 | |
| 24816 | Reviewed by Maciej. |
| 24817 | |
| 24818 | give PCRE_MULTILINE a better name: OptionMatchAcrossMultipleLines |
| 24819 | |
| 24820 | * pcre/pcre_compile.cpp: |
| 24821 | (compile_branch): |
| 24822 | (is_anchored): |
| 24823 | (printCompiledRegExp): |
| 24824 | (jsRegExpCompile): |
| 24825 | * pcre/pcre_exec.cpp: |
| 24826 | (jsRegExpExecute): |
| 24827 | * pcre/pcre_internal.h: |
| 24828 | |
| 24829 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24830 | |
| 24831 | Reviewed by Oliver. |
| 24832 | |
| 24833 | Deprecate jsRegExpExecute's offset-vector fallback code |
| 24834 | |
| 24835 | * pcre/pcre_exec.cpp: |
| 24836 | (jsRegExpExecute): |
| 24837 | |
| 24838 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24839 | |
| 24840 | Reviewed by Maciej. |
| 24841 | |
| 24842 | Make cur_is_word and prev_is_word locals, and change OP_ANY to OP_ANY_CHAR for clarity |
| 24843 | |
| 24844 | * pcre/pcre_compile.cpp: |
| 24845 | (find_fixedlength): |
| 24846 | (compile_branch): |
| 24847 | (canApplyFirstCharOptimization): |
| 24848 | * pcre/pcre_exec.cpp: |
| 24849 | (match): |
| 24850 | * pcre/pcre_internal.h: |
| 24851 | |
| 24852 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24853 | |
| 24854 | Reviewed by Mitz & Maciej. |
| 24855 | |
| 24856 | Change _NC operators to use _IGNORING_CASE for clarity |
| 24857 | |
| 24858 | * pcre/pcre_compile.cpp: |
| 24859 | (find_fixedlength): |
| 24860 | (compile_branch): |
| 24861 | (find_firstassertedchar): |
| 24862 | * pcre/pcre_exec.cpp: |
| 24863 | (match): |
| 24864 | * pcre/pcre_internal.h: |
| 24865 | |
| 24866 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24867 | |
| 24868 | Reviewed by Mitz. |
| 24869 | |
| 24870 | Remove branch from return |
| 24871 | |
| 24872 | * pcre/pcre_compile.cpp: |
| 24873 | (compile_branch): |
| 24874 | * pcre/pcre_exec.cpp: |
| 24875 | (match): |
| 24876 | |
| 24877 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24878 | |
| 24879 | Reviewed by Maciej. |
| 24880 | |
| 24881 | Add repeatInformationFromInstructionOffset inline |
| 24882 | |
| 24883 | * pcre/pcre_exec.cpp: |
| 24884 | (repeatInformationFromInstructionOffset): |
| 24885 | (match): |
| 24886 | |
| 24887 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24888 | |
| 24889 | Reviewed by Maciej. |
| 24890 | |
| 24891 | Remove no longer used error code JSRegExpErrorMatchLimit |
| 24892 | |
| 24893 | * kjs/regexp.cpp: |
| 24894 | (KJS::RegExp::match): |
| 24895 | * pcre/pcre.h: |
| 24896 | * pcre/pcre_internal.h: |
| 24897 | |
| 24898 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24899 | |
| 24900 | Reviewed by Sam. |
| 24901 | |
| 24902 | Make i locally scoped for better code clarity |
| 24903 | |
| 24904 | * pcre/pcre_exec.cpp: |
| 24905 | (match): |
| 24906 | |
| 24907 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24908 | |
| 24909 | Reviewed by Maciej. |
| 24910 | |
| 24911 | Give subjectPtr and instructionPtr sane names, reduce size of MatchFrame for a 0.2% speedup. |
| 24912 | |
| 24913 | * pcre/pcre_compile.cpp: |
| 24914 | (compile_branch): |
| 24915 | (calculateCompiledPatternLengthAndFlags): |
| 24916 | * pcre/pcre_exec.cpp: |
| 24917 | (match_ref): |
| 24918 | (MatchStack::pushNewFrame): |
| 24919 | (getUTF8CharAndIncrementLength): |
| 24920 | (match): |
| 24921 | * pcre/pcre_internal.h: |
| 24922 | (getChar): |
| 24923 | (getCharAndAdvance): |
| 24924 | (getCharAndLength): |
| 24925 | (getCharAndAdvanceIfSurrogate): |
| 24926 | * pcre/pcre_xclass.cpp: |
| 24927 | (getUTF8CharAndAdvancePointer): |
| 24928 | |
| 24929 | 2007-11-26 Eric Seidel <eric@webkit.org> |
| 24930 | |
| 24931 | Reviewed by Sam. |
| 24932 | |
| 24933 | Small speedup (0.7%) by simplifying canUseStackBufferForNextFrame() check |
| 24934 | |
| 24935 | * pcre/pcre_exec.cpp: |
| 24936 | (MatchStack::MatchStack): |
| 24937 | (MatchStack::popCurrentFrame): |
| 24938 | |
| 24939 | 2007-11-25 Eric Seidel <eric@webkit.org> |
| 24940 | |
| 24941 | Reviewed by Sam. |
| 24942 | |
| 24943 | Lower MATCH_LIMIT_RECURSION to more sane levels to prevent hangs on run-javascriptcore-tests |
| 24944 | |
| 24945 | * pcre/pcre_internal.h: |
| 24946 | |
| 24947 | 2007-11-25 Eric Seidel <eric@webkit.org> |
| 24948 | |
| 24949 | Reviewed by Maciej. |
| 24950 | |
| 24951 | Remove match_is_group variable for another 5% speedup |
| 24952 | |
| 24953 | * pcre/pcre_compile.cpp: |
| 24954 | * pcre/pcre_exec.cpp: |
| 24955 | (startNewGroup): |
| 24956 | (match): |
| 24957 | |
| 24958 | 2007-11-28 Eric Seidel <eric@webkit.org> |
| 24959 | |
| 24960 | Reviewed by Sam. |
| 24961 | |
| 24962 | Abstract frame variables into locals and args |
| 24963 | |
| 24964 | * pcre/pcre_compile.cpp: |
| 24965 | (compile_branch): |
| 24966 | * pcre/pcre_exec.cpp: |
| 24967 | (match): |
| 24968 | * pcre/pcre_internal.h: |
| 24969 | |
| 24970 | 2007-11-28 Eric Seidel <eric@webkit.org> |
| 24971 | |
| 24972 | Reviewed by Sam. |
| 24973 | |
| 24974 | Section off MatchData arguments into args struct |
| 24975 | |
| 24976 | * pcre/pcre_exec.cpp: |
| 24977 | (MatchStack::pushNewFrame): |
| 24978 | (match): |
| 24979 | |
| 24980 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 24981 | |
| 24982 | Reviewed by Sam. |
| 24983 | |
| 24984 | Remove redundant eptrblock struct |
| 24985 | |
| 24986 | * pcre/pcre_exec.cpp: |
| 24987 | (MatchStack::pushNewFrame): |
| 24988 | (match): |
| 24989 | |
| 24990 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 24991 | |
| 24992 | Reviewed by Maciej. |
| 24993 | |
| 24994 | Remove redundant match_call_count and move recursion check out of super-hot code path |
| 24995 | SunSpider says this is at least an 8% speedup for regexp. |
| 24996 | |
| 24997 | * pcre/pcre_exec.cpp: |
| 24998 | (MatchStack::MatchStack): |
| 24999 | (MatchStack::pushNewFrame): |
| 25000 | (MatchStack::popCurrentFrame): |
| 25001 | (MatchStack::popAllFrames): |
| 25002 | (match): |
| 25003 | (jsRegExpExecute): |
| 25004 | * pcre/pcre_internal.h: |
| 25005 | |
| 25006 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25007 | |
| 25008 | Reviewed by Sam. |
| 25009 | |
| 25010 | Get rid of GETCHAR* macros, replacing them with better named inlines |
| 25011 | |
| 25012 | * pcre/pcre_compile.cpp: |
| 25013 | (compile_branch): |
| 25014 | (calculateCompiledPatternLengthAndFlags): |
| 25015 | * pcre/pcre_exec.cpp: |
| 25016 | (match): |
| 25017 | * pcre/pcre_internal.h: |
| 25018 | (getCharAndAdvance): |
| 25019 | (getCharAndLength): |
| 25020 | (getCharAndAdvanceIfSurrogate): |
| 25021 | |
| 25022 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25023 | |
| 25024 | Reviewed by Sam. |
| 25025 | |
| 25026 | Further cleanup GET/PUT inlines |
| 25027 | |
| 25028 | * pcre/pcre_internal.h: |
| 25029 | (putOpcodeValueAtOffset): |
| 25030 | (getOpcodeValueAtOffset): |
| 25031 | (putOpcodeValueAtOffsetAndAdvance): |
| 25032 | (put2ByteOpcodeValueAtOffset): |
| 25033 | (get2ByteOpcodeValueAtOffset): |
| 25034 | (put2ByteOpcodeValueAtOffsetAndAdvance): |
| 25035 | |
| 25036 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25037 | |
| 25038 | Reviewed by Sam. |
| 25039 | |
| 25040 | Give GET, PUT better names, and add (poor) moveOpcodePtrPastAnyAlternateBranches |
| 25041 | |
| 25042 | * pcre/pcre_compile.cpp: |
| 25043 | (firstSignificantOpCodeSkippingAssertions): |
| 25044 | (find_fixedlength): |
| 25045 | (complete_callout): |
| 25046 | (compile_branch): |
| 25047 | (compile_regex): |
| 25048 | (is_anchored): |
| 25049 | (canApplyFirstCharOptimization): |
| 25050 | (find_firstassertedchar): |
| 25051 | * pcre/pcre_exec.cpp: |
| 25052 | (match): |
| 25053 | * pcre/pcre_internal.h: |
| 25054 | (putOpcodeValueAtOffset): |
| 25055 | (getOpcodeValueAtOffset): |
| 25056 | (putOpcodeValueAtOffsetAndAdvance): |
| 25057 | (put2ByteOpcodeValueAtOffset): |
| 25058 | (get2ByteOpcodeValueAtOffset): |
| 25059 | (moveOpcodePtrPastAnyAlternateBranches): |
| 25060 | * pcre/pcre_ucp_searchfuncs.cpp: |
| 25061 | (_pcre_ucp_othercase): |
| 25062 | |
| 25063 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25064 | |
| 25065 | Reviewed by Sam. |
| 25066 | |
| 25067 | Add inlines for toLowerCase, isWordChar, isSpaceChar for further regexp speedup |
| 25068 | |
| 25069 | * pcre/pcre_compile.cpp: |
| 25070 | (compile_branch): |
| 25071 | (jsRegExpCompile): |
| 25072 | * pcre/pcre_exec.cpp: |
| 25073 | (match): |
| 25074 | (jsRegExpExecute): |
| 25075 | * pcre/pcre_internal.h: |
| 25076 | (toLowerCase): |
| 25077 | (flipCase): |
| 25078 | (classBitmapForChar): |
| 25079 | (charTypeForChar): |
| 25080 | (isWordChar): |
| 25081 | (isSpaceChar): |
| 25082 | (CompileData::CompileData): |
| 25083 | * pcre/pcre_xclass.cpp: |
| 25084 | (_pcre_xclass): |
| 25085 | |
| 25086 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25087 | |
| 25088 | Reviewed by Sam. |
| 25089 | |
| 25090 | cleanup _pcre_ucp_othercase |
| 25091 | |
| 25092 | * pcre/pcre_ucp_searchfuncs.cpp: |
| 25093 | (_pcre_ucp_othercase): |
| 25094 | |
| 25095 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25096 | |
| 25097 | Reviewed by Maciej. |
| 25098 | |
| 25099 | Use better variable names for case ignoring options |
| 25100 | |
| 25101 | * pcre/pcre_compile.cpp: |
| 25102 | (compile_branch): |
| 25103 | (find_firstassertedchar): |
| 25104 | (printCompiledRegExp): |
| 25105 | (jsRegExpCompile): |
| 25106 | * pcre/pcre_exec.cpp: |
| 25107 | (match_ref): |
| 25108 | (match): |
| 25109 | (jsRegExpExecute): |
| 25110 | * pcre/pcre_internal.h: |
| 25111 | |
| 25112 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25113 | |
| 25114 | Reviewed by Sam. |
| 25115 | |
| 25116 | split first_significant_code into two simpler functions |
| 25117 | |
| 25118 | * pcre/pcre_compile.cpp: |
| 25119 | (firstSignificantOpCode): |
| 25120 | (firstSignificantOpCodeSkippingAssertions): |
| 25121 | (is_anchored): |
| 25122 | (canApplyFirstCharOptimization): |
| 25123 | (find_firstassertedchar): |
| 25124 | |
| 25125 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25126 | |
| 25127 | Reviewed by Sam. |
| 25128 | |
| 25129 | clean up is_counted_repeat |
| 25130 | |
| 25131 | * pcre/pcre_compile.cpp: |
| 25132 | (is_counted_repeat): |
| 25133 | |
| 25134 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25135 | |
| 25136 | Reviewed by Sam. |
| 25137 | |
| 25138 | clean up check_escape |
| 25139 | |
| 25140 | * pcre/pcre_compile.cpp: |
| 25141 | (check_escape): |
| 25142 | |
| 25143 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25144 | |
| 25145 | Reviewed by Sam. |
| 25146 | |
| 25147 | Reformat find_fixedlength |
| 25148 | |
| 25149 | * pcre/pcre_compile.cpp: |
| 25150 | (find_fixedlength): |
| 25151 | |
| 25152 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25153 | |
| 25154 | Reviewed by Sam. |
| 25155 | |
| 25156 | reformat is_anchored |
| 25157 | |
| 25158 | * pcre/pcre_compile.cpp: |
| 25159 | (is_anchored): |
| 25160 | |
| 25161 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25162 | |
| 25163 | Reviewed by Maciej. |
| 25164 | |
| 25165 | Remove unused function could_be_empty_branch |
| 25166 | |
| 25167 | * pcre/pcre_compile.cpp: |
| 25168 | (first_significant_code): |
| 25169 | (find_fixedlength): |
| 25170 | (compile_branch): |
| 25171 | (canApplyFirstCharOptimization): |
| 25172 | |
| 25173 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25174 | |
| 25175 | Reviewed by Sam. |
| 25176 | |
| 25177 | Pass around MatchData objects by reference |
| 25178 | |
| 25179 | * pcre/pcre_exec.cpp: |
| 25180 | (pchars): |
| 25181 | (match_ref): |
| 25182 | (match): |
| 25183 | (jsRegExpExecute): |
| 25184 | |
| 25185 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25186 | |
| 25187 | Reviewed by Sam. |
| 25188 | |
| 25189 | give PCRE_STARTLINE a better name and rename match_data to MatchData |
| 25190 | |
| 25191 | * pcre/pcre_compile.cpp: |
| 25192 | (compile_branch): |
| 25193 | (canApplyFirstCharOptimization): |
| 25194 | (find_firstassertedchar): |
| 25195 | (printCompiledRegExp): |
| 25196 | (jsRegExpCompile): |
| 25197 | * pcre/pcre_exec.cpp: |
| 25198 | (pchars): |
| 25199 | (jsRegExpExecute): |
| 25200 | * pcre/pcre_internal.h: |
| 25201 | |
| 25202 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25203 | |
| 25204 | Reviewed by Sam. |
| 25205 | |
| 25206 | Clean up find_firstassertedchar |
| 25207 | |
| 25208 | * pcre/pcre_compile.cpp: |
| 25209 | (get_othercase_range): |
| 25210 | (find_firstassertedchar): |
| 25211 | (calculateCompiledPatternLengthAndFlags): |
| 25212 | |
| 25213 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25214 | |
| 25215 | Reviewed by Tim Hatcher. |
| 25216 | |
| 25217 | Pass around CompileData& instead of CompileData* |
| 25218 | |
| 25219 | * pcre/pcre_compile.cpp: |
| 25220 | (compile_branch): |
| 25221 | (jsRegExpCompile): |
| 25222 | |
| 25223 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25224 | |
| 25225 | Reviewed by Sam. |
| 25226 | |
| 25227 | Clean up compile_branch, move _pcre_ord2utf8, and rename CompileData |
| 25228 | |
| 25229 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 25230 | * pcre/pcre_compile.cpp: |
| 25231 | (_pcre_ord2utf8): |
| 25232 | (calculateCompiledPatternLengthAndFlags): |
| 25233 | (jsRegExpCompile): |
| 25234 | * pcre/pcre_internal.h: |
| 25235 | * pcre/pcre_ord2utf8.cpp: Removed. |
| 25236 | |
| 25237 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25238 | |
| 25239 | Reviewed by Sam. |
| 25240 | |
| 25241 | removing more macros |
| 25242 | |
| 25243 | * pcre/pcre_compile.cpp: |
| 25244 | (could_be_empty_branch): |
| 25245 | (compile_branch): |
| 25246 | (calculateCompiledPatternLengthAndFlags): |
| 25247 | * pcre/pcre_exec.cpp: |
| 25248 | (match): |
| 25249 | (jsRegExpExecute): |
| 25250 | * pcre/pcre_internal.h: |
| 25251 | * pcre/pcre_xclass.cpp: |
| 25252 | |
| 25253 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25254 | |
| 25255 | Reviewed by Maciej. |
| 25256 | |
| 25257 | clean up formating in compile_branch |
| 25258 | |
| 25259 | * pcre/pcre_compile.cpp: |
| 25260 | (compile_branch): |
| 25261 | |
| 25262 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25263 | |
| 25264 | Reviewed by Sam. |
| 25265 | |
| 25266 | Fix spacing for read_repeat_counts |
| 25267 | |
| 25268 | * pcre/pcre_compile.cpp: |
| 25269 | (read_repeat_counts): |
| 25270 | |
| 25271 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25272 | |
| 25273 | Reviewed by Sam. |
| 25274 | |
| 25275 | Get rid of PCRE custom char types |
| 25276 | |
| 25277 | * pcre/pcre_compile.cpp: |
| 25278 | (check_escape): |
| 25279 | (complete_callout): |
| 25280 | (compile_branch): |
| 25281 | (compile_regex): |
| 25282 | (calculateCompiledPatternLengthAndFlags): |
| 25283 | (jsRegExpCompile): |
| 25284 | * pcre/pcre_exec.cpp: |
| 25285 | (match_ref): |
| 25286 | (match): |
| 25287 | (jsRegExpExecute): |
| 25288 | * pcre/pcre_internal.h: |
| 25289 | |
| 25290 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25291 | |
| 25292 | Reviewed by Sam. |
| 25293 | |
| 25294 | reformat get_othercase_range |
| 25295 | |
| 25296 | * pcre/pcre_compile.cpp: |
| 25297 | (get_othercase_range): |
| 25298 | |
| 25299 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25300 | |
| 25301 | Reviewed by Maciej. |
| 25302 | |
| 25303 | Remove register keyword and more cleanup |
| 25304 | |
| 25305 | * pcre/pcre_compile.cpp: |
| 25306 | (find_fixedlength): |
| 25307 | (compile_branch): |
| 25308 | (is_anchored): |
| 25309 | (is_startline): |
| 25310 | (find_firstassertedchar): |
| 25311 | (calculateCompiledPatternLengthAndFlags): |
| 25312 | (jsRegExpCompile): |
| 25313 | * pcre/pcre_exec.cpp: |
| 25314 | (MatchStack::canUseStackBufferForNextFrame): |
| 25315 | (MatchStack::allocateNextFrame): |
| 25316 | (MatchStack::pushNewFrame): |
| 25317 | (MatchStack::frameIsStackAllocated): |
| 25318 | (MatchStack::popCurrentFrame): |
| 25319 | (MatchStack::unrollAnyHeapAllocatedFrames): |
| 25320 | (getUTF8CharAndIncrementLength): |
| 25321 | (match): |
| 25322 | (jsRegExpExecute): |
| 25323 | * pcre/pcre_internal.h: |
| 25324 | (PUT2INC): |
| 25325 | (isLeadingSurrogate): |
| 25326 | (isTrailingSurrogate): |
| 25327 | (decodeSurrogatePair): |
| 25328 | (getChar): |
| 25329 | * pcre/pcre_ord2utf8.cpp: |
| 25330 | (_pcre_ord2utf8): |
| 25331 | * pcre/pcre_xclass.cpp: |
| 25332 | (getUTF8CharAndAdvancePointer): |
| 25333 | (_pcre_xclass): |
| 25334 | |
| 25335 | 2007-11-24 Eric Seidel <eric@webkit.org> |
| 25336 | |
| 25337 | Reviewed by Maciej. |
| 25338 | |
| 25339 | Clean up jsRegExpExecute |
| 25340 | |
| 25341 | * pcre/pcre_compile.cpp: |
| 25342 | (returnError): |
| 25343 | (jsRegExpCompile): |
| 25344 | * pcre/pcre_exec.cpp: |
| 25345 | (jsRegExpExecute): |
| 25346 | * pcre/pcre_internal.h: |
| 25347 | |
| 25348 | 2007-11-29 Oliver Hunt <oliver@apple.com> |
| 25349 | |
| 25350 | Reviewed by Geoff. |
| 25351 | |
| 25352 | Merging updated system alloc and spinlock code from r38 of TCMalloc. |
| 25353 | |
| 25354 | This is needed as a precursor to the merge of TCMalloc proper. |
| 25355 | |
| 25356 | * wtf/FastMalloc.cpp: |
| 25357 | (WTF::TCMalloc_PageHeap::GrowHeap): |
| 25358 | * wtf/TCSpinLock.h: |
| 25359 | (TCMalloc_SpinLock::TCMalloc_SpinLock): |
| 25360 | (TCMalloc_SpinLock::): |
| 25361 | (TCMalloc_SpinLock::Lock): |
| 25362 | (TCMalloc_SpinLock::Unlock): |
| 25363 | (TCMalloc_SpinLock::IsHeld): |
| 25364 | * wtf/TCSystemAlloc.cpp: |
| 25365 | (TrySbrk): |
| 25366 | (TryMmap): |
| 25367 | (TryVirtualAlloc): |
| 25368 | (TryDevMem): |
| 25369 | (TCMalloc_SystemAlloc): |
| 25370 | * wtf/TCSystemAlloc.h: |
| 25371 | |
| 25372 | 2007-11-28 Brady Eidson <beidson@apple.com> |
| 25373 | |
| 25374 | Reviewed by Geoff |
| 25375 | |
| 25376 | Add copyKeysToVector utility, mirroring copyValuesToVector |
| 25377 | Also change the copyValuesToVector implementation to be a little more attractive |
| 25378 | |
| 25379 | * wtf/HashMap.h: |
| 25380 | (WTF::copyKeysToVector): |
| 25381 | (WTF::copyValuesToVector): |
| 25382 | |
| 25383 | 2007-11-27 Alp Toker <alp@atoker.com> |
| 25384 | |
| 25385 | Reviewed by Mark Rowe. |
| 25386 | |
| 25387 | Add a list of public JavaScriptCore headers for installation. |
| 25388 | |
| 25389 | This follows the convention used for the Qt and GTK+ header lists. |
| 25390 | |
| 25391 | * headers.pri: Added. |
| 25392 | |
| 25393 | 2007-11-27 Alp Toker <alp@atoker.com> |
| 25394 | |
| 25395 | Prospective MSVC build fix. |
| 25396 | |
| 25397 | Roll back dllexport/dllimport support for now. |
| 25398 | |
| 25399 | * API/JSBase.h: |
| 25400 | |
| 25401 | 2007-11-27 Alp Toker <alp@atoker.com> |
| 25402 | |
| 25403 | Reviewed by Maciej. |
| 25404 | |
| 25405 | http://bugs.webkit.org/show_bug.cgi?id=15569 |
| 25406 | [gtk] GTK JavaScriptCore needs to export symbols for JSC API and WTF |
| 25407 | |
| 25408 | Introduce JS_EXPORT to mark symbols to be exported as public API. |
| 25409 | |
| 25410 | Export all public symbols in the JavaScriptCore C API. |
| 25411 | |
| 25412 | This matches conventions for exporting symbols set by the CF and CG |
| 25413 | frameworks. |
| 25414 | |
| 25415 | * API/JSBase.h: |
| 25416 | * API/JSContextRef.h: |
| 25417 | * API/JSObjectRef.h: |
| 25418 | * API/JSStringRef.h: |
| 25419 | * API/JSStringRefBSTR.h: |
| 25420 | * API/JSStringRefCF.h: |
| 25421 | * API/JSValueRef.h: |
| 25422 | |
| 25423 | 2007-11-27 Anders Carlsson <andersca@apple.com> |
| 25424 | |
| 25425 | Reviewed by Adam. |
| 25426 | |
| 25427 | Make PropertyNameArray and ScopeChain COMEnumVariant friendly. |
| 25428 | |
| 25429 | * kjs/PropertyNameArray.cpp: |
| 25430 | (KJS::PropertyNameArray::swap): |
| 25431 | Implement PropertyNameArray::swap. |
| 25432 | |
| 25433 | * kjs/PropertyNameArray.h: |
| 25434 | Add ValueType typedef. Replace PropertyNameArrayIterator with |
| 25435 | PropertyNameArray::const_iterator. |
| 25436 | |
| 25437 | * kjs/nodes.cpp: |
| 25438 | (KJS::ForInNode::execute): |
| 25439 | * kjs/scope_chain.cpp: |
| 25440 | (KJS::ScopeChain::print): |
| 25441 | Update for changes to PropertyNameArray. |
| 25442 | |
| 25443 | * kjs/scope_chain.h: |
| 25444 | Add const_iterator and ValueType typedef. |
| 25445 | |
| 25446 | 2007-11-27 Anders Carlsson <andersca@apple.com> |
| 25447 | |
| 25448 | Reviewed by Darin. |
| 25449 | |
| 25450 | Add a ValueType typedef. |
| 25451 | |
| 25452 | * wtf/Vector.h: |
| 25453 | |
| 25454 | 2007-11-26 Darin Adler <darin@apple.com> |
| 25455 | |
| 25456 | Reviewed by Mitz. |
| 25457 | |
| 25458 | - fix http://bugs.webkit.org/show_bug.cgi?id=16096 |
| 25459 | REGRESSION (r26653-r26699): Plaxo.com addressbook does not load in webkit nightlies |
| 25460 | |
| 25461 | Test: fast/js/regexp-overflow.html |
| 25462 | |
| 25463 | * pcre/pcre_compile.cpp: (calculateCompiledPatternLengthAndFlags): |
| 25464 | Removed a stray "ptr++" that I added by accident when merging the |
| 25465 | changes between PCRE 6.4 and 6.5. |
| 25466 | |
| 25467 | 2007-11-26 Geoffrey Garen <ggaren@apple.com> |
| 25468 | |
| 25469 | Reviewed by Kevin McCullough. |
| 25470 | |
| 25471 | Fixed <rdar://problem/5597937> REGRESSION (r27126): Drosera does not |
| 25472 | show variables (can't enumerate ActivationImp properties) |
| 25473 | |
| 25474 | Implemented a custom ActivationImp::getPropertyNames, since |
| 25475 | ActivationImp now uses a custom property storage mechanism for local |
| 25476 | variables. |
| 25477 | |
| 25478 | * kjs/function.cpp: |
| 25479 | (KJS::ActivationImp::getPropertyNames): |
| 25480 | * kjs/function.h: |
| 25481 | |
| 25482 | 2007-11-26 Alp Toker <alp@atoker.com> |
| 25483 | |
| 25484 | GTK+/Qt/Wx build fix for breakage introduced in r28039. |
| 25485 | |
| 25486 | * ForwardingHeaders/JavaScriptCore/JSRetainPtr.h: Added. |
| 25487 | |
| 25488 | 2007-11-24 Laszlo Gombos <laszlo.gombos@gmail.com> |
| 25489 | |
| 25490 | Reviewed by Maciej Stachowiak. |
| 25491 | |
| 25492 | Fix minor compiler warning (GCC 4.1.3) |
| 25493 | |
| 25494 | * pcre/pcre_internal.h: |
| 25495 | * pcre/pcre_ucp_searchfuncs.cpp: |
| 25496 | (_pcre_ucp_othercase): |
| 25497 | |
| 25498 | 2007-11-25 Mark Rowe <mrowe@apple.com> |
| 25499 | |
| 25500 | Reviewed by Dan Bernstein. |
| 25501 | |
| 25502 | Fix http://bugs.webkit.org/show_bug.cgi?id=16129 |
| 25503 | Bug 16129: REGRESSION (r27761-r27811): malloc error while visiting http://mysit.es (crashes release build) |
| 25504 | |
| 25505 | * pcre/pcre_compile.cpp: Change errorcode to be passed by reference so that any error code is propagated |
| 25506 | to our caller like they expect. |
| 25507 | |
| 25508 | 2007-11-23 Kevin Ollivier <kevino@theolliviers.com> |
| 25509 | |
| 25510 | MSVC7 build fix. (rand_s doesn't exist there) |
| 25511 | |
| 25512 | Reviewed by Adam Roben. |
| 25513 | |
| 25514 | * kjs/config.h: |
| 25515 | * wtf/MathExtras.h: |
| 25516 | |
| 25517 | 2007-11-23 Kevin Ollivier <kevino@theolliviers.com> |
| 25518 | |
| 25519 | wx build fix. Move WX_PYTHON logic into project build settings, |
| 25520 | add WebKitLibraries dirs on Win, and explicitly include JSCore |
| 25521 | headers in testkjs rather than getting them from a template. |
| 25522 | (Include dir order of JSCore/WTF and ICU headers is important due |
| 25523 | to wtf/unicode/utf8.h.) |
| 25524 | |
| 25525 | * jscore.bkl: |
| 25526 | |
| 25527 | 2007-11-23 Simon Hausmann <hausmann@webkit.org> |
| 25528 | |
| 25529 | Reviewed by George Staikos <staikos@kde.org>. |
| 25530 | |
| 25531 | Fix make (dist)clean on Windows. |
| 25532 | |
| 25533 | OBJECTS_DIR_WTR does not exist anymore, use GENERATED_SOURCES_DIR. |
| 25534 | |
| 25535 | |
| 25536 | * JavaScriptCore.pri: |
| 25537 | * pcre/pcre.pri: |
| 25538 | |
| 25539 | 2007-11-22 Simon Hausmann <hausmann@kde.org> |
| 25540 | |
| 25541 | Reviewed by George. |
| 25542 | |
| 25543 | Make the directory of where to put the generated sources configurable through the GENERATED_SOURCE_DIR variable |
| 25544 | |
| 25545 | * JavaScriptCore.pri: |
| 25546 | * pcre/pcre.pri: |
| 25547 | |
| 25548 | 2007-11-22 Simon Hausmann <hausmann@kde.org> |
| 25549 | |
| 25550 | Reviewed by George. |
| 25551 | |
| 25552 | Centralize the setup for all the extra compilers in a addExtraCompiler function. |
| 25553 | |
| 25554 | This allows adding a "generated_files" target that builds all generated files using "make generated_files". |
| 25555 | For the build inside Qt we do not generate actual rules for the extra compilers but instead |
| 25556 | do the variable substitution of compiler.output manually and add the generated sources to SOURCES. |
| 25557 | |
| 25558 | * JavaScriptCore.pri: |
| 25559 | * pcre/pcre.pri: |
| 25560 | |
| 25561 | 2007-11-20 Mark Rowe <mrowe@apple.com> |
| 25562 | |
| 25563 | Reviewed by Tim Hatcher. |
| 25564 | |
| 25565 | <rdar://problem/5602936> Need to resolve new GCC 4.2 warnings |
| 25566 | |
| 25567 | Fix all warnings emitted by GCC 4.2 when building JavaScriptCore. This allows builds with |
| 25568 | -Werror to succeed. At present they will crash when executed due to code that is not safe |
| 25569 | under strict aliasing (<rdar://problem/5536806>). |
| 25570 | |
| 25571 | * Configurations/Base.xcconfig: Remove the -Wno-long-double flag. |
| 25572 | * kjs/date_object.cpp: |
| 25573 | (KJS::formatTime): Test whether the stack-allocated string is empty rather than at a non-null address. |
| 25574 | * kjs/dtoa.cpp: |
| 25575 | (Bigint::): Tweak formatting to silence warnings. |
| 25576 | * pcre/pcre_exec.cpp: |
| 25577 | (match): Tweak formatting to silence warnings |
| 25578 | * wtf/Assertions.cpp: Add printf format attribute to functions that warrant it. |
| 25579 | * wtf/Assertions.h: Ditto. |
| 25580 | |
| 25581 | 2007-11-19 Kevin Ollivier <kevino@theolliviers.com> |
| 25582 | |
| 25583 | wx port build fix (wx headers include ctype functions). |
| 25584 | |
| 25585 | * kjs/config.h: |
| 25586 | |
| 25587 | 2007-11-19 Kevin Ollivier <kevino@theolliviers.com> |
| 25588 | |
| 25589 | Remove outdated and unused Windows port files. |
| 25590 | |
| 25591 | Reviewed by Adam Roben. |
| 25592 | |
| 25593 | * Makefile.vc: Removed. |
| 25594 | * README-Win32.txt: Removed. |
| 25595 | |
| 25596 | 2007-11-18 Eric Seidel <eric@webkit.org> |
| 25597 | |
| 25598 | Reviewed by Oliver. |
| 25599 | |
| 25600 | * tests/mozilla/jsDriver.pl: exit non-0 when user aborts test run |
| 25601 | |
| 25602 | 2007-11-17 Mark Rowe <mrowe@apple.com> |
| 25603 | |
| 25604 | Reviewed by Darin Adler. |
| 25605 | |
| 25606 | Fix: <rdar://problem/5607032> REGRESSION: testapi exits with assertion failure in debug build |
| 25607 | <rdar://problem/5440659> JSGlobalContextCreate throws away globalObjectClass's prototype |
| 25608 | http://bugs.webkit.org/show_bug.cgi?id=16033 |
| 25609 | |
| 25610 | Split Interpreter's initialization into two distinct steps: the creation of the global prototypes |
| 25611 | and constructors, and storing them on the global object. This allows JSClassRef's passed to |
| 25612 | JSGlobalContextCreate to be instantiated with the correct prototype. |
| 25613 | |
| 25614 | * API/JSCallbackObject.cpp: Assert at compile-time that the custom global object will fit in a collector cell. |
| 25615 | * API/JSCallbackObject.h: |
| 25616 | * API/JSCallbackObjectFunctions.h: |
| 25617 | (KJS::::JSCallbackObject): |
| 25618 | (KJS::::init): |
| 25619 | * API/JSContextRef.cpp: |
| 25620 | (JSGlobalContextCreate): Construct and set the interpreter's global object separately. When globalObjectClass |
| 25621 | is passed we need to set the interpreter's global object before doing the JSCallbackObject's initialization to |
| 25622 | prevent any JSObjectInitializeCallback's being invoked before a global object is set. |
| 25623 | * API/testapi.c: |
| 25624 | (globalObject_initialize): Test the object passed in is correct and that it has the expected global properties. |
| 25625 | (globalObject_get): |
| 25626 | (globalObject_set): |
| 25627 | (main): |
| 25628 | * API/testapi.js: Test that any static properties exposed by the global object's custom class are found. |
| 25629 | * JavaScriptCore.exp: |
| 25630 | * bindings/testbindings.cpp: |
| 25631 | (main): Update for changes in Interpreter method signatures. |
| 25632 | * bindings/testbindings.mm: |
| 25633 | (main): Ditto. |
| 25634 | * kjs/ExecState.cpp: |
| 25635 | (KJS::ExecState::ExecState): |
| 25636 | (KJS::ExecState::mark): |
| 25637 | (KJS::ExecState::setGlobalObject): |
| 25638 | * kjs/ExecState.h: Rename scope to m_scopeChain. |
| 25639 | * kjs/interpreter.cpp: |
| 25640 | (KJS::Interpreter::Interpreter): |
| 25641 | (KJS::Interpreter::init): |
| 25642 | (KJS::Interpreter::globalObject): |
| 25643 | (KJS::Interpreter::setGlobalObject): |
| 25644 | (KJS::Interpreter::resetGlobalObjectProperties): |
| 25645 | (KJS::Interpreter::createObjectsForGlobalObjectProperties): |
| 25646 | (KJS::Interpreter::setGlobalObjectProperties): Switch to using putDirect to ensure that the global object's put method |
| 25647 | cannot interfere with setting of the global properties. This prevents a user-written JSClassRef from attempting to |
| 25648 | call back into JavaScript from the initialization of the global object's members. |
| 25649 | * kjs/interpreter.h: |
| 25650 | * kjs/testkjs.cpp: |
| 25651 | (setupInterpreter): Update for changes in Interpreter method signatures. |
| 25652 | |
| 25653 | 2007-11-17 Mark Rowe <mrowe@apple.com> |
| 25654 | |
| 25655 | Reviewed by Sam Weinig. |
| 25656 | |
| 25657 | Prevent testapi from reporting false leaks. Clear out local variables pointing at |
| 25658 | JSObjectRefs to allow their values to be collected. |
| 25659 | |
| 25660 | * API/testapi.c: |
| 25661 | (main): |
| 25662 | |
| 25663 | 2007-11-17 Mark Rowe <mrowe@apple.com> |
| 25664 | |
| 25665 | Reviewed by Sam Weinig. |
| 25666 | |
| 25667 | Prevent testapi from crashing if testapi.js can not be found by nil-checking the result of createStringWithContentsOfFile. |
| 25668 | |
| 25669 | * API/testapi.c: |
| 25670 | (main): |
| 25671 | |
| 25672 | 2007-11-17 Alp Toker <alp@atoker.com> |
| 25673 | |
| 25674 | Reviewed by Eric. |
| 25675 | |
| 25676 | http://bugs.webkit.org/show_bug.cgi?id=16032 |
| 25677 | JS minidom is not portable |
| 25678 | |
| 25679 | Use a plain UTF-8 string instead of a CFString. |
| 25680 | |
| 25681 | Print to stdout, not stderr like CFShow() would have done, since that |
| 25682 | behaviour seems unintentional. |
| 25683 | |
| 25684 | * API/minidom.c: |
| 25685 | (main): |
| 25686 | |
| 25687 | 2007-11-17 Steve Falkenburg <sfalken@apple.com> |
| 25688 | |
| 25689 | Windows build fix. |
| 25690 | |
| 25691 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 25692 | |
| 25693 | 2007-11-16 Mark Rowe <mrowe@apple.com> |
| 25694 | |
| 25695 | Windows build fix. |
| 25696 | |
| 25697 | * kjs/lexer.cpp: |
| 25698 | (KJS::Lexer::record8): |
| 25699 | |
| 25700 | 2007-11-16 Mark Rowe <mrowe@apple.com> |
| 25701 | |
| 25702 | Reviewed by Eric. |
| 25703 | |
| 25704 | Replace strings, identifier, buffer8 and buffer16 members of Lexer with vectors. |
| 25705 | SunSpider claims this is a 0.7% speedup. |
| 25706 | |
| 25707 | * kjs/lexer.cpp: |
| 25708 | (KJS::Lexer::Lexer): |
| 25709 | (KJS::Lexer::lex): |
| 25710 | (KJS::Lexer::record8): |
| 25711 | (KJS::Lexer::record16): |
| 25712 | (KJS::Lexer::scanRegExp): |
| 25713 | (KJS::Lexer::clear): |
| 25714 | (KJS::Lexer::makeIdentifier): |
| 25715 | (KJS::Lexer::makeUString): |
| 25716 | * kjs/lexer.h: |
| 25717 | * kjs/ustring.cpp: |
| 25718 | (KJS::UString::UString): Add a convenience constructor that takes a const Vector<UChar>&. |
| 25719 | * kjs/ustring.h: |
| 25720 | |
| 25721 | 2007-11-16 Adam Roben <aroben@apple.com> |
| 25722 | |
| 25723 | Windows build fix |
| 25724 | |
| 25725 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Add a new include path |
| 25726 | and ignore the int -> bool conversion warning. |
| 25727 | |
| 25728 | 2007-11-16 Alexey Proskuryakov <ap@webkit.org> |
| 25729 | |
| 25730 | Fix Windows debug build. |
| 25731 | Rubber-stamped by Eric |
| 25732 | |
| 25733 | * pcre/pcre_exec.cpp: (match): Removed ASSERT_NOT_REACHED assertions that were making MSVC |
| 25734 | complain about unreachable code. |
| 25735 | |
| 25736 | 2007-11-15 Mark Rowe <mrowe@apple.com> |
| 25737 | |
| 25738 | Gtk build fix. |
| 25739 | |
| 25740 | * kjs/Parser.cpp: |
| 25741 | |
| 25742 | 2007-11-15 Mark Rowe <mrowe@apple.com> |
| 25743 | |
| 25744 | Mac build and header search path sanity fix. |
| 25745 | |
| 25746 | Reviewed by Sam Weinig and Tim Hatcher. |
| 25747 | |
| 25748 | Move base setting for HEADER_SEARCH_PATHS into Base.xcconfig, and extend |
| 25749 | it in JavaScriptCore.xcconfig. This removes the need to override it on a |
| 25750 | per-target basis inside the .xcodeproj file. |
| 25751 | |
| 25752 | * Configurations/Base.xcconfig: |
| 25753 | * Configurations/JavaScriptCore.xcconfig: |
| 25754 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 25755 | |
| 25756 | 2007-11-15 Mark Rowe <mrowe@apple.com> |
| 25757 | |
| 25758 | Qt build fix. |
| 25759 | |
| 25760 | * kjs/Parser.h: |
| 25761 | |
| 25762 | 2007-11-15 Geoffrey Garen <ggaren@apple.com> |
| 25763 | |
| 25764 | Reviewed by Eric Seidel. |
| 25765 | |
| 25766 | Another round of grammar / parsing cleanup. |
| 25767 | |
| 25768 | 1. Created distinct parser calls for parsing function bodies vs |
| 25769 | programs. This will help later with optimizing global variable access. |
| 25770 | |
| 25771 | 2. Turned Parser into a singleton. Cleaned up Lexer's singleton |
| 25772 | interface. |
| 25773 | |
| 25774 | 3. Modified Lexer to free a little more memory when done lexing. (Added |
| 25775 | FIXMEs for similar issues that I didn't fix.) |
| 25776 | |
| 25777 | 4. Changed Lexer::makeIdentifier and Lexer::makeUString to start |
| 25778 | respecting the arguments passed to them. (No behavior change, but this |
| 25779 | problem could have caused serious problems for an unsuspecting user of |
| 25780 | these functions.) |
| 25781 | |
| 25782 | 5. Removed KJS_DEBUG_MEM because it was bit-rotted. |
| 25783 | |
| 25784 | 6. Removed Parser::prettyPrint because the same work was simpler to do |
| 25785 | at the call site. |
| 25786 | |
| 25787 | 7. Some renames: |
| 25788 | |
| 25789 | "Parser::accept" => "Parser::didFinishParsing" |
| 25790 | "Parser::sid" => "Parser::m_sourceID" |
| 25791 | "Lexer::doneParsing" => "Lexer::clear" |
| 25792 | "sid" => "sourceId" |
| 25793 | "lineno" => "lineNo" |
| 25794 | |
| 25795 | * JavaScriptCore.exp: |
| 25796 | * kjs/Parser.cpp: |
| 25797 | (KJS::Parser::Parser): |
| 25798 | (KJS::Parser::parseProgram): |
| 25799 | (KJS::Parser::parseFunctionBody): |
| 25800 | (KJS::Parser::parse): |
| 25801 | (KJS::Parser::didFinishParsing): |
| 25802 | (KJS::parser): |
| 25803 | * kjs/Parser.h: |
| 25804 | (KJS::Parser::sourceId): |
| 25805 | * kjs/function.cpp: |
| 25806 | (KJS::GlobalFuncImp::callAsFunction): |
| 25807 | * kjs/function_object.cpp: |
| 25808 | (FunctionObjectImp::construct): |
| 25809 | * kjs/grammar.y: |
| 25810 | * kjs/interpreter.cpp: |
| 25811 | (KJS::Interpreter::checkSyntax): |
| 25812 | (KJS::Interpreter::evaluate): |
| 25813 | * kjs/interpreter.h: |
| 25814 | * kjs/lexer.cpp: |
| 25815 | (kjsyylex): |
| 25816 | (KJS::lexer): |
| 25817 | (KJS::Lexer::Lexer): |
| 25818 | (KJS::Lexer::~Lexer): |
| 25819 | (KJS::Lexer::scanRegExp): |
| 25820 | (KJS::Lexer::doneParsing): |
| 25821 | (KJS::Lexer::makeIdentifier): |
| 25822 | (KJS::Lexer::makeUString): |
| 25823 | * kjs/lexer.h: |
| 25824 | (KJS::Lexer::pattern): |
| 25825 | (KJS::Lexer::flags): |
| 25826 | (KJS::Lexer::sawError): |
| 25827 | * kjs/nodes.cpp: |
| 25828 | (KJS::Node::Node): |
| 25829 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 25830 | * kjs/nodes.h: |
| 25831 | * kjs/testkjs.cpp: |
| 25832 | (prettyPrintScript): |
| 25833 | (kjsmain): |
| 25834 | * kjs/ustring.cpp: |
| 25835 | * kjs/ustring.h: |
| 25836 | |
| 25837 | 2007-11-15 Oliver Hunt <oliver@apple.com> |
| 25838 | |
| 25839 | Reviewed by Darin. |
| 25840 | |
| 25841 | <rdar://problem/5601548> REGRESSION: All SourceElements and their children leak after a syntax error |
| 25842 | |
| 25843 | Add a stub node to maintain the Vector of SourceElements until assignment. |
| 25844 | |
| 25845 | * kjs/grammar.y: |
| 25846 | * kjs/nodes.h: |
| 25847 | (KJS::SourceElementsStub::SourceElementsStub): |
| 25848 | (KJS::SourceElementsStub::append): |
| 25849 | (KJS::SourceElementsStub::release): |
| 25850 | (KJS::SourceElementsStub::): |
| 25851 | (KJS::SourceElementsStub::precedence): |
| 25852 | |
| 25853 | 2007-11-15 Eric Seidel <eric@webkit.org> |
| 25854 | |
| 25855 | Reviewed by Sam. |
| 25856 | |
| 25857 | Abstract most of RMATCH into MatchStack functions. |
| 25858 | |
| 25859 | SunSpider claims this, combined with the last 2 patches was a 1% speedup, 10% for dna-regexp. |
| 25860 | |
| 25861 | * pcre/pcre_exec.cpp: |
| 25862 | (MatchStack::canUseStackBufferForNextFrame): |
| 25863 | (MatchStack::allocateNextFrame): |
| 25864 | (MatchStack::pushNewFrame): |
| 25865 | (MatchStack::frameIsStackAllocated): |
| 25866 | (MatchStack::popCurrentFrame): |
| 25867 | (MatchStack::unrollAnyHeapAllocatedFrames): |
| 25868 | (match): |
| 25869 | |
| 25870 | 2007-11-15 Eric Seidel <eric@webkit.org> |
| 25871 | |
| 25872 | Reviewed by Sam. |
| 25873 | |
| 25874 | Remove RETURN_ERROR, add MatchStack |
| 25875 | |
| 25876 | * pcre/pcre_exec.cpp: |
| 25877 | (MatchStack::MatchStack): |
| 25878 | (MatchStack::unrollAnyHeapAllocatedFrames): |
| 25879 | (matchError): |
| 25880 | (match): |
| 25881 | |
| 25882 | 2007-11-15 Eric Seidel <eric@webkit.org> |
| 25883 | |
| 25884 | Reviewed by Sam. |
| 25885 | |
| 25886 | Clean up match function to match WebKit style |
| 25887 | |
| 25888 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 25889 | * pcre/pcre_exec.cpp: |
| 25890 | (match): |
| 25891 | |
| 25892 | 2007-11-15 Steve Falkenburg <sfalken@apple.com> |
| 25893 | |
| 25894 | Windows build fix. |
| 25895 | |
| 25896 | * JavaScriptCore.vcproj/JavaScriptCore.make: |
| 25897 | |
| 25898 | 2007-11-14 Alexey Proskuryakov <ap@webkit.org> |
| 25899 | |
| 25900 | Reviewed by Darin. |
| 25901 | |
| 25902 | http://bugs.webkit.org/show_bug.cgi?id=15982 |
| 25903 | Improve JSString UTF-8 decoding |
| 25904 | |
| 25905 | * API/JSStringRef.cpp: |
| 25906 | (JSStringCreateWithUTF8CString): Use strict decoding, return 0 on error. |
| 25907 | |
| 25908 | * wtf/unicode/UTF8.cpp: |
| 25909 | (WTF::Unicode::convertUTF16ToUTF8): |
| 25910 | (WTF::Unicode::convertUTF8ToUTF16): |
| 25911 | * wtf/unicode/UTF8.h: |
| 25912 | Made these function names start with a lower case letter. |
| 25913 | |
| 25914 | * kjs/ustring.cpp: (KJS::UString::UTF8String): Updated for the above renaming. |
| 25915 | |
| 25916 | * bindings/c/c_utility.cpp: |
| 25917 | (KJS::Bindings::convertUTF8ToUTF16WithLatin1Fallback): Renamed to highlight the difference |
| 25918 | from convertUTF8ToUTF16 in wtf/unicode. |
| 25919 | (KJS::Bindings::convertNPStringToUTF16): Updated for the above renaming. |
| 25920 | (KJS::Bindings::identifierFromNPIdentifier): Ditto. |
| 25921 | * bindings/c/c_utility.h: Made convertUTF8ToUTF16WithLatin1Fallback() a file static. |
| 25922 | |
| 25923 | 2007-11-14 Sam Weinig <sam@webkit.org> |
| 25924 | |
| 25925 | Rubber-stamped by Anders. |
| 25926 | |
| 25927 | Fix the Xcode project file after it was messed up in r27402. |
| 25928 | |
| 25929 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 25930 | |
| 25931 | 2007-11-14 Eric Seidel <eric@webkit.org> |
| 25932 | |
| 25933 | Reviewed by Oliver. |
| 25934 | |
| 25935 | More PCRE style cleanup. |
| 25936 | |
| 25937 | * pcre/pcre_compile.cpp: |
| 25938 | (compile_regex): |
| 25939 | |
| 25940 | 2007-11-14 Adam Roben <aroben@apple.com> |
| 25941 | |
| 25942 | Clean up the bison conflict checking script |
| 25943 | |
| 25944 | Reviewed by Geoff. |
| 25945 | |
| 25946 | * DerivedSources.make: |
| 25947 | |
| 25948 | 2007-11-14 Eric Seidel <eric@webkit.org> |
| 25949 | |
| 25950 | Reviewed by Geoff. |
| 25951 | |
| 25952 | Another round of PCRE cleanups: inlines |
| 25953 | |
| 25954 | SunSpider claims that this, combined with my previous PCRE cleanup were a 0.7% speedup, go figure. |
| 25955 | |
| 25956 | * pcre/pcre_compile.cpp: |
| 25957 | (jsRegExpCompile): |
| 25958 | * pcre/pcre_exec.cpp: |
| 25959 | (match): |
| 25960 | (jsRegExpExecute): |
| 25961 | * pcre/pcre_internal.h: |
| 25962 | (PUT): |
| 25963 | (GET): |
| 25964 | (PUT2): |
| 25965 | (GET2): |
| 25966 | (isNewline): |
| 25967 | |
| 25968 | 2007-11-14 Eric Seidel <eric@webkit.org> |
| 25969 | |
| 25970 | Reviewed by Sam. |
| 25971 | |
| 25972 | Give PCRE a (small) bath. |
| 25973 | Fix some formating and break things off into separate functions |
| 25974 | http://bugs.webkit.org/show_bug.cgi?id=15993 |
| 25975 | |
| 25976 | * pcre/pcre_compile.cpp: |
| 25977 | (calculateCompiledPatternLengthAndFlags): |
| 25978 | (printCompiledRegExp): |
| 25979 | (returnError): |
| 25980 | (jsRegExpCompile): |
| 25981 | * pcre/pcre_internal.h: |
| 25982 | (compile_data::compile_data): |
| 25983 | |
| 25984 | 2007-11-14 Geoffrey Garen <ggaren@apple.com> |
| 25985 | |
| 25986 | Reviewed by Eric Seidel. |
| 25987 | |
| 25988 | Cleaned up the JavaScript grammar a bit. |
| 25989 | |
| 25990 | 1. Changed BlockNode to always hold a child vector (which may be empty), |
| 25991 | eliminating a few NULL-check branches in the common execution case. |
| 25992 | |
| 25993 | 2. Changed the Block production to correctly report its starting and |
| 25994 | ending line numbers to the debugger. (It used to report its ending line |
| 25995 | as its starting line.) Also, removed duplicate line-reporting code |
| 25996 | inside the BlockNode constructor. |
| 25997 | |
| 25998 | 3. Moved curly braces up from FunctionBody production into parent |
| 25999 | productions. (I had to move the line number reporting code, too, since |
| 26000 | it depends on the location of the curly braces.) This matches the ECMA |
| 26001 | spec more closely, and makes some future changes I plan easier. |
| 26002 | |
| 26003 | 4. Fixed statementList* convenience functions to deal appropriately with |
| 26004 | empty Vectors. |
| 26005 | |
| 26006 | SunSpider reports a small and statistically insignificant speedup. |
| 26007 | |
| 26008 | * kjs/grammar.y: |
| 26009 | * kjs/nodes.cpp: |
| 26010 | (KJS::statementListPushFIFO): |
| 26011 | (KJS::statementListGetDeclarations): |
| 26012 | (KJS::statementListInitializeDeclarationStack): |
| 26013 | (KJS::statementListInitializeVariableAccessStack): |
| 26014 | (KJS::BlockNode::BlockNode): |
| 26015 | (KJS::BlockNode::optimizeVariableAccess): |
| 26016 | (KJS::BlockNode::getDeclarations): |
| 26017 | (KJS::BlockNode::execute): |
| 26018 | (KJS::FunctionBodyNode::initializeDeclarationStacks): |
| 26019 | (KJS::FunctionBodyNode::optimizeVariableAccess): |
| 26020 | |
| 26021 | 2007-11-13 Anders Carlsson <andersca@apple.com> |
| 26022 | |
| 26023 | Add RefCounted.h (And remove Shared.h) |
| 26024 | |
| 26025 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 26026 | |
| 26027 | 2007-11-13 Geoffrey Garen <ggaren@apple.com> |
| 26028 | |
| 26029 | Build fix. |
| 26030 | |
| 26031 | * kjs/regexp.h: |
| 26032 | |
| 26033 | 2007-11-13 Geoffrey Garen <ggaren@apple.com> |
| 26034 | |
| 26035 | Reviewed by Anders Carlsson. |
| 26036 | |
| 26037 | Renamed Shared to RefCounted. |
| 26038 | |
| 26039 | * API/JSClassRef.h: |
| 26040 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 26041 | * kjs/interpreter.h: |
| 26042 | * kjs/regexp.h: |
| 26043 | * wtf/RefCounted.h: Copied from JavaScriptCore/wtf/Shared.h. |
| 26044 | (WTF::RefCounted::RefCounted): |
| 26045 | * wtf/Shared.h: Removed. |
| 26046 | |
| 26047 | 2007-11-13 Adam Roben <aroben@apple.com> |
| 26048 | |
| 26049 | Build fix |
| 26050 | |
| 26051 | Reviewed by Geoff. |
| 26052 | |
| 26053 | * kjs/regexp.h: Added a missing #include. |
| 26054 | |
| 26055 | 2007-11-13 Geoffrey Garen <ggaren@apple.com> |
| 26056 | |
| 26057 | Reviewed by Sam Weinig. |
| 26058 | |
| 26059 | Moved Shared.h into wtf so it could be used in more places. Deployed |
| 26060 | Shared in places where JSCore previously had hand-rolled ref-counting |
| 26061 | classes. |
| 26062 | |
| 26063 | * API/JSClassRef.cpp: |
| 26064 | (OpaqueJSClass::OpaqueJSClass): |
| 26065 | * API/JSClassRef.h: |
| 26066 | * API/JSObjectRef.cpp: |
| 26067 | (JSClassRetain): |
| 26068 | (JSClassRelease): |
| 26069 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 26070 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 26071 | * kjs/interpreter.cpp: |
| 26072 | (KJS::Interpreter::init): |
| 26073 | * kjs/interpreter.h: |
| 26074 | * kjs/regexp.cpp: |
| 26075 | (KJS::RegExp::RegExp): |
| 26076 | * kjs/regexp.h: |
| 26077 | * wtf/Shared.h: Copied from WebCore/platform/Shared.h. |
| 26078 | |
| 26079 | 2007-11-13 Eric Seidel <eric@webkit.org> |
| 26080 | |
| 26081 | Reviewed by Maciej. |
| 26082 | |
| 26083 | Add an ASSERT to getTruncatedInt32 to enforce proper usage. |
| 26084 | Best part about this patch? It doesn't break the web! |
| 26085 | |
| 26086 | * kjs/JSImmediate.h: |
| 26087 | (KJS::JSImmediate::getTruncatedInt32): |
| 26088 | (KJS::JSImmediate::toDouble): |
| 26089 | (KJS::JSImmediate::getUInt32): |
| 26090 | |
| 26091 | 2007-11-13 Alexey Proskuryakov <ap@webkit.org> |
| 26092 | |
| 26093 | Windows build fix. |
| 26094 | |
| 26095 | * bindings/c/c_utility.cpp: |
| 26096 | (KJS::Bindings::convertUTF8ToUTF16): |
| 26097 | * kjs/ustring.cpp: |
| 26098 | (KJS::UString::UTF8String): |
| 26099 | * wtf/unicode/UTF8.cpp: |
| 26100 | (WTF::Unicode::ConvertUTF8ToUTF16): |
| 26101 | |
| 26102 | 2007-11-13 Darin Adler <darin@apple.com> |
| 26103 | |
| 26104 | Reviewed by Geoff. |
| 26105 | |
| 26106 | - fix http://bugs.webkit.org/show_bug.cgi?id=11231 |
| 26107 | RegExp bug when handling newline characters |
| 26108 | and a number of other differences between PCRE behvior |
| 26109 | and JavaScript regular expressions: |
| 26110 | |
| 26111 | + single-digit sequences like \4 should be treated as octal |
| 26112 | character constants, unless there is a sufficient number |
| 26113 | of brackets for them to be treated as backreferences |
| 26114 | |
| 26115 | + \8 turns into the character "8", not a binary zero character |
| 26116 | followed by "8" (same for 9) |
| 26117 | |
| 26118 | + only the first 3 digits should be considered part of an |
| 26119 | octal character constant (the old behavior was to decode |
| 26120 | an arbitrarily long sequence and then mask with 0xFF) |
| 26121 | |
| 26122 | + if \x is followed by anything other than two valid hex digits, |
| 26123 | then it should simply be treated a the letter "x"; that includes |
| 26124 | not supporting the \x{41} syntax |
| 26125 | |
| 26126 | + if \u is followed by anything less than four valid hex digits, |
| 26127 | then it should simply be treated a the letter "u" |
| 26128 | |
| 26129 | + an extra "+" should be a syntax error, rather than being treated |
| 26130 | as the "possessive quantifier" |
| 26131 | |
| 26132 | + if a "]" character appears immediately after a "[" character that |
| 26133 | starts a character class, then that's an empty character class, |
| 26134 | rather than being the start of a character class that includes a |
| 26135 | "]" character |
| 26136 | |
| 26137 | + a "$" should not match a terminating newline; we could have gotten |
| 26138 | PCRE to handle this the way we wanted by passing an appropriate option |
| 26139 | |
| 26140 | Test: fast/js/regexp-no-extensions.html |
| 26141 | |
| 26142 | * pcre/pcre_compile.cpp: |
| 26143 | (check_escape): Check backreferences against bracount to catch both |
| 26144 | overflows and things that should be treated as octal. Rewrite octal |
| 26145 | loop to not go on indefinitely. Rewrite both hex loops to match and |
| 26146 | remove \x{} support. |
| 26147 | (compile_branch): Restructure loops so that we don't special-case a "]" |
| 26148 | at the beginning of a character class. Remove code that treated "+" as |
| 26149 | the possessive quantifier. |
| 26150 | (jsRegExpCompile): Change the "]" handling here too. |
| 26151 | |
| 26152 | * pcre/pcre_exec.cpp: (match): Changed CIRC to match the DOLL implementation. |
| 26153 | Changed DOLL to remove handling of "terminating newline", a Perl concept |
| 26154 | which we don't need. |
| 26155 | |
| 26156 | * tests/mozilla/expected.html: Two tests are fixed now: |
| 26157 | ecma_3/RegExp/regress-100199.js and ecma_3/RegExp/regress-188206.js. |
| 26158 | One test fails now: ecma_3/RegExp/perlstress-002.js -- our success before |
| 26159 | was due to a bug (we treated all 1-character numeric escapes as backreferences). |
| 26160 | The date tests also now both expect success -- whatever was making them fail |
| 26161 | before was probably due to the time being close to a DST shift; maybe we need |
| 26162 | to get rid of those tests. |
| 26163 | |
| 26164 | 2007-11-13 Darin Adler <darin@apple.com> |
| 26165 | |
| 26166 | * kjs/JSImmediate.h: (KJS::JSImmediate::getTruncatedInt32): |
| 26167 | Remove too-strong assert that was firing constantly and preventing even basic |
| 26168 | web browsing from working in a debug build. This function is used in many |
| 26169 | cases where the immediate value is not a number; the assertion could perhaps |
| 26170 | be added back later with a bit of reorganization. |
| 26171 | |
| 26172 | 2007-11-13 Alp Toker <alp@atoker.com> |
| 26173 | |
| 26174 | Build fix for breakage to non-Mac builds introduced in r27746. |
| 26175 | |
| 26176 | * kjs/ustring.cpp: |
| 26177 | |
| 26178 | 2007-11-13 Eric Seidel <eric@webkit.org> |
| 26179 | |
| 26180 | Reviewed by Maciej. |
| 26181 | |
| 26182 | Clean up evaluateToBoolean functions to use inlines instead of copy/paste code |
| 26183 | |
| 26184 | * kjs/JSImmediate.h: |
| 26185 | * kjs/nodes.cpp: |
| 26186 | (KJS::GreaterNode::inlineEvaluateToBoolean): |
| 26187 | (KJS::GreaterNode::evaluate): |
| 26188 | (KJS::LessEqNode::inlineEvaluateToBoolean): |
| 26189 | (KJS::LessEqNode::evaluate): |
| 26190 | (KJS::GreaterEqNode::inlineEvaluateToBoolean): |
| 26191 | (KJS::GreaterEqNode::evaluate): |
| 26192 | (KJS::InNode::evaluateToBoolean): |
| 26193 | (KJS::EqualNode::inlineEvaluateToBoolean): |
| 26194 | (KJS::EqualNode::evaluate): |
| 26195 | (KJS::NotEqualNode::inlineEvaluateToBoolean): |
| 26196 | (KJS::NotEqualNode::evaluate): |
| 26197 | (KJS::StrictEqualNode::inlineEvaluateToBoolean): |
| 26198 | (KJS::StrictEqualNode::evaluate): |
| 26199 | (KJS::NotStrictEqualNode::inlineEvaluateToBoolean): |
| 26200 | (KJS::NotStrictEqualNode::evaluate): |
| 26201 | * kjs/nodes.h: |
| 26202 | |
| 26203 | 2007-11-12 Geoffrey Garen <ggaren@apple.com> |
| 26204 | |
| 26205 | Reviewed by Sam Weinig. |
| 26206 | |
| 26207 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15958 |
| 26208 | base64 spends 1.1% of total time checking for special Infinity case |
| 26209 | |
| 26210 | Use a fast character test instead of calling strncmp. |
| 26211 | |
| 26212 | 1.1% speedup on string-base64. SunSpider reports a .4% speedup overall; |
| 26213 | Sharks reports only .1%. Who are you going to believe? Huh? |
| 26214 | |
| 26215 | * kjs/ustring.cpp: |
| 26216 | (KJS::UString::toDouble): |
| 26217 | |
| 26218 | 2007-11-12 Eric Seidel <eric@webkit.org> |
| 26219 | |
| 26220 | Reviewed by Oliver. |
| 26221 | |
| 26222 | Add evaluateToInt32 and evaluateUInt32 methods and deploy them. |
| 26223 | Fix a few missing evaluateToBoolean methods |
| 26224 | Deploy all evaluateTo* functions to more nodes to avoid slowdowns |
| 26225 | http://bugs.webkit.org/show_bug.cgi?id=15950 |
| 26226 | |
| 26227 | SunSpider claims this is at least a 1.4% speedup. |
| 26228 | |
| 26229 | * kjs/JSImmediate.h: |
| 26230 | (KJS::JSImmediate::getTruncatedInt32): |
| 26231 | (KJS::JSImmediate::toDouble): |
| 26232 | (KJS::JSImmediate::getUInt32): |
| 26233 | * kjs/nodes.cpp: |
| 26234 | (KJS::ExpressionNode::evaluateToNumber): |
| 26235 | (KJS::ExpressionNode::evaluateToInt32): |
| 26236 | (KJS::ExpressionNode::evaluateToUInt32): |
| 26237 | (KJS::NumberNode::evaluateToInt32): |
| 26238 | (KJS::NumberNode::evaluateToUInt32): |
| 26239 | (KJS::ImmediateNumberNode::evaluateToInt32): |
| 26240 | (KJS::ImmediateNumberNode::evaluateToUInt32): |
| 26241 | (KJS::ResolveNode::evaluate): |
| 26242 | (KJS::ResolveNode::evaluateToNumber): |
| 26243 | (KJS::ResolveNode::evaluateToBoolean): |
| 26244 | (KJS::ResolveNode::evaluateToInt32): |
| 26245 | (KJS::ResolveNode::evaluateToUInt32): |
| 26246 | (KJS::LocalVarAccessNode::evaluateToInt32): |
| 26247 | (KJS::LocalVarAccessNode::evaluateToUInt32): |
| 26248 | (KJS::BracketAccessorNode::evaluateToNumber): |
| 26249 | (KJS::BracketAccessorNode::evaluateToBoolean): |
| 26250 | (KJS::BracketAccessorNode::evaluateToInt32): |
| 26251 | (KJS::BracketAccessorNode::evaluateToUInt32): |
| 26252 | (KJS::DotAccessorNode::inlineEvaluate): |
| 26253 | (KJS::DotAccessorNode::evaluate): |
| 26254 | (KJS::DotAccessorNode::evaluateToNumber): |
| 26255 | (KJS::DotAccessorNode::evaluateToBoolean): |
| 26256 | (KJS::DotAccessorNode::evaluateToInt32): |
| 26257 | (KJS::DotAccessorNode::evaluateToUInt32): |
| 26258 | (KJS::NewExprNode::inlineEvaluate): |
| 26259 | (KJS::NewExprNode::evaluate): |
| 26260 | (KJS::NewExprNode::evaluateToNumber): |
| 26261 | (KJS::NewExprNode::evaluateToBoolean): |
| 26262 | (KJS::NewExprNode::evaluateToInt32): |
| 26263 | (KJS::NewExprNode::evaluateToUInt32): |
| 26264 | (KJS::FunctionCallResolveNode::inlineEvaluate): |
| 26265 | (KJS::FunctionCallResolveNode::evaluate): |
| 26266 | (KJS::FunctionCallResolveNode::evaluateToNumber): |
| 26267 | (KJS::FunctionCallResolveNode::evaluateToBoolean): |
| 26268 | (KJS::FunctionCallResolveNode::evaluateToInt32): |
| 26269 | (KJS::FunctionCallResolveNode::evaluateToUInt32): |
| 26270 | (KJS::LocalVarFunctionCallNode::evaluate): |
| 26271 | (KJS::LocalVarFunctionCallNode::evaluateToNumber): |
| 26272 | (KJS::LocalVarFunctionCallNode::evaluateToBoolean): |
| 26273 | (KJS::LocalVarFunctionCallNode::evaluateToInt32): |
| 26274 | (KJS::LocalVarFunctionCallNode::evaluateToUInt32): |
| 26275 | (KJS::FunctionCallDotNode::evaluate): |
| 26276 | (KJS::FunctionCallDotNode::evaluateToNumber): |
| 26277 | (KJS::FunctionCallDotNode::evaluateToBoolean): |
| 26278 | (KJS::FunctionCallDotNode::evaluateToInt32): |
| 26279 | (KJS::FunctionCallDotNode::evaluateToUInt32): |
| 26280 | (KJS::PostDecLocalVarNode::inlineEvaluateToNumber): |
| 26281 | (KJS::PostDecLocalVarNode::evaluateToNumber): |
| 26282 | (KJS::PostDecLocalVarNode::evaluateToBoolean): |
| 26283 | (KJS::PostDecLocalVarNode::evaluateToInt32): |
| 26284 | (KJS::PostDecLocalVarNode::evaluateToUInt32): |
| 26285 | (KJS::typeStringForValue): |
| 26286 | (KJS::UnaryPlusNode::evaluate): |
| 26287 | (KJS::UnaryPlusNode::evaluateToBoolean): |
| 26288 | (KJS::UnaryPlusNode::evaluateToNumber): |
| 26289 | (KJS::UnaryPlusNode::evaluateToInt32): |
| 26290 | (KJS::BitwiseNotNode::inlineEvaluateToInt32): |
| 26291 | (KJS::BitwiseNotNode::evaluate): |
| 26292 | (KJS::BitwiseNotNode::evaluateToNumber): |
| 26293 | (KJS::BitwiseNotNode::evaluateToBoolean): |
| 26294 | (KJS::BitwiseNotNode::evaluateToInt32): |
| 26295 | (KJS::MultNode::evaluateToBoolean): |
| 26296 | (KJS::MultNode::evaluateToInt32): |
| 26297 | (KJS::MultNode::evaluateToUInt32): |
| 26298 | (KJS::DivNode::evaluateToInt32): |
| 26299 | (KJS::DivNode::evaluateToUInt32): |
| 26300 | (KJS::ModNode::evaluateToBoolean): |
| 26301 | (KJS::ModNode::evaluateToInt32): |
| 26302 | (KJS::ModNode::evaluateToUInt32): |
| 26303 | (KJS::AddNode::evaluateToNumber): |
| 26304 | (KJS::AddNode::evaluateToInt32): |
| 26305 | (KJS::AddNode::evaluateToUInt32): |
| 26306 | (KJS::AddNumbersNode::evaluateToInt32): |
| 26307 | (KJS::AddNumbersNode::evaluateToUInt32): |
| 26308 | (KJS::SubNode::evaluateToInt32): |
| 26309 | (KJS::SubNode::evaluateToUInt32): |
| 26310 | (KJS::LeftShiftNode::inlineEvaluateToInt32): |
| 26311 | (KJS::LeftShiftNode::evaluate): |
| 26312 | (KJS::LeftShiftNode::evaluateToNumber): |
| 26313 | (KJS::LeftShiftNode::evaluateToInt32): |
| 26314 | (KJS::RightShiftNode::inlineEvaluateToInt32): |
| 26315 | (KJS::RightShiftNode::evaluate): |
| 26316 | (KJS::RightShiftNode::evaluateToNumber): |
| 26317 | (KJS::RightShiftNode::evaluateToInt32): |
| 26318 | (KJS::UnsignedRightShiftNode::inlineEvaluateToUInt32): |
| 26319 | (KJS::UnsignedRightShiftNode::evaluate): |
| 26320 | (KJS::UnsignedRightShiftNode::evaluateToNumber): |
| 26321 | (KJS::UnsignedRightShiftNode::evaluateToInt32): |
| 26322 | (KJS::LessNode::inlineEvaluateToBoolean): |
| 26323 | (KJS::LessNode::evaluate): |
| 26324 | (KJS::LessNode::evaluateToBoolean): |
| 26325 | (KJS::LessNumbersNode::inlineEvaluateToBoolean): |
| 26326 | (KJS::LessNumbersNode::evaluate): |
| 26327 | (KJS::LessNumbersNode::evaluateToBoolean): |
| 26328 | (KJS::LessStringsNode::inlineEvaluateToBoolean): |
| 26329 | (KJS::LessStringsNode::evaluate): |
| 26330 | (KJS::BitAndNode::evaluate): |
| 26331 | (KJS::BitAndNode::inlineEvaluateToInt32): |
| 26332 | (KJS::BitAndNode::evaluateToNumber): |
| 26333 | (KJS::BitAndNode::evaluateToBoolean): |
| 26334 | (KJS::BitAndNode::evaluateToInt32): |
| 26335 | (KJS::BitXOrNode::inlineEvaluateToInt32): |
| 26336 | (KJS::BitXOrNode::evaluate): |
| 26337 | (KJS::BitXOrNode::evaluateToNumber): |
| 26338 | (KJS::BitXOrNode::evaluateToBoolean): |
| 26339 | (KJS::BitXOrNode::evaluateToInt32): |
| 26340 | (KJS::BitOrNode::inlineEvaluateToInt32): |
| 26341 | (KJS::BitOrNode::evaluate): |
| 26342 | (KJS::BitOrNode::evaluateToNumber): |
| 26343 | (KJS::BitOrNode::evaluateToBoolean): |
| 26344 | (KJS::BitOrNode::evaluateToInt32): |
| 26345 | (KJS::ConditionalNode::evaluateToNumber): |
| 26346 | (KJS::ConditionalNode::evaluateToInt32): |
| 26347 | (KJS::ConditionalNode::evaluateToUInt32): |
| 26348 | (KJS::valueForReadModifyAssignment): |
| 26349 | (KJS::AssignExprNode::evaluate): |
| 26350 | (KJS::AssignExprNode::evaluateToBoolean): |
| 26351 | (KJS::AssignExprNode::evaluateToNumber): |
| 26352 | (KJS::AssignExprNode::evaluateToInt32): |
| 26353 | (KJS::VarDeclNode::handleSlowCase): |
| 26354 | * kjs/nodes.h: |
| 26355 | (KJS::FunctionCallResolveNode::precedence): |
| 26356 | (KJS::AddNode::precedence): |
| 26357 | (KJS::AddNode::): |
| 26358 | (KJS::LessNumbersNode::): |
| 26359 | (KJS::LessStringsNode::): |
| 26360 | * kjs/value.cpp: |
| 26361 | (KJS::JSValue::toInt32SlowCase): |
| 26362 | (KJS::JSValue::toUInt32SlowCase): |
| 26363 | * kjs/value.h: |
| 26364 | (KJS::JSValue::asCell): |
| 26365 | (KJS::JSValue::toInt32): |
| 26366 | (KJS::JSValue::toUInt32): |
| 26367 | |
| 26368 | 2007-11-12 Alexey Proskuryakov <ap@webkit.org> |
| 26369 | |
| 26370 | Reviewed by Darin. |
| 26371 | |
| 26372 | http://bugs.webkit.org/show_bug.cgi?id=15953 |
| 26373 | Add UTF-8 encoding/decoding to WTF |
| 26374 | |
| 26375 | * kjs/ustring.h: Moved UTF8SequenceLength() and decodeUTF8Sequence() to wtf/unicode. |
| 26376 | * kjs/ustring.cpp: (KJS::UString::UTF8String): Changed this function to take a strict/lenient |
| 26377 | parameter. Callers are not interested in getting decoding results in strict mode, so |
| 26378 | this allows for bailing out as soon as an error is seen. |
| 26379 | |
| 26380 | * kjs/function.cpp: |
| 26381 | (KJS::encode): Updated for new UString::UTF8String() signature. |
| 26382 | |
| 26383 | * API/JSStringRef.cpp: |
| 26384 | (JSStringCreateWithCharacters): Disambiguate UChar. |
| 26385 | (JSStringCreateWithUTF8CString): Actually use UTF-8 when creating the string! |
| 26386 | * bindings/c/c_utility.cpp: (KJS::Bindings::convertUTF8ToUTF16): Use ConvertUTF8ToUTF16(). |
| 26387 | |
| 26388 | * wtf/unicode/UTF8.cpp: Added. |
| 26389 | (WTF::Unicode::inlineUTF8SequenceLengthNonASCII): |
| 26390 | (WTF::Unicode::inlineUTF8SequenceLength): |
| 26391 | (WTF::Unicode::UTF8SequenceLength): |
| 26392 | (WTF::Unicode::decodeUTF8Sequence): |
| 26393 | (WTF::Unicode::): |
| 26394 | (WTF::Unicode::ConvertUTF16ToUTF8): |
| 26395 | (WTF::Unicode::isLegalUTF8): |
| 26396 | (WTF::Unicode::ConvertUTF8ToUTF16): |
| 26397 | * wtf/unicode/UTF8.h: Added. |
| 26398 | (WTF::Unicode::): |
| 26399 | Some code moved from ustring.h, some adapted from unicode.org sources. |
| 26400 | |
| 26401 | * JavaScriptCore.exp: |
| 26402 | * JavaScriptCore.pri: |
| 26403 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 26404 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 26405 | * JavaScriptCoreSources.bkl: |
| 26406 | Added UTF8.{h,cpp} |
| 26407 | |
| 26408 | 2007-11-12 Josh Aas <joshmoz@gmail.com> |
| 26409 | |
| 26410 | Reviewed by Darin. |
| 26411 | |
| 26412 | - http://bugs.webkit.org/show_bug.cgi?id=15946 |
| 26413 | add NPPValue NPPVpluginDrawingModel (Mozilla bug 403418 compat) |
| 26414 | |
| 26415 | * bindings/npapi.h: |
| 26416 | |
| 26417 | 2007-11-12 Darin Adler <darin@apple.com> |
| 26418 | |
| 26419 | Reviewed by Sam. |
| 26420 | |
| 26421 | - http://bugs.webkit.org/show_bug.cgi?id=15951 |
| 26422 | REGRESSION: assertion failure in regexp match() when running JS tests |
| 26423 | |
| 26424 | Test: fast/js/regexp-many-brackets.html |
| 26425 | |
| 26426 | * pcre/pcre_exec.cpp: (match): Added back accidentally-removed case for |
| 26427 | the BRANUMBER opcode. |
| 26428 | |
| 26429 | 2007-11-12 Darin Adler <darin@apple.com> |
| 26430 | |
| 26431 | Reviewed by Geoff. |
| 26432 | |
| 26433 | - fix use of prefix and config.h, got rid of a few unneeded things in |
| 26434 | the PCRE code; no behavior changes |
| 26435 | |
| 26436 | * API/JSBase.cpp: Added include of config.h. |
| 26437 | * API/JSCallbackConstructor.cpp: Ditto. |
| 26438 | * API/JSCallbackFunction.cpp: Ditto. |
| 26439 | * API/JSCallbackObject.cpp: Ditto. |
| 26440 | * API/JSClassRef.cpp: Ditto. |
| 26441 | * API/JSContextRef.cpp: Ditto. |
| 26442 | * API/JSObjectRef.cpp: Ditto. |
| 26443 | * API/JSStringRef.cpp: Ditto. |
| 26444 | * API/JSValueRef.cpp: Ditto. |
| 26445 | |
| 26446 | * JavaScriptCorePrefix.h: Removed obsolete <ctype.h> workaround. |
| 26447 | Moved new/delete macros after includes, as they are in WebCore's prefix. |
| 26448 | Removed "config.h". |
| 26449 | |
| 26450 | * pcre/dftables.cpp: (main): Changed back to not use a separate maketables |
| 26451 | function. This is needed for PCRE, but not helpful for our use. Also changed |
| 26452 | the tables to all be 128 entries long instead of 256, since only the first |
| 26453 | 128 are ever used. |
| 26454 | |
| 26455 | * pcre/pcre_compile.cpp: Added include of config.h. Eliminated digitab, |
| 26456 | which was only being used to check hex digits. Changed all uses of TRUE and |
| 26457 | FALSE to use the C++ true and false instead. |
| 26458 | (check_escape): Just the TRUE/FALSE thing. |
| 26459 | (is_counted_repeat): Ditto. |
| 26460 | (could_be_empty_branch): Ditto. |
| 26461 | (get_othercase_range): Ditto. |
| 26462 | (compile_branch): Ditto. |
| 26463 | (compile_regex): Ditto. |
| 26464 | (is_anchored): Ditto. |
| 26465 | (is_startline): Ditto. |
| 26466 | (find_firstassertedchar): Ditto. |
| 26467 | (jsRegExpCompile): Ditto. |
| 26468 | |
| 26469 | * pcre/pcre_exec.cpp: Added include of config.h. Changed all uses of TRUE and |
| 26470 | FALSE to use the C++ true and false instead. |
| 26471 | (match_ref): Just the TRUE/FALSE thing. |
| 26472 | (match): Ditto. Removed some unneeded braces. |
| 26473 | (jsRegExpExecute): Just the TRUE/FALSE thing. |
| 26474 | |
| 26475 | * pcre/pcre_internal.h: Moved the constants needed by dftables.cpp to the top |
| 26476 | of the file instead of the bottom, so they can be used. Also changed the table |
| 26477 | sizes to 128 instead of 256. Removed macro definitions of FALSE and TRUE. |
| 26478 | Set array sizes for all the const arrays. Changed _pcre_utf8_table1_size to |
| 26479 | be a macro instead of a extern int. |
| 26480 | |
| 26481 | * pcre/pcre_maketables.cpp: Removed. It's all in dftables.cpp now. |
| 26482 | |
| 26483 | * pcre/pcre_tables.cpp: Made table sizes explicit. |
| 26484 | |
| 26485 | * pcre/pcre_xclass.cpp: Just the TRUE/FALSE thing. |
| 26486 | |
| 26487 | 2007-11-12 Adam Roben <aroben@apple.com> |
| 26488 | |
| 26489 | Build fix |
| 26490 | |
| 26491 | * wtf/FastMalloc.h: Add missing using statement. |
| 26492 | |
| 26493 | 2007-11-11 Oliver Hunt <oliver@apple.com> |
| 26494 | |
| 26495 | Reviewed by Darin. |
| 26496 | |
| 26497 | Add special fastZeroedMalloc function to replace a |
| 26498 | number of fastCalloc calls where one argument was 1. |
| 26499 | |
| 26500 | This results in a 0.4% progression in SunSpider, more |
| 26501 | than making up for the earlier regression caused by |
| 26502 | additional overflow checks. |
| 26503 | |
| 26504 | * JavaScriptCore.exp: |
| 26505 | * kjs/array_instance.cpp: |
| 26506 | * kjs/property_map.cpp: |
| 26507 | * wtf/FastMalloc.cpp: |
| 26508 | * wtf/FastMalloc.h: |
| 26509 | * wtf/HashTable.h: |
| 26510 | |
| 26511 | 2007-11-11 Adam Roben <aroben@apple.com> |
| 26512 | |
| 26513 | Fix <rdar://5578982> ASSERT in HashTable::checkTableConsistencyExceptSize beneath WebNotificationCenter |
| 26514 | |
| 26515 | The bug was due to a mismatch between HashMap::remove and |
| 26516 | HashTable::checkTableConsistency. HashMap::remove can delete the value |
| 26517 | stored in the HashTable (by derefing it), which is not normally |
| 26518 | allowed by HashTable. It's OK in this case because the value is about |
| 26519 | to be removed from the table, but HashTable wasn't aware of this. |
| 26520 | |
| 26521 | HashMap::remove now performs the consistency check itself before |
| 26522 | derefing the value. |
| 26523 | |
| 26524 | Darin noticed that the same bug would occur in HashSet, so I've fixed |
| 26525 | it there as well. |
| 26526 | |
| 26527 | Reviewed by Darin. |
| 26528 | |
| 26529 | * wtf/HashMap.h: |
| 26530 | (WTF::HashMap::remove): Perform the HashTable consistency check |
| 26531 | manually before calling deref. |
| 26532 | * wtf/HashSet.h: |
| 26533 | (WTF::HashSet::remove): Ditto. |
| 26534 | * wtf/HashTable.h: Made checkTableConsistency public so that HashMap |
| 26535 | and HashSet can call it. |
| 26536 | (WTF::HashTable::removeAndInvalidateWithoutEntryConsistencyCheck): |
| 26537 | Added. |
| 26538 | (WTF::HashTable::removeAndInvalidate): Added. |
| 26539 | (WTF::HashTable::remove): |
| 26540 | (WTF::HashTable::removeWithoutEntryConsistencyCheck): Added. |
| 26541 | |
| 26542 | 2007-11-11 Mark Rowe <mrowe@apple.com> |
| 26543 | |
| 26544 | Build fix. Use the correct filename case. |
| 26545 | |
| 26546 | * kjs/nodes.h: |
| 26547 | |
| 26548 | 2007-11-11 Geoffrey Garen <ggaren@apple.com> |
| 26549 | |
| 26550 | Reviewed by Sam Weinig. |
| 26551 | |
| 26552 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15902 |
| 26553 | 15% of string-validate-input.js is spent compiling the same regular expression |
| 26554 | |
| 26555 | Store a compiled representation of the regular expression in the AST. |
| 26556 | |
| 26557 | Only a .2% SunSpider speedup overall, but a 10.6% speedup on |
| 26558 | string-validate-input.js. |
| 26559 | |
| 26560 | * kjs/nodes.cpp: |
| 26561 | (KJS::RegExpNode::evaluate): |
| 26562 | * kjs/nodes.h: |
| 26563 | (KJS::RegExpNode::): |
| 26564 | * kjs/nodes2string.cpp: |
| 26565 | (KJS::RegExpNode::streamTo): |
| 26566 | * kjs/regexp.cpp: |
| 26567 | (KJS::RegExp::flags): |
| 26568 | * kjs/regexp.h: |
| 26569 | (KJS::RegExp::pattern): |
| 26570 | * kjs/regexp_object.cpp: |
| 26571 | (KJS::RegExpObjectImp::construct): |
| 26572 | (KJS::RegExpObjectImp::createRegExpImp): |
| 26573 | * kjs/regexp_object.h: |
| 26574 | |
| 26575 | 2007-11-11 Oliver Hunt <oliver@apple.com> |
| 26576 | |
| 26577 | Reviewed by Eric. |
| 26578 | |
| 26579 | Partial fix for <rdar://problem/5585334> numfuzz: integer overflows opening malformed SVG file in WebCore::ImageBuffer::create |
| 26580 | |
| 26581 | Unfortunately this is a very slight regression, but is unavoidable. |
| 26582 | |
| 26583 | * wtf/FastMalloc.cpp: |
| 26584 | |
| 26585 | 2007-11-10 Eric Seidel <eric@webkit.org> |
| 26586 | |
| 26587 | Reviewed by darin. |
| 26588 | |
| 26589 | Add simple type inferencing to the parser, and create custom |
| 26590 | AddNode and LessNode subclasses based on inferred types. |
| 26591 | http://bugs.webkit.org/show_bug.cgi?id=15884 |
| 26592 | |
| 26593 | SunSpider claims this is at least a 0.5% speedup. |
| 26594 | |
| 26595 | * JavaScriptCore.exp: |
| 26596 | * kjs/grammar.y: |
| 26597 | * kjs/internal.cpp: |
| 26598 | (KJS::NumberImp::getPrimitiveNumber): |
| 26599 | (KJS::GetterSetterImp::getPrimitiveNumber): |
| 26600 | * kjs/internal.h: |
| 26601 | * kjs/lexer.cpp: |
| 26602 | (KJS::Lexer::lex): |
| 26603 | * kjs/nodes.cpp: |
| 26604 | (KJS::Node::Node): |
| 26605 | (KJS::StringNode::evaluate): |
| 26606 | (KJS::StringNode::evaluateToNumber): |
| 26607 | (KJS::StringNode::evaluateToBoolean): |
| 26608 | (KJS::RegExpNode::evaluate): |
| 26609 | (KJS::UnaryPlusNode::optimizeVariableAccess): |
| 26610 | (KJS::AddNode::evaluate): |
| 26611 | (KJS::AddNode::evaluateToNumber): |
| 26612 | (KJS::AddNumbersNode::inlineEvaluateToNumber): |
| 26613 | (KJS::AddNumbersNode::evaluate): |
| 26614 | (KJS::AddNumbersNode::evaluateToNumber): |
| 26615 | (KJS::AddStringsNode::evaluate): |
| 26616 | (KJS::AddStringLeftNode::evaluate): |
| 26617 | (KJS::AddStringRightNode::evaluate): |
| 26618 | (KJS::lessThan): |
| 26619 | (KJS::lessThanEq): |
| 26620 | (KJS::LessNumbersNode::evaluate): |
| 26621 | (KJS::LessStringsNode::evaluate): |
| 26622 | * kjs/nodes.h: |
| 26623 | (KJS::ExpressionNode::): |
| 26624 | (KJS::RegExpNode::): |
| 26625 | (KJS::RegExpNode::precedence): |
| 26626 | (KJS::TypeOfResolveNode::): |
| 26627 | (KJS::LocalVarTypeOfNode::): |
| 26628 | (KJS::UnaryPlusNode::): |
| 26629 | (KJS::UnaryPlusNode::precedence): |
| 26630 | (KJS::AddNode::): |
| 26631 | (KJS::AddNode::precedence): |
| 26632 | (KJS::AddNumbersNode::): |
| 26633 | (KJS::AddStringLeftNode::): |
| 26634 | (KJS::AddStringRightNode::): |
| 26635 | (KJS::AddStringsNode::): |
| 26636 | (KJS::LessNode::): |
| 26637 | (KJS::LessNode::precedence): |
| 26638 | (KJS::LessNumbersNode::): |
| 26639 | (KJS::LessStringsNode::): |
| 26640 | * kjs/nodes2string.cpp: |
| 26641 | (KJS::StringNode::streamTo): |
| 26642 | * kjs/object.cpp: |
| 26643 | * kjs/object.h: |
| 26644 | * kjs/value.h: |
| 26645 | (KJS::JSValue::getPrimitiveNumber): |
| 26646 | |
| 26647 | 2007-11-11 Darin Adler <darin@apple.com> |
| 26648 | |
| 26649 | - try another way of fixing dftables builds -- refactor pcre_internal.h a bit |
| 26650 | |
| 26651 | * pcre/pcre_internal.h: Make most of this header do nothing when DFTABLES is set. |
| 26652 | Later we can break it into two files. |
| 26653 | |
| 26654 | * JavaScriptCore.vcproj/dftables/dftables.vcproj: Take out now-unneeded include paths. |
| 26655 | * pcre/dftables.cpp: Set DFTABLES. Use delete instead of free. |
| 26656 | * pcre/dftables.pro: Take out now-unneeded include paths. |
| 26657 | * pcre/pcre_maketables.cpp: Use new instead of malloc. |
| 26658 | |
| 26659 | 2007-11-11 Darin Adler <darin@apple.com> |
| 26660 | |
| 26661 | * pcre/dftables.pro: Try fixing Qt builds (I looked at qt-win) by adding |
| 26662 | another include path. |
| 26663 | |
| 26664 | 2007-11-11 Darin Adler <darin@apple.com> |
| 26665 | |
| 26666 | * JavaScriptCore.xcodeproj/project.pbxproj: Try fixing Mac Tiger builds |
| 26667 | by adding another include path. |
| 26668 | |
| 26669 | 2007-11-11 Darin Adler <darin@apple.com> |
| 26670 | |
| 26671 | Reviewed by Sam. |
| 26672 | |
| 26673 | - http://bugs.webkit.org/show_bug.cgi?id=15924 |
| 26674 | next round of changes to JSRegExp (formerly PCRE) |
| 26675 | |
| 26676 | This is a combination of converting to C++, tweaking the API, and adding |
| 26677 | some additional optimizations. |
| 26678 | |
| 26679 | Future steps will involve getting rid of the use of UTF-8 completely |
| 26680 | (we'll use UTF-16 exclusively instead), eliminating more source files, |
| 26681 | and some more speed-ups. |
| 26682 | |
| 26683 | SunSpider says the current round is an 0.9% speed-up overall, and a |
| 26684 | 5.3% speed-up for regexp. |
| 26685 | |
| 26686 | * JavaScriptCore.exp: Updated for new entry points. |
| 26687 | |
| 26688 | * JavaScriptCore.pri: |
| 26689 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 26690 | * JavaScriptCore.vcproj/dftables/dftables.vcproj: |
| 26691 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 26692 | * JavaScriptCoreSources.bkl: |
| 26693 | * jscore.bkl: |
| 26694 | Updated for new source file names and ForwardingHeaders. |
| 26695 | |
| 26696 | * kjs/regexp.cpp: |
| 26697 | (KJS::RegExp::RegExp): Changed to use the error message without calling |
| 26698 | strdup on it and to pass the new types and options. |
| 26699 | (KJS::RegExp::~RegExp): Removed the now-unneeded free of the error message. |
| 26700 | (KJS::RegExp::match): Pass the new types and options. |
| 26701 | * kjs/regexp.h: Update type of m_constructionError. |
| 26702 | |
| 26703 | * pcre/AUTHORS: Update to reflect the status of the project -- we don't include |
| 26704 | the Google parts, and this isn't the PCRE library, per se. |
| 26705 | * pcre/COPYING: Ditto. |
| 26706 | |
| 26707 | * pcre/dftables.cpp: Copied from JavaScriptCore/pcre/dftables.c. |
| 26708 | (main): Removed unneeded ctype_digit. |
| 26709 | |
| 26710 | * pcre/pcre.h: Convert to C++, tweak API a bit. Use UChar instead of JSRegExpChar. |
| 26711 | |
| 26712 | * pcre/pcre_compile.cpp: Copied from JavaScriptCore/pcre/pcre_compile.c. |
| 26713 | Moved a lot of private stuff used only within this file here from pcre_internal.h. |
| 26714 | Renumbered the error codes. |
| 26715 | (error_text): Use a single string with embedded nulls for the error text (I got |
| 26716 | this idea from newer versions of PCRE). |
| 26717 | (check_escape): Changed return type to be enum instead of int. Replaced ctype_digit |
| 26718 | uses with isASCIIDigit. |
| 26719 | (is_counted_repeat): Ditto. |
| 26720 | (read_repeat_counts): Ditto. |
| 26721 | (first_significant_code): Ditto. |
| 26722 | (find_fixedlength): Ditto. |
| 26723 | (could_be_empty_branch): Ditto. |
| 26724 | (compile_branch): Ditto. Also removed some code that handles changing options. |
| 26725 | JavaScript doesn't have any of the features that allow options to change. |
| 26726 | (compile_regex): Updated for change to options parameter. |
| 26727 | (is_anchored): Ditto. |
| 26728 | (find_firstassertedchar): Ditto. |
| 26729 | (jsRegExpCompile): Changed to take separate flags instead of an options int. |
| 26730 | Also changed to call new/delete instead of pcre_malloc/free. |
| 26731 | (jsRegExpFree): Ditto. |
| 26732 | |
| 26733 | * pcre/pcre_exec.cpp: Copied from JavaScriptCore/pcre/pcre_exec.c. |
| 26734 | Added a case that uses computed goto for the opcode loop, but did not turn it on. |
| 26735 | Changed the RMATCH macro to handle returns more efficiently by putting the where |
| 26736 | pointer in the new frame instead of the old one, allowing us to branch to the |
| 26737 | return with a single statement. Switched to new/delete from pcre_malloc/free. |
| 26738 | Changed many RRETURN callers to not set the return value since it's already |
| 26739 | set correctly. Replaced the rrc variable with an is_match variable. Values other |
| 26740 | than "match" and "no match" are now handled differently. This allows us to remove |
| 26741 | the code to check for those cases in various rules. |
| 26742 | (match): All the case statements use a macro BEGIN_OPCODE instead. And all the |
| 26743 | continue statements, or break statements that break out of the outer case use |
| 26744 | a macro NEXT_OPCODE instead. Replaced a few if statements with assertions. |
| 26745 | (jsRegExpExecute): Use new/delete instead of pcre_malloc/free. Removed unused |
| 26746 | start_match field from the match block. |
| 26747 | |
| 26748 | * pcre/pcre_internal.h: Moved the last few configuration macros from pcre-config.h |
| 26749 | in here. Removed various unused types. Converted from JSRegExpChar to UChar. |
| 26750 | Eliminated pcre_malloc/free. Replaced the opcode enum with a macro that can be |
| 26751 | used in multiple places. Unfortunately we lose the comments for each opcode; we |
| 26752 | should find a place to put those back. Removed ctype_digit. |
| 26753 | |
| 26754 | * pcre/pcre_maketables.cpp: Copied from JavaScriptCore/pcre/pcre_maketables.c. |
| 26755 | (pcre_maketables): Got rid of the conditional code that allows this to be compiled |
| 26756 | in -- it's only used for dftables now (and soon may be obsolete entirely). |
| 26757 | Changed code for cbit_digit to not use isdigit, and took the "_" case out of the |
| 26758 | loop. Removed ctype_digit. |
| 26759 | |
| 26760 | * pcre/pcre_ord2utf8.cpp: Copied from JavaScriptCore/pcre/pcre_ord2utf8.c. |
| 26761 | |
| 26762 | * pcre/pcre_tables.cpp: Copied from JavaScriptCore/pcre/pcre_tables.c. |
| 26763 | Moved _pcre_OP_lengths out of here into pcre_exec.cpp. |
| 26764 | |
| 26765 | * pcre/pcre_ucp_searchfuncs.cpp: Copied from JavaScriptCore/pcre/pcre_ucp_searchfuncs.c. |
| 26766 | Updated for other file name changes. |
| 26767 | |
| 26768 | * pcre/pcre_xclass.cpp: Copied from JavaScriptCore/pcre/pcre_xclass.c. |
| 26769 | |
| 26770 | * pcre/ucpinternal.h: Updated header. |
| 26771 | |
| 26772 | * pcre/ucptable.cpp: Copied from JavaScriptCore/pcre/ucptable.c. |
| 26773 | |
| 26774 | * wtf/ASCIICType.h: (WTF::isASCIIDigit): Removed a branch by changing from && to |
| 26775 | & for this operation. Also added an overload that takes an int because that's |
| 26776 | useful for PCRE. Later we could optimize for int and overload other functions in |
| 26777 | this file; stuck to this simple one for now. |
| 26778 | |
| 26779 | * wtf/unicode/icu/UnicodeIcu.h: Removed unused isUpper. |
| 26780 | * wtf/unicode/qt4/UnicodeQt4.h: Ditto. |
| 26781 | |
| 26782 | * pcre/LICENCE: Removed. |
| 26783 | * pcre/pcre-config.h: Removed. |
| 26784 | * wtf/FastMallocPCRE.cpp: Removed. |
| 26785 | |
| 26786 | * pcre/dftables.c: Renamed to cpp. |
| 26787 | * pcre/pcre_compile.c: Ditto. |
| 26788 | * pcre/pcre_exec.c: Ditto. |
| 26789 | * pcre/pcre_maketables.c: Ditto. |
| 26790 | * pcre/pcre_ord2utf8.c: Ditto. |
| 26791 | * pcre/pcre_tables.c: Ditto. |
| 26792 | * pcre/pcre_ucp_searchfuncs.c: Ditto. |
| 26793 | * pcre/pcre_xclass.c: Ditto. |
| 26794 | * pcre/ucptable.c: Ditto. |
| 26795 | |
| 26796 | 2007-11-11 Eric Seidel <eric@webkit.org> |
| 26797 | |
| 26798 | Reviewed by Oliver. |
| 26799 | |
| 26800 | Add KJS_CHECKEXCEPTIONBOOLEAN to match rest of nodes.cpp |
| 26801 | |
| 26802 | * kjs/nodes.cpp: |
| 26803 | (KJS::ExpressionNode::evaluateToBoolean): |
| 26804 | (KJS::LessNode::evaluateToBoolean): |
| 26805 | (KJS::GreaterNode::evaluateToBoolean): |
| 26806 | (KJS::LessEqNode::evaluateToBoolean): |
| 26807 | (KJS::GreaterEqNode::evaluateToBoolean): |
| 26808 | (KJS::InstanceOfNode::evaluateToBoolean): |
| 26809 | (KJS::InNode::evaluateToBoolean): |
| 26810 | (KJS::EqualNode::evaluateToBoolean): |
| 26811 | (KJS::NotEqualNode::evaluateToBoolean): |
| 26812 | (KJS::StrictEqualNode::evaluateToBoolean): |
| 26813 | (KJS::NotStrictEqualNode::evaluateToBoolean): |
| 26814 | (KJS::LogicalAndNode::evaluateToBoolean): |
| 26815 | (KJS::LogicalOrNode::evaluateToBoolean): |
| 26816 | (KJS::ConditionalNode::evaluateToBoolean): |
| 26817 | |
| 26818 | 2007-11-10 Darin Adler <darin@apple.com> |
| 26819 | |
| 26820 | Reviewed by Sam. |
| 26821 | |
| 26822 | - fix http://bugs.webkit.org/show_bug.cgi?id=15927 |
| 26823 | REGRESSION(r27487): delete a.c followed by __defineGetter__("c", ...) incorrectly deletes another property |
| 26824 | and <rdar://problem/5586384> REGRESSION (r27487): Can't switch out of Edit HTML Source mode on Leopard Wiki |
| 26825 | |
| 26826 | Test: fast/js/delete-then-put.html |
| 26827 | |
| 26828 | * kjs/property_map.cpp: |
| 26829 | (KJS::PropertyMap::put): Added a missing "- 1"; code to find an empty slot was not working. |
| 26830 | (KJS::PropertyMap::checkConsistency): Added a missing range check that would have caught this |
| 26831 | problem before. |
| 26832 | |
| 26833 | - roll out a last-minute change to my evaluateToBoolean patch that was incorrect. |
| 26834 | |
| 26835 | * kjs/nodes.h: (KJS::ExprStatementNode::ExprStatementNode): Take out call to |
| 26836 | optimizeForUnnecessaryResult, since the result is used in some cases. |
| 26837 | |
| 26838 | 2007-11-10 Adam Roben <aroben@apple.com> |
| 26839 | |
| 26840 | Windows build fix |
| 26841 | |
| 26842 | Roll out some changes that were (seemingly accidentally) checked in |
| 26843 | with r27664. |
| 26844 | |
| 26845 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 26846 | |
| 26847 | 2007-11-10 Darin Adler <darin@apple.com> |
| 26848 | |
| 26849 | Reviewed by Sam. |
| 26850 | |
| 26851 | - http://bugs.webkit.org/show_bug.cgi?id=15915 |
| 26852 | add an evaluation path for booleans like the one we have for numbers |
| 26853 | |
| 26854 | Gives 1.1% on SunSpider. |
| 26855 | |
| 26856 | * kjs/grammar.y: Create TrueNode and FalseNode instead of BooleanNode. |
| 26857 | |
| 26858 | * kjs/nodes.h: Changed to use Noncopyable. Moved optimizeForUnnecessaryResult |
| 26859 | down from Node to ExpressionNode. Changed some classes to not inherit from |
| 26860 | ExpressionNode where not necessary, and removed unnneeded evaluate functions |
| 26861 | as well as evaluate functions that need not be virtual. Call the |
| 26862 | optimizeForUnnecessaryResult function on the start of a for loop too. |
| 26863 | * kjs/nodes.cpp: |
| 26864 | (KJS::ExpressionNode::evaluateToBoolean): Added. |
| 26865 | (KJS::FalseNode::evaluate): Added. |
| 26866 | (KJS::TrueNode::evaluate): Added. |
| 26867 | (KJS::NumberNode::evaluateToBoolean): Added. |
| 26868 | (KJS::StringNode::evaluateToBoolean): Added. |
| 26869 | (KJS::LocalVarAccessNode::evaluateToBoolean): Added. |
| 26870 | (KJS::BracketAccessorNode::evaluateToBoolean): Added. |
| 26871 | (KJS::LogicalNotNode::evaluate): Changed to call evaluateToBoolean. |
| 26872 | (KJS::LogicalNotNode::evaluateToBoolean): Added. |
| 26873 | (KJS::lessThan): Changed to return bool. |
| 26874 | (KJS::lessThanEq): Ditto. |
| 26875 | (KJS::LessNode::evaluate): Changed since lessThan returns bool. |
| 26876 | (KJS::LessNode::evaluateToBoolean): Added. |
| 26877 | (KJS::GreaterNode::evaluate): Changed since lessThanEq returns bool. |
| 26878 | (KJS::GreaterNode::evaluateToBoolean): Added. |
| 26879 | (KJS::LessEqNode::evaluate): Changed since lessThanEq returns bool. |
| 26880 | (KJS::LessEqNode::evaluateToBoolean): Added. |
| 26881 | (KJS::GreaterEqNode::evaluate): Changed since lessThan returns bool. |
| 26882 | (KJS::GreaterEqNode::evaluateToBoolean): Added. |
| 26883 | (KJS::InstanceOfNode::evaluateToBoolean): Added. |
| 26884 | (KJS::InNode::evaluateToBoolean): Added. |
| 26885 | (KJS::EqualNode::evaluateToBoolean): Added. |
| 26886 | (KJS::NotEqualNode::evaluateToBoolean): Added. |
| 26887 | (KJS::StrictEqualNode::evaluateToBoolean): Added. |
| 26888 | (KJS::NotStrictEqualNode::evaluateToBoolean): Added. |
| 26889 | (KJS::ConditionalNode::evaluate): Changed to call evaluateToBoolean. |
| 26890 | (KJS::IfNode::execute): Ditto. |
| 26891 | (KJS::DoWhileNode::execute): Ditto. |
| 26892 | (KJS::WhileNode::execute): Ditto. |
| 26893 | (KJS::ForNode::execute): Ditto. |
| 26894 | |
| 26895 | * kjs/nodes2string.cpp: |
| 26896 | (KJS::FalseNode::streamTo): Added. |
| 26897 | (KJS::TrueNode::streamTo): Added. |
| 26898 | |
| 26899 | 2007-11-09 Adam Roben <aroben@apple.com> |
| 26900 | |
| 26901 | Windows build fix |
| 26902 | |
| 26903 | Reviewed by Darin. |
| 26904 | |
| 26905 | * kjs/value.h: |
| 26906 | (KJS::jsNumber): Add some explicit casts. |
| 26907 | |
| 26908 | 2007-11-08 Darin Adler <darin@apple.com> |
| 26909 | |
| 26910 | - fix build |
| 26911 | |
| 26912 | * kjs/grammar.y: |
| 26913 | * kjs/nodes.h: |
| 26914 | * kjs/property_map.cpp: |
| 26915 | |
| 26916 | 2007-11-08 Darin Adler <darin@apple.com> |
| 26917 | |
| 26918 | - roll out accidentally-checked in changes |
| 26919 | |
| 26920 | * kjs/nodes.cpp: Back to previous version. |
| 26921 | * kjs/nodes.h: Ditto. |
| 26922 | * kjs/grammar.y: Ditto. |
| 26923 | |
| 26924 | 2007-11-08 Darin Adler <darin@apple.com> |
| 26925 | |
| 26926 | Reviewed by Maciej. |
| 26927 | |
| 26928 | - http://bugs.webkit.org/show_bug.cgi?id=15912 |
| 26929 | fasta spends a lot of time in qsort |
| 26930 | |
| 26931 | * kjs/property_map.cpp: |
| 26932 | (KJS::PropertyMap::getEnumerablePropertyNames): |
| 26933 | Use insertion sort instead of qsort for small sets of property names. |
| 26934 | We can probably do some even-better speedups of for/in, but this nets |
| 26935 | 0.6% overall and 6.7% on fasta. |
| 26936 | |
| 26937 | 2007-11-08 Darin Adler <darin@apple.com> |
| 26938 | |
| 26939 | Reviewed by Maciej. |
| 26940 | |
| 26941 | - http://bugs.webkit.org/show_bug.cgi?id=15906 |
| 26942 | getting characters by indexing into a string is very slow |
| 26943 | |
| 26944 | This fixes one source of the slowness -- the conversion to an unused |
| 26945 | Identifier as we call the get function from the slot -- but doesn't |
| 26946 | fix others, such as the fact that we have to allocate a new UString::Rep |
| 26947 | for every single character. |
| 26948 | |
| 26949 | Speeds up string-base64 30%, and at least 0.5% overall. |
| 26950 | But does slow down access-fannkuch quite a bit. Might be worth |
| 26951 | revisiting in the future to see what we can do about that (although |
| 26952 | I did look at a profile for a while). |
| 26953 | |
| 26954 | * kjs/property_slot.h: Add a new marker for "numeric" property slots; |
| 26955 | slots where we don't need to pass the identifier to the get function. |
| 26956 | (KJS::PropertySlot::getValue): Added code to call the numeric get function. |
| 26957 | (KJS::PropertySlot::setCustomNumeric): Added. |
| 26958 | * kjs/string_object.cpp: |
| 26959 | (KJS::StringInstance::indexGetter): Changed to use substr() instead |
| 26960 | of constructing a wholly new UString each time. |
| 26961 | (KJS::stringInstanceNumericPropertyGetter): Added. Like indexGetter, but |
| 26962 | takes advantage of setCustomNumeric to avoid creating an Identifier. |
| 26963 | (KJS::StringInstance::getOwnPropertySlot): Changed to use setCustomNumeric. |
| 26964 | |
| 26965 | 2007-11-08 Darin Adler <darin@apple.com> |
| 26966 | |
| 26967 | Reviewed by Oliver. |
| 26968 | |
| 26969 | - http://bugs.webkit.org/show_bug.cgi?id=15904 |
| 26970 | more speed-ups possible by tightening up int version of JSImmediate |
| 26971 | |
| 26972 | 1% improvement of SunSpider |
| 26973 | |
| 26974 | * kjs/JSImmediate.h: Eliminate the now-unneeded FPBitValues struct template. |
| 26975 | (KJS::JSImmediate::from): Overload for most numeric types; many types can |
| 26976 | do fewer branches and checks. |
| 26977 | (KJS::JSImmediate::getUInt32): Removed unneeded check for undefined. |
| 26978 | (KJS::JSImmediate::getTruncatedInt32): Ditto. |
| 26979 | (KJS::JSImmediate::getTruncatedUInt32): Ditto. There's no difference any more |
| 26980 | between getUInt32 and getTruncatedUInt32, so that's worth a rename and merge later. |
| 26981 | |
| 26982 | * kjs/grammar.y: Update since fromDouble is now just from. |
| 26983 | * kjs/nodes.h: Ditto. |
| 26984 | |
| 26985 | * kjs/value.h: (KJS::jsNumber): Overload for most numeric types. |
| 26986 | |
| 26987 | 2007-11-08 Kevin Ollivier <kevino@theolliviers.com> |
| 26988 | |
| 26989 | Bakefiles for building JavaScriptCore, needed by wx port. |
| 26990 | |
| 26991 | Reviewed by Mark Rowe. |
| 26992 | |
| 26993 | * JavaScriptCoreSources.bkl: Added. |
| 26994 | * jscore.bkl: Added. |
| 26995 | |
| 26996 | 2007-11-08 Oliver Hunt <oliver@apple.com> |
| 26997 | |
| 26998 | Reviewed by Maciej. |
| 26999 | |
| 27000 | Fix regression caused by earlier bitwise and optimisation. 1 & undefined != 1. |
| 27001 | |
| 27002 | The implementation of JSImmediate::areBothImmediateNumbers relies on |
| 27003 | (JSImmediate::getTag(immediate1) & JSImmediate::getTag(immediate2)) having |
| 27004 | a unique result when both immediate values are numbers. |
| 27005 | |
| 27006 | The regression was due to UndefinedType & NumberType returning NumberType (3 & 1). |
| 27007 | By swapping the value of NumberType and UndefinedType this ceases to be a problem. |
| 27008 | |
| 27009 | * kjs/JSType.h: |
| 27010 | |
| 27011 | 2007-11-08 Darin Adler <darin@apple.com> |
| 27012 | |
| 27013 | - fix build |
| 27014 | |
| 27015 | * kjs/nodes.h: Add missing parameter name. |
| 27016 | |
| 27017 | 2007-11-08 Eric Seidel <eric@webkit.org> |
| 27018 | |
| 27019 | Reviewed by darin. |
| 27020 | |
| 27021 | Add ExpressionNode subclass of Node, use it. |
| 27022 | |
| 27023 | * kjs/grammar.y: |
| 27024 | * kjs/nodes.cpp: |
| 27025 | (KJS::ForInNode::ForInNode): |
| 27026 | * kjs/nodes.h: |
| 27027 | (KJS::ExpressionNode::): |
| 27028 | (KJS::NullNode::): |
| 27029 | (KJS::NullNode::precedence): |
| 27030 | (KJS::BooleanNode::): |
| 27031 | (KJS::BooleanNode::precedence): |
| 27032 | (KJS::RegExpNode::): |
| 27033 | (KJS::RegExpNode::precedence): |
| 27034 | (KJS::ThisNode::): |
| 27035 | (KJS::ThisNode::precedence): |
| 27036 | (KJS::ResolveNode::): |
| 27037 | (KJS::ElementNode::): |
| 27038 | (KJS::ArrayNode::): |
| 27039 | (KJS::PropertyNode::): |
| 27040 | (KJS::PropertyNode::precedence): |
| 27041 | (KJS::PropertyNode::name): |
| 27042 | (KJS::PropertyListNode::): |
| 27043 | (KJS::ObjectLiteralNode::): |
| 27044 | (KJS::ObjectLiteralNode::precedence): |
| 27045 | (KJS::BracketAccessorNode::): |
| 27046 | (KJS::DotAccessorNode::): |
| 27047 | (KJS::DotAccessorNode::precedence): |
| 27048 | (KJS::ArgumentListNode::): |
| 27049 | (KJS::ArgumentsNode::): |
| 27050 | (KJS::NewExprNode::): |
| 27051 | (KJS::NewExprNode::precedence): |
| 27052 | (KJS::FunctionCallValueNode::): |
| 27053 | (KJS::FunctionCallValueNode::precedence): |
| 27054 | (KJS::FunctionCallResolveNode::): |
| 27055 | (KJS::FunctionCallBracketNode::): |
| 27056 | (KJS::FunctionCallBracketNode::precedence): |
| 27057 | (KJS::FunctionCallDotNode::): |
| 27058 | (KJS::FunctionCallDotNode::precedence): |
| 27059 | (KJS::PrePostResolveNode::): |
| 27060 | (KJS::PostfixBracketNode::): |
| 27061 | (KJS::PostfixBracketNode::precedence): |
| 27062 | (KJS::PostIncBracketNode::): |
| 27063 | (KJS::PostIncBracketNode::isIncrement): |
| 27064 | (KJS::PostDecBracketNode::): |
| 27065 | (KJS::PostDecBracketNode::isIncrement): |
| 27066 | (KJS::PostfixDotNode::): |
| 27067 | (KJS::PostfixDotNode::precedence): |
| 27068 | (KJS::PostIncDotNode::): |
| 27069 | (KJS::PostIncDotNode::isIncrement): |
| 27070 | (KJS::PostDecDotNode::): |
| 27071 | (KJS::PostDecDotNode::isIncrement): |
| 27072 | (KJS::PostfixErrorNode::): |
| 27073 | (KJS::PostfixErrorNode::precedence): |
| 27074 | (KJS::DeleteResolveNode::): |
| 27075 | (KJS::DeleteBracketNode::): |
| 27076 | (KJS::DeleteBracketNode::precedence): |
| 27077 | (KJS::DeleteDotNode::): |
| 27078 | (KJS::DeleteDotNode::precedence): |
| 27079 | (KJS::DeleteValueNode::): |
| 27080 | (KJS::DeleteValueNode::precedence): |
| 27081 | (KJS::VoidNode::): |
| 27082 | (KJS::VoidNode::precedence): |
| 27083 | (KJS::TypeOfResolveNode::): |
| 27084 | (KJS::TypeOfValueNode::): |
| 27085 | (KJS::PrefixBracketNode::): |
| 27086 | (KJS::PrefixBracketNode::precedence): |
| 27087 | (KJS::PreIncBracketNode::): |
| 27088 | (KJS::PreIncBracketNode::isIncrement): |
| 27089 | (KJS::PreDecBracketNode::): |
| 27090 | (KJS::PreDecBracketNode::isIncrement): |
| 27091 | (KJS::PrefixDotNode::): |
| 27092 | (KJS::PrefixDotNode::precedence): |
| 27093 | (KJS::PreIncDotNode::): |
| 27094 | (KJS::PreIncDotNode::isIncrement): |
| 27095 | (KJS::PreDecDotNode::): |
| 27096 | (KJS::PreDecDotNode::isIncrement): |
| 27097 | (KJS::PrefixErrorNode::): |
| 27098 | (KJS::PrefixErrorNode::precedence): |
| 27099 | (KJS::UnaryPlusNode::): |
| 27100 | (KJS::UnaryPlusNode::precedence): |
| 27101 | (KJS::NegateNode::): |
| 27102 | (KJS::NegateNode::precedence): |
| 27103 | (KJS::BitwiseNotNode::): |
| 27104 | (KJS::BitwiseNotNode::precedence): |
| 27105 | (KJS::LogicalNotNode::): |
| 27106 | (KJS::LogicalNotNode::precedence): |
| 27107 | (KJS::AddNode::): |
| 27108 | (KJS::AddNode::precedence): |
| 27109 | (KJS::LeftShiftNode::): |
| 27110 | (KJS::LeftShiftNode::precedence): |
| 27111 | (KJS::RightShiftNode::): |
| 27112 | (KJS::RightShiftNode::precedence): |
| 27113 | (KJS::UnsignedRightShiftNode::): |
| 27114 | (KJS::UnsignedRightShiftNode::precedence): |
| 27115 | (KJS::LessNode::): |
| 27116 | (KJS::LessNode::precedence): |
| 27117 | (KJS::GreaterNode::): |
| 27118 | (KJS::GreaterNode::precedence): |
| 27119 | (KJS::LessEqNode::): |
| 27120 | (KJS::LessEqNode::precedence): |
| 27121 | (KJS::GreaterEqNode::): |
| 27122 | (KJS::GreaterEqNode::precedence): |
| 27123 | (KJS::InstanceOfNode::): |
| 27124 | (KJS::InstanceOfNode::precedence): |
| 27125 | (KJS::InNode::): |
| 27126 | (KJS::InNode::precedence): |
| 27127 | (KJS::EqualNode::): |
| 27128 | (KJS::EqualNode::precedence): |
| 27129 | (KJS::NotEqualNode::): |
| 27130 | (KJS::NotEqualNode::precedence): |
| 27131 | (KJS::StrictEqualNode::): |
| 27132 | (KJS::StrictEqualNode::precedence): |
| 27133 | (KJS::NotStrictEqualNode::): |
| 27134 | (KJS::NotStrictEqualNode::precedence): |
| 27135 | (KJS::BitAndNode::): |
| 27136 | (KJS::BitAndNode::precedence): |
| 27137 | (KJS::BitOrNode::): |
| 27138 | (KJS::BitOrNode::precedence): |
| 27139 | (KJS::BitXOrNode::): |
| 27140 | (KJS::BitXOrNode::precedence): |
| 27141 | (KJS::LogicalAndNode::): |
| 27142 | (KJS::LogicalAndNode::precedence): |
| 27143 | (KJS::LogicalOrNode::): |
| 27144 | (KJS::LogicalOrNode::precedence): |
| 27145 | (KJS::ConditionalNode::): |
| 27146 | (KJS::ConditionalNode::precedence): |
| 27147 | (KJS::ReadModifyResolveNode::): |
| 27148 | (KJS::ReadModifyResolveNode::precedence): |
| 27149 | (KJS::AssignResolveNode::): |
| 27150 | (KJS::AssignResolveNode::precedence): |
| 27151 | (KJS::ReadModifyBracketNode::): |
| 27152 | (KJS::ReadModifyBracketNode::precedence): |
| 27153 | (KJS::AssignBracketNode::): |
| 27154 | (KJS::AssignBracketNode::precedence): |
| 27155 | (KJS::AssignDotNode::): |
| 27156 | (KJS::AssignDotNode::precedence): |
| 27157 | (KJS::ReadModifyDotNode::): |
| 27158 | (KJS::ReadModifyDotNode::precedence): |
| 27159 | (KJS::AssignErrorNode::): |
| 27160 | (KJS::AssignErrorNode::precedence): |
| 27161 | (KJS::CommaNode::): |
| 27162 | (KJS::CommaNode::precedence): |
| 27163 | (KJS::AssignExprNode::): |
| 27164 | (KJS::AssignExprNode::precedence): |
| 27165 | (KJS::ExprStatementNode::): |
| 27166 | (KJS::IfNode::): |
| 27167 | (KJS::DoWhileNode::): |
| 27168 | (KJS::WhileNode::): |
| 27169 | (KJS::ReturnNode::): |
| 27170 | (KJS::WithNode::): |
| 27171 | (KJS::ThrowNode::): |
| 27172 | (KJS::ParameterNode::): |
| 27173 | (KJS::CaseClauseNode::): |
| 27174 | (KJS::CaseClauseNode::precedence): |
| 27175 | (KJS::ClauseListNode::): |
| 27176 | (KJS::SwitchNode::): |
| 27177 | |
| 27178 | 2007-11-08 Oliver Hunt <oliver@apple.com> |
| 27179 | |
| 27180 | Reviewed by Sam. |
| 27181 | |
| 27182 | Add a fast path for bitwise-and of two immediate numbers for a 0.7% improvement in SunSpider (4% bitop improvement). |
| 27183 | |
| 27184 | This only improves bitwise-and performance, as the additional logic required |
| 27185 | for similar code paths on or, xor, and shifting requires additional operations |
| 27186 | and branches that negate (and in certain cases, regress) any advantage we might |
| 27187 | otherwise receive. |
| 27188 | |
| 27189 | This improves performance on all bitop tests, the cryptography tests, as well as |
| 27190 | the string-base64 and string-unpack-code tests. No significant degradation on |
| 27191 | any other tests. |
| 27192 | |
| 27193 | * kjs/JSImmediate.h: |
| 27194 | (KJS::JSImmediate::areBothImmediateNumbers): |
| 27195 | (KJS::JSImmediate::andImmediateNumbers): |
| 27196 | * kjs/nodes.cpp: |
| 27197 | (KJS::BitAndNode::evaluate): |
| 27198 | * kjs/value.h: |
| 27199 | (KJS::jsNumberFromAnd): |
| 27200 | |
| 27201 | 2007-11-08 Adam Roben <aroben@apple.com> |
| 27202 | |
| 27203 | Stop using KJS inside of MathExtras.h |
| 27204 | |
| 27205 | Reviewed by Darin. |
| 27206 | |
| 27207 | * wtf/MathExtras.h: Removed an unused header, and a now-unused |
| 27208 | forward-declaration. |
| 27209 | (wtf_atan2): Use std::numeric_limits intead of KJS. |
| 27210 | |
| 27211 | 2007-11-08 Sam Weinig <sam@webkit.org> |
| 27212 | |
| 27213 | Windows build fix. |
| 27214 | |
| 27215 | * kjs/date_object.cpp: |
| 27216 | (KJS::DateProtoFuncToLocaleString::callAsFunction): Fix unused arg warning. |
| 27217 | (KJS::DateProtoFuncToLocaleDateString::callAsFunction): ditto |
| 27218 | (KJS::DateProtoFuncToLocaleTimeString::callAsFunction): ditto |
| 27219 | |
| 27220 | 2007-11-08 Mark Rowe <mrowe@apple.com> |
| 27221 | |
| 27222 | Gtk build fix. |
| 27223 | |
| 27224 | * kjs/lookup.h: Add missing include. |
| 27225 | |
| 27226 | 2007-11-08 Sam Weinig <sam@webkit.org> |
| 27227 | |
| 27228 | Reviewed by Darin. |
| 27229 | |
| 27230 | Convert JavaScript internal function objects to use one class per |
| 27231 | function. This avoids a switch statement inside what used to be |
| 27232 | the shared function classes and will allow Shark to better analyze |
| 27233 | the code. |
| 27234 | |
| 27235 | To make this switch, the value property of the HashEntry was changed |
| 27236 | to a union of an intptr_t (which is used to continue handle valueGetters) |
| 27237 | and function pointer which points to a static constructor for the |
| 27238 | individual new function objects. |
| 27239 | |
| 27240 | SunSpider claims this is a 1.0% speedup. |
| 27241 | |
| 27242 | * kjs/array_object.cpp: |
| 27243 | (KJS::ArrayPrototype::getOwnPropertySlot): |
| 27244 | (KJS::getProperty): |
| 27245 | (KJS::ArrayProtoFuncToString::callAsFunction): |
| 27246 | (KJS::ArrayProtoFuncToLocaleString::callAsFunction): |
| 27247 | (KJS::ArrayProtoFuncJoin::callAsFunction): |
| 27248 | (KJS::ArrayProtoFuncConcat::callAsFunction): |
| 27249 | (KJS::ArrayProtoFuncPop::callAsFunction): |
| 27250 | (KJS::ArrayProtoFuncPush::callAsFunction): |
| 27251 | (KJS::ArrayProtoFuncReverse::callAsFunction): |
| 27252 | (KJS::ArrayProtoFuncShift::callAsFunction): |
| 27253 | (KJS::ArrayProtoFuncSlice::callAsFunction): |
| 27254 | (KJS::ArrayProtoFuncSort::callAsFunction): |
| 27255 | (KJS::ArrayProtoFuncSplice::callAsFunction): |
| 27256 | (KJS::ArrayProtoFuncUnShift::callAsFunction): |
| 27257 | (KJS::ArrayProtoFuncFilter::callAsFunction): |
| 27258 | (KJS::ArrayProtoFuncMap::callAsFunction): |
| 27259 | (KJS::ArrayProtoFuncEvery::callAsFunction): |
| 27260 | (KJS::ArrayProtoFuncForEach::callAsFunction): |
| 27261 | (KJS::ArrayProtoFuncSome::callAsFunction): |
| 27262 | (KJS::ArrayProtoFuncIndexOf::callAsFunction): |
| 27263 | (KJS::ArrayProtoFuncLastIndexOf::callAsFunction): |
| 27264 | * kjs/array_object.h: |
| 27265 | (KJS::ArrayPrototype::classInfo): |
| 27266 | * kjs/create_hash_table: |
| 27267 | * kjs/date_object.cpp: |
| 27268 | (KJS::DatePrototype::getOwnPropertySlot): |
| 27269 | (KJS::DateProtoFuncToString::callAsFunction): |
| 27270 | (KJS::DateProtoFuncToUTCString::callAsFunction): |
| 27271 | (KJS::DateProtoFuncToDateString::callAsFunction): |
| 27272 | (KJS::DateProtoFuncToTimeString::callAsFunction): |
| 27273 | (KJS::DateProtoFuncToLocaleString::callAsFunction): |
| 27274 | (KJS::DateProtoFuncToLocaleDateString::callAsFunction): |
| 27275 | (KJS::DateProtoFuncToLocaleTimeString::callAsFunction): |
| 27276 | (KJS::DateProtoFuncValueOf::callAsFunction): |
| 27277 | (KJS::DateProtoFuncGetTime::callAsFunction): |
| 27278 | (KJS::DateProtoFuncGetFullYear::callAsFunction): |
| 27279 | (KJS::DateProtoFuncGetUTCFullYear::callAsFunction): |
| 27280 | (KJS::DateProtoFuncToGMTString::callAsFunction): |
| 27281 | (KJS::DateProtoFuncGetMonth::callAsFunction): |
| 27282 | (KJS::DateProtoFuncGetUTCMonth::callAsFunction): |
| 27283 | (KJS::DateProtoFuncGetDate::callAsFunction): |
| 27284 | (KJS::DateProtoFuncGetUTCDate::callAsFunction): |
| 27285 | (KJS::DateProtoFuncGetDay::callAsFunction): |
| 27286 | (KJS::DateProtoFuncGetUTCDay::callAsFunction): |
| 27287 | (KJS::DateProtoFuncGetHours::callAsFunction): |
| 27288 | (KJS::DateProtoFuncGetUTCHours::callAsFunction): |
| 27289 | (KJS::DateProtoFuncGetMinutes::callAsFunction): |
| 27290 | (KJS::DateProtoFuncGetUTCMinutes::callAsFunction): |
| 27291 | (KJS::DateProtoFuncGetSeconds::callAsFunction): |
| 27292 | (KJS::DateProtoFuncGetUTCSeconds::callAsFunction): |
| 27293 | (KJS::DateProtoFuncGetMilliSeconds::callAsFunction): |
| 27294 | (KJS::DateProtoFuncGetUTCMilliseconds::callAsFunction): |
| 27295 | (KJS::DateProtoFuncGetTimezoneOffset::callAsFunction): |
| 27296 | (KJS::DateProtoFuncSetTime::callAsFunction): |
| 27297 | (KJS::DateProtoFuncSetMilliSeconds::callAsFunction): |
| 27298 | (KJS::DateProtoFuncSetUTCMilliseconds::callAsFunction): |
| 27299 | (KJS::DateProtoFuncSetSeconds::callAsFunction): |
| 27300 | (KJS::DateProtoFuncSetUTCSeconds::callAsFunction): |
| 27301 | (KJS::DateProtoFuncSetMinutes::callAsFunction): |
| 27302 | (KJS::DateProtoFuncSetUTCMinutes::callAsFunction): |
| 27303 | (KJS::DateProtoFuncSetHours::callAsFunction): |
| 27304 | (KJS::DateProtoFuncSetUTCHours::callAsFunction): |
| 27305 | (KJS::DateProtoFuncSetDate::callAsFunction): |
| 27306 | (KJS::DateProtoFuncSetUTCDate::callAsFunction): |
| 27307 | (KJS::DateProtoFuncSetMonth::callAsFunction): |
| 27308 | (KJS::DateProtoFuncSetUTCMonth::callAsFunction): |
| 27309 | (KJS::DateProtoFuncSetFullYear::callAsFunction): |
| 27310 | (KJS::DateProtoFuncSetUTCFullYear::callAsFunction): |
| 27311 | (KJS::DateProtoFuncSetYear::callAsFunction): |
| 27312 | (KJS::DateProtoFuncGetYear::callAsFunction): |
| 27313 | * kjs/date_object.h: |
| 27314 | * kjs/lookup.cpp: |
| 27315 | (KJS::Lookup::find): |
| 27316 | * kjs/lookup.h: |
| 27317 | (KJS::HashEntry::): |
| 27318 | (KJS::staticFunctionGetter): |
| 27319 | (KJS::staticValueGetter): |
| 27320 | (KJS::getStaticPropertySlot): |
| 27321 | (KJS::getStaticFunctionSlot): |
| 27322 | (KJS::lookupPut): |
| 27323 | * kjs/math_object.cpp: |
| 27324 | (KJS::MathObjectImp::getOwnPropertySlot): |
| 27325 | (KJS::MathProtoFuncAbs::callAsFunction): |
| 27326 | (KJS::MathProtoFuncACos::callAsFunction): |
| 27327 | (KJS::MathProtoFuncASin::callAsFunction): |
| 27328 | (KJS::MathProtoFuncATan::callAsFunction): |
| 27329 | (KJS::MathProtoFuncATan2::callAsFunction): |
| 27330 | (KJS::MathProtoFuncCeil::callAsFunction): |
| 27331 | (KJS::MathProtoFuncCos::callAsFunction): |
| 27332 | (KJS::MathProtoFuncExp::callAsFunction): |
| 27333 | (KJS::MathProtoFuncFloor::callAsFunction): |
| 27334 | (KJS::MathProtoFuncLog::callAsFunction): |
| 27335 | (KJS::MathProtoFuncMax::callAsFunction): |
| 27336 | (KJS::MathProtoFuncMin::callAsFunction): |
| 27337 | (KJS::MathProtoFuncPow::callAsFunction): |
| 27338 | (KJS::MathProtoFuncRandom::callAsFunction): |
| 27339 | (KJS::MathProtoFuncRound::callAsFunction): |
| 27340 | (KJS::MathProtoFuncSin::callAsFunction): |
| 27341 | (KJS::MathProtoFuncSqrt::callAsFunction): |
| 27342 | (KJS::MathProtoFuncTan::callAsFunction): |
| 27343 | * kjs/math_object.h: |
| 27344 | (KJS::MathObjectImp::classInfo): |
| 27345 | (KJS::MathObjectImp::): |
| 27346 | * kjs/string_object.cpp: |
| 27347 | (KJS::StringPrototype::getOwnPropertySlot): |
| 27348 | (KJS::StringProtoFuncToString::callAsFunction): |
| 27349 | (KJS::StringProtoFuncValueOf::callAsFunction): |
| 27350 | (KJS::StringProtoFuncCharAt::callAsFunction): |
| 27351 | (KJS::StringProtoFuncCharCodeAt::callAsFunction): |
| 27352 | (KJS::StringProtoFuncConcat::callAsFunction): |
| 27353 | (KJS::StringProtoFuncIndexOf::callAsFunction): |
| 27354 | (KJS::StringProtoFuncLastIndexOf::callAsFunction): |
| 27355 | (KJS::StringProtoFuncMatch::callAsFunction): |
| 27356 | (KJS::StringProtoFuncSearch::callAsFunction): |
| 27357 | (KJS::StringProtoFuncReplace::callAsFunction): |
| 27358 | (KJS::StringProtoFuncSlice::callAsFunction): |
| 27359 | (KJS::StringProtoFuncSplit::callAsFunction): |
| 27360 | (KJS::StringProtoFuncSubstr::callAsFunction): |
| 27361 | (KJS::StringProtoFuncSubstring::callAsFunction): |
| 27362 | (KJS::StringProtoFuncToLowerCase::callAsFunction): |
| 27363 | (KJS::StringProtoFuncToUpperCase::callAsFunction): |
| 27364 | (KJS::StringProtoFuncToLocaleLowerCase::callAsFunction): |
| 27365 | (KJS::StringProtoFuncToLocaleUpperCase::callAsFunction): |
| 27366 | (KJS::StringProtoFuncLocaleCompare::callAsFunction): |
| 27367 | (KJS::StringProtoFuncBig::callAsFunction): |
| 27368 | (KJS::StringProtoFuncSmall::callAsFunction): |
| 27369 | (KJS::StringProtoFuncBlink::callAsFunction): |
| 27370 | (KJS::StringProtoFuncBold::callAsFunction): |
| 27371 | (KJS::StringProtoFuncFixed::callAsFunction): |
| 27372 | (KJS::StringProtoFuncItalics::callAsFunction): |
| 27373 | (KJS::StringProtoFuncStrike::callAsFunction): |
| 27374 | (KJS::StringProtoFuncSub::callAsFunction): |
| 27375 | (KJS::StringProtoFuncSup::callAsFunction): |
| 27376 | (KJS::StringProtoFuncFontcolor::callAsFunction): |
| 27377 | (KJS::StringProtoFuncFontsize::callAsFunction): |
| 27378 | (KJS::StringProtoFuncAnchor::callAsFunction): |
| 27379 | (KJS::StringProtoFuncLink::callAsFunction): |
| 27380 | * kjs/string_object.h: |
| 27381 | |
| 27382 | 2007-11-08 Adam Roben <aroben@apple.com> |
| 27383 | |
| 27384 | Windows build fix |
| 27385 | |
| 27386 | Reviewed by Sam and Ada. |
| 27387 | |
| 27388 | * wtf/MathExtras.h: Get rid of a circular #include dependency to fix |
| 27389 | the build. |
| 27390 | |
| 27391 | 2007-11-08 Adam Roben <aroben@apple.com> |
| 27392 | |
| 27393 | Fix a precedence warning on Windows |
| 27394 | |
| 27395 | * kjs/JSImmediate.h: |
| 27396 | (KJS::JSImmediate::toBoolean): |
| 27397 | |
| 27398 | 2007-11-08 Mark Rowe <mrowe@apple.com> |
| 27399 | |
| 27400 | Build fix for JavaScriptGlue. |
| 27401 | |
| 27402 | * wtf/MathExtras.h: Include stdlib.h for srand and RAND_MAX. |
| 27403 | |
| 27404 | 2007-11-08 Darin Adler <darin@apple.com> |
| 27405 | |
| 27406 | - Windows build fix |
| 27407 | |
| 27408 | * kjs/JSImmediate.h: Include MathExtras.h rather than math.h since this file uses "signbit". |
| 27409 | |
| 27410 | 2007-11-08 Oliver Hunt <oliver@apple.com> |
| 27411 | |
| 27412 | Reviewed by Darin. |
| 27413 | |
| 27414 | Replace the use of floats for immediate values with the use of integers for a 4.5% improvement in SunSpider. |
| 27415 | |
| 27416 | Unfortunately this change results in NaN, +Inf, -Inf, and -0 being heap allocated now, but |
| 27417 | we should now have faster array access, faster immediate to double conversion, and the |
| 27418 | potential to further improve bitwise operators in future. |
| 27419 | |
| 27420 | This also removes the need for unions to avoid strict aliasing problems when extracting |
| 27421 | a value from immediates. |
| 27422 | |
| 27423 | * kjs/JSImmediate.h: |
| 27424 | (KJS::JSImmediate::trueImmediate): |
| 27425 | (KJS::JSImmediate::falseImmediate): |
| 27426 | (KJS::JSImmediate::undefinedImmediate): |
| 27427 | (KJS::JSImmediate::nullImmediate): |
| 27428 | (KJS::JSImmediate::toBoolean): |
| 27429 | * kjs/value.h: |
| 27430 | (KJS::jsNaN): |
| 27431 | |
| 27432 | 2007-11-07 Eric Seidel <eric@webkit.org> |
| 27433 | |
| 27434 | Reviewed by Darin and Oliver. |
| 27435 | |
| 27436 | Add evaluateToNumber parallel evaluation tree to speed up number operations. |
| 27437 | Make ImmediateNumberNode a subclass of NumberNode. |
| 27438 | Share evaluate logic between evaluate and evaluateToNumber using inline functions |
| 27439 | There is still a lot of improvement to be made here. |
| 27440 | |
| 27441 | SunSpider claims this is a 1.0% speedup overall (nbody 7.9%), base64 slowing 2.0% |
| 27442 | Given the huge win that this prepares us for with simple type inferencing I see the small |
| 27443 | regression in base64 being worth the substantial overall improvement. |
| 27444 | |
| 27445 | * kjs/grammar.y: |
| 27446 | * kjs/nodes.cpp: |
| 27447 | (KJS::Node::evaluateToNumber): |
| 27448 | (KJS::NumberNode::evaluate): |
| 27449 | (KJS::NumberNode::evaluateToNumber): |
| 27450 | (KJS::StringNode::evaluateToNumber): |
| 27451 | (KJS::LocalVarAccessNode::inlineEvaluate): |
| 27452 | (KJS::LocalVarAccessNode::evaluate): |
| 27453 | (KJS::LocalVarAccessNode::evaluateToNumber): |
| 27454 | (KJS::BracketAccessorNode::inlineEvaluate): |
| 27455 | (KJS::BracketAccessorNode::evaluate): |
| 27456 | (KJS::BracketAccessorNode::evaluateToNumber): |
| 27457 | (KJS::NegateNode::evaluate): |
| 27458 | (KJS::NegateNode::evaluateToNumber): |
| 27459 | (KJS::MultNode::inlineEvaluateToNumber): |
| 27460 | (KJS::MultNode::evaluate): |
| 27461 | (KJS::MultNode::evaluateToNumber): |
| 27462 | (KJS::DivNode::inlineEvaluateToNumber): |
| 27463 | (KJS::DivNode::evaluate): |
| 27464 | (KJS::DivNode::evaluateToNumber): |
| 27465 | (KJS::ModNode::inlineEvaluateToNumber): |
| 27466 | (KJS::ModNode::evaluate): |
| 27467 | (KJS::ModNode::evaluateToNumber): |
| 27468 | (KJS::throwOutOfMemoryErrorToNumber): |
| 27469 | (KJS::addSlowCaseToNumber): |
| 27470 | (KJS::add): |
| 27471 | (KJS::addToNumber): |
| 27472 | (KJS::AddNode::evaluateToNumber): |
| 27473 | (KJS::SubNode::inlineEvaluateToNumber): |
| 27474 | (KJS::SubNode::evaluate): |
| 27475 | (KJS::SubNode::evaluateToNumber): |
| 27476 | (KJS::valueForReadModifyAssignment): |
| 27477 | (KJS::ReadModifyLocalVarNode::evaluate): |
| 27478 | (KJS::ReadModifyResolveNode::evaluate): |
| 27479 | (KJS::ReadModifyDotNode::evaluate): |
| 27480 | (KJS::ReadModifyBracketNode::evaluate): |
| 27481 | * kjs/nodes.h: |
| 27482 | (KJS::Node::): |
| 27483 | (KJS::NumberNode::): |
| 27484 | (KJS::ImmediateNumberNode::): |
| 27485 | (KJS::AddNode::precedence): |
| 27486 | * kjs/nodes2string.cpp: |
| 27487 | (KJS::NumberNode::streamTo): |
| 27488 | |
| 27489 | 2007-11-07 Mark Rowe <mrowe@apple.com> |
| 27490 | |
| 27491 | Reviewed by Eric. |
| 27492 | |
| 27493 | Fix up initialization after being mangled in r27572, and remove the |
| 27494 | ternary expression as extraCost will always be zero for the numeric |
| 27495 | heap. |
| 27496 | |
| 27497 | * kjs/collector.cpp: |
| 27498 | (KJS::Collector::heapAllocate): |
| 27499 | |
| 27500 | 2007-11-07 Mark Rowe <mrowe@apple.com> |
| 27501 | |
| 27502 | Gtk build fix. |
| 27503 | |
| 27504 | * kjs/regexp_object.cpp: |
| 27505 | |
| 27506 | 2007-11-07 Geoffrey Garen <ggaren@apple.com> |
| 27507 | |
| 27508 | Reviewed by Beth Dakin. |
| 27509 | |
| 27510 | Eliminated a bogus (though compiled-out) branch in the collector. |
| 27511 | |
| 27512 | * kjs/collector.cpp: |
| 27513 | (KJS::Collector::heapAllocate): |
| 27514 | |
| 27515 | 2007-11-06 Geoffrey Garen <ggaren@apple.com> |
| 27516 | |
| 27517 | Reviewed by Darin Adler. |
| 27518 | |
| 27519 | Fixed part of http://bugs.webkit.org/show_bug.cgi?id=15861 |
| 27520 | 5.8% of string-validate-input.js is spent creating RegExpImps |
| 27521 | |
| 27522 | Put RegExpImp properties into a static hashtable to avoid a slew of |
| 27523 | PropertyMap churn when creating a RegExpImp. |
| 27524 | |
| 27525 | Factored important bits of regular expression implementation out of |
| 27526 | RegExpImp (the JS object) and into RegExp (the PCRE wrapper class), |
| 27527 | making RegExp a ref-counted class. (This will help later.) |
| 27528 | |
| 27529 | Removed PCRE_POSIX support because I didn't quite know how to test it |
| 27530 | and keep it working with these changes. |
| 27531 | |
| 27532 | 1.1% SunSpider speedup. 5.8% speedup on string-validate-input.js. |
| 27533 | |
| 27534 | * kjs/regexp.h: A few interface changes: |
| 27535 | 1. Renamed "subpatterns()" => "numSubpatterns()" |
| 27536 | 2. Made flag enumeration private and replaced it with public getters for |
| 27537 | specific flags. |
| 27538 | 3. Made RegExp ref-counted so RegExps can be shared by RegExpImps. |
| 27539 | 4. Made RegExp take a string of flags instead of an int, eliminating |
| 27540 | duplicated flag parsing code elsewhere. |
| 27541 | |
| 27542 | * kjs/regexp_object.cpp: |
| 27543 | (KJS::RegExpProtoFunc::callAsFunction): For RegExp.compile: |
| 27544 | - Fixed a bug where compile(undefined) would throw an exception. |
| 27545 | - Removed some now-redundant code. |
| 27546 | - Used RegExp sharing to eliminate an allocation and a bunch of |
| 27547 | PropertyMap thrash. (Not a big win since compile is a deprecated |
| 27548 | function. I mainly did this to test the plubming.) |
| 27549 | |
| 27550 | 2007-11-07 Simon Hausmann <hausmann@kde.org> |
| 27551 | |
| 27552 | Reviewed by nobody, Qt/Windows build fix. |
| 27553 | |
| 27554 | JavaScriptCore.pri expects OBJECTS_DIR to be set, so set it in |
| 27555 | testkjs.pro, too, where it's included from. |
| 27556 | |
| 27557 | * kjs/testkjs.pro: |
| 27558 | |
| 27559 | 2007-11-07 Simon Hausmann <shausman@trolltech.com> |
| 27560 | |
| 27561 | Reviewed by Lars. |
| 27562 | |
| 27563 | Fix "nmake clean" for the Qt/Windows build by replacing tmp/ with a variable that ends with the correct type of slash/backslash depending on the choice of compiler/make tool. |
| 27564 | |
| 27565 | * JavaScriptCore.pri: |
| 27566 | * pcre/pcre.pri: |
| 27567 | |
| 27568 | 2007-11-07 Lars Knoll <lars@trolltech.com> |
| 27569 | |
| 27570 | Reviewed by Simon. |
| 27571 | |
| 27572 | fix umemcasecmp |
| 27573 | |
| 27574 | Pretty embarrassing bug. Has the potential to fix quite a few test failures. |
| 27575 | |
| 27576 | * wtf/unicode/qt4/UnicodeQt4.h: |
| 27577 | (WTF::Unicode::umemcasecmp): |
| 27578 | |
| 27579 | 2007-11-06 Maciej Stachowiak <mjs@apple.com> |
| 27580 | |
| 27581 | Reviewed by Eric. |
| 27582 | |
| 27583 | - only collect when the heap is full, unless we have lots of extra cost garbage |
| 27584 | |
| 27585 | 1.1% SunSpider speedup. |
| 27586 | |
| 27587 | This shouldn't hit memory use much since the extra space in those |
| 27588 | blocks hangs around either way. |
| 27589 | |
| 27590 | * kjs/collector.cpp: |
| 27591 | (KJS::Collector::heapAllocate): |
| 27592 | (KJS::Collector::collect): Fix logic error that reversed the sense of collect's |
| 27593 | return value. |
| 27594 | |
| 27595 | 2007-11-06 Oliver Hunt <oliver@apple.com> |
| 27596 | |
| 27597 | Reviewed by Maciej. |
| 27598 | |
| 27599 | Avoid unnecessarily boxing the result from post inc/decrement for 0.3% gain in sunspider |
| 27600 | |
| 27601 | We now convert the common 'for (...; ...; <var>++) ...' to the semantically identical |
| 27602 | 'for (...; ...; ++<var>) ...'. |
| 27603 | |
| 27604 | * kjs/nodes.cpp: |
| 27605 | (KJS::PostIncResolveNode::optimizeForUnnecessaryResult): |
| 27606 | (KJS::PostIncLocalVarNode::evaluate): |
| 27607 | (KJS::PostIncLocalVarNode::optimizeForUnnecessaryResult): |
| 27608 | (KJS::PostDecResolveNode::optimizeForUnnecessaryResult): |
| 27609 | (KJS::PostDecLocalVarNode::evaluate): |
| 27610 | (KJS::PostDecLocalVarNode::optimizeForUnnecessaryResult): |
| 27611 | * kjs/nodes.h: |
| 27612 | (KJS::PrePostResolveNode::): |
| 27613 | (KJS::PostIncResolveNode::): |
| 27614 | (KJS::PostIncLocalVarNode::): |
| 27615 | (KJS::PostDecResolveNode::): |
| 27616 | (KJS::PostDecLocalVarNode::): |
| 27617 | (KJS::PreIncResolveNode::): |
| 27618 | (KJS::PreDecResolveNode::): |
| 27619 | (KJS::ForNode::ForNode): |
| 27620 | |
| 27621 | 2007-11-06 Eric Seidel <eric@webkit.org> |
| 27622 | |
| 27623 | Reviewed by darin. |
| 27624 | |
| 27625 | This fixes a regressed layout test for string + object |
| 27626 | |
| 27627 | SunSpider claims this was an overall 0.3% speedup, although some individual tests were slower. |
| 27628 | |
| 27629 | * kjs/nodes.cpp: |
| 27630 | (KJS::add): remove erroneous "fast path" for string + * |
| 27631 | |
| 27632 | 2007-11-06 Geoffrey Garen <ggaren@apple.com> |
| 27633 | |
| 27634 | Reviewed by Eric Seidel. |
| 27635 | |
| 27636 | Added toJSNumber, a fast path for converting a JSValue to a JS number, |
| 27637 | and deployed it in postfix expressions. In the fast case this |
| 27638 | eliminates a call to jsNumber. |
| 27639 | |
| 27640 | 0.4% speedup on SunSpider. |
| 27641 | |
| 27642 | * ChangeLog: |
| 27643 | * kjs/nodes.cpp: |
| 27644 | (KJS::PostIncResolveNode::evaluate): |
| 27645 | (KJS::PostIncLocalVarNode::evaluate): |
| 27646 | (KJS::PostDecResolveNode::evaluate): |
| 27647 | (KJS::PostDecLocalVarNode::evaluate): |
| 27648 | (KJS::PostIncBracketNode::evaluate): |
| 27649 | (KJS::PostDecBracketNode::evaluate): |
| 27650 | (KJS::PostIncDotNode::evaluate): |
| 27651 | (KJS::PostDecDotNode::evaluate): |
| 27652 | (KJS::UnaryPlusNode::evaluate): |
| 27653 | * kjs/value.h: |
| 27654 | (KJS::JSValue::toJSNumber): |
| 27655 | |
| 27656 | 2007-11-06 Darin Adler <darin@apple.com> |
| 27657 | |
| 27658 | Reviewed by Maciej. |
| 27659 | |
| 27660 | - http://bugs.webkit.org/show_bug.cgi?id=15846 |
| 27661 | REGRESSION (r27387): Memory corruption when running fast/js/kde/delete.html |
| 27662 | |
| 27663 | There was a mistake in the algorithm used to find an empty slot in the property |
| 27664 | map entries vector; when we were putting in a new property value and not overwriting |
| 27665 | an existing deleted sentinel, we would enlarge the entries vector, but would not |
| 27666 | overwrite the stale data that's in the new part. It was easy to pin this down by |
| 27667 | turning on property map consistency checks -- I never would have landed with this |
| 27668 | bug if I had run the regression tests once with consistency checks on! |
| 27669 | |
| 27670 | * kjs/property_map.cpp: (KJS::PropertyMap::put): Changed logic for the case where |
| 27671 | foundDeletedElement is false to always use the item at the end of the entries vector. |
| 27672 | Also allowed me to merge with the logic for the "no deleted sentinels at all" case. |
| 27673 | |
| 27674 | 2007-11-06 Oliver Hunt <oliver@apple.com> |
| 27675 | |
| 27676 | RS=Darin. |
| 27677 | |
| 27678 | Fix previous patch to use a 3 bit shift, a 16 bit shift causes a regression in sunspider. |
| 27679 | |
| 27680 | * kjs/nodes.cpp: |
| 27681 | (KJS::add): |
| 27682 | |
| 27683 | 2007-11-06 Oliver Hunt <oliver@apple.com> |
| 27684 | |
| 27685 | Reviewed by Darin. |
| 27686 | |
| 27687 | Replace boolean comparisons in AddNode with mask |
| 27688 | comparisons for a 0.2% improvement in sunspider. |
| 27689 | |
| 27690 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 27691 | * kjs/nodes.cpp: |
| 27692 | (KJS::add): |
| 27693 | |
| 27694 | 2007-11-06 Eric Seidel <eric@webkit.org> |
| 27695 | |
| 27696 | Reviewed by darin. |
| 27697 | |
| 27698 | SunSpider claims this is a 1.1% speedup. |
| 27699 | |
| 27700 | * kjs/nodes.cpp: |
| 27701 | (KJS::throwOutOfMemoryError): Added, non inline. |
| 27702 | (KJS::addSlowCase): renamed from add(), non inline. |
| 27703 | (KJS::add): add fast path for String + String, Number + Number and String + * |
| 27704 | |
| 27705 | 2007-11-06 Eric Seidel <eric@webkit.org> |
| 27706 | |
| 27707 | Reviewed by mjs. |
| 27708 | |
| 27709 | Avoid more UString creation. |
| 27710 | |
| 27711 | SunSpider claims this is a 0.4% speedup. |
| 27712 | |
| 27713 | * kjs/regexp_object.cpp: |
| 27714 | (KJS::RegExpObjectImp::construct): use UString::find(UChar) |
| 27715 | |
| 27716 | 2007-11-05 Mark Rowe <mrowe@apple.com> |
| 27717 | |
| 27718 | Mac build fix. |
| 27719 | |
| 27720 | * kjs/array_object.cpp: |
| 27721 | (KJS::ArrayProtoFunc::callAsFunction): |
| 27722 | |
| 27723 | 2007-11-05 Adam Roben <aroben@apple.com> |
| 27724 | |
| 27725 | Windows build fix |
| 27726 | |
| 27727 | * kjs/list.h: |
| 27728 | |
| 27729 | 2007-11-05 Mark Rowe <mrowe@apple.com> |
| 27730 | |
| 27731 | Build fix. Add missing #include. |
| 27732 | |
| 27733 | * kjs/operations.cpp: |
| 27734 | |
| 27735 | 2007-11-05 Eric Seidel <eric@webkit.org> |
| 27736 | |
| 27737 | Reviewed by mjs. |
| 27738 | |
| 27739 | Remove another call to toString(exec) |
| 27740 | |
| 27741 | SunSpider claims this is a 0.5% speedup. |
| 27742 | |
| 27743 | * kjs/operations.cpp: |
| 27744 | (KJS::equal): remove another toString |
| 27745 | |
| 27746 | 2007-11-05 Eric Seidel <eric@webkit.org> |
| 27747 | |
| 27748 | * kjs/operations.cpp: |
| 27749 | (KJS::equal): correct broken change. |
| 27750 | |
| 27751 | 2007-11-05 Eric Seidel <eric@webkit.org> |
| 27752 | |
| 27753 | Reviewed by mjs. |
| 27754 | |
| 27755 | Remove one more call to toString(exec). |
| 27756 | |
| 27757 | SunSpider claims this is a 0.7% speedup. |
| 27758 | |
| 27759 | * kjs/operations.cpp: |
| 27760 | (KJS::equal): remove a call to toString() |
| 27761 | |
| 27762 | 2007-11-05 Mark Rowe <mrowe@apple.com> |
| 27763 | |
| 27764 | Gtk build fix. |
| 27765 | |
| 27766 | * pcre/pcre.pri: |
| 27767 | |
| 27768 | 2007-11-05 Mark Rowe <mrowe@apple.com> |
| 27769 | |
| 27770 | Gtk build fix. |
| 27771 | |
| 27772 | * kjs/list.cpp: |
| 27773 | |
| 27774 | 2007-11-05 Geoffrey Garen <ggaren@apple.com> |
| 27775 | |
| 27776 | Touched a file to test my new HTTP access. |
| 27777 | |
| 27778 | * kjs/scope_chain.cpp: |
| 27779 | |
| 27780 | 2007-11-05 Alp Toker <alp@atoker.com> |
| 27781 | |
| 27782 | Unreviewed build fix for qmake-based ports. |
| 27783 | |
| 27784 | Someone with a better understanding of qmake still needs to sort out |
| 27785 | the INCLUDEPATH/DEPENDPATH mess. |
| 27786 | |
| 27787 | * JavaScriptCore.pri: |
| 27788 | |
| 27789 | 2007-11-05 Geoffrey Garen <ggaren@apple.com> |
| 27790 | |
| 27791 | Reviewed by Darin Adler. |
| 27792 | |
| 27793 | http://bugs.webkit.org/show_bug.cgi?id=15835 |
| 27794 | |
| 27795 | Switched List implementation from a custom heap allocator to an inline |
| 27796 | Vector, for a disappointing .5% SunSpider speedup. |
| 27797 | |
| 27798 | Also renamed List::slice to List::getSlice because "get" is the |
| 27799 | conventional prefix for functions returning a value through an out |
| 27800 | parameter. |
| 27801 | |
| 27802 | * kjs/array_object.cpp: |
| 27803 | (KJS::ArrayProtoFunc::callAsFunction): Removed some redundant function |
| 27804 | calls and memory accesses. |
| 27805 | |
| 27806 | * kjs/bool_object.cpp: |
| 27807 | (BooleanObjectImp::construct): Removed questionable use of iterator. |
| 27808 | |
| 27809 | * kjs/list.cpp: |
| 27810 | * kjs/list.h: New List class, implemented in terms of Vector. Two |
| 27811 | interesting differences: |
| 27812 | 1. The inline capacity is 8, not 5. Many of the Lists constructed |
| 27813 | during a SunSpider run are larger than 5; almost none are larger |
| 27814 | than 8. |
| 27815 | |
| 27816 | 2. The growth factor is 4, not 2. Since we can guarantee that Lists |
| 27817 | aren't long-lived, we can grow them more aggressively, to avoid |
| 27818 | excessive copying. |
| 27819 | |
| 27820 | * kjs/regexp_object.cpp: |
| 27821 | (RegExpObjectImp::construct): Removed redundant function calls. |
| 27822 | |
| 27823 | * kjs/string_object.cpp: |
| 27824 | (KJS::StringObjectImp::construct): Removed questionable use of iterator. |
| 27825 | |
| 27826 | * wtf/Vector.h: |
| 27827 | (WTF::::uncheckedAppend): Added a fast, unchecked version of append. |
| 27828 | |
| 27829 | 2007-11-05 Mark Rowe <mrowe@apple.com> |
| 27830 | |
| 27831 | Reviewed by Alp Toker. |
| 27832 | |
| 27833 | Add DEPENDPATH to JavaScriptCore and pcre to help qmake with dependencies. |
| 27834 | |
| 27835 | * JavaScriptCore.pri: |
| 27836 | * pcre/pcre.pri: |
| 27837 | |
| 27838 | 2007-11-04 Darin Adler <darin@apple.com> |
| 27839 | |
| 27840 | Reviewed by Maciej. |
| 27841 | |
| 27842 | - http://bugs.webkit.org/show_bug.cgi?id=15826 |
| 27843 | optimize opcode loop and case insensitive ASCII compares for a 30% speedup |
| 27844 | |
| 27845 | SunSpider says it's 2.6% faster overall, 32.5% in the regular expression tests. |
| 27846 | |
| 27847 | * pcre/pcre_internal.h: Added OP_ASCII_CHAR and OP_ASCII_LETTER_NC. |
| 27848 | |
| 27849 | * pcre/pcre_compile.c: |
| 27850 | (find_fixedlength): Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC. Also |
| 27851 | added OP_NOT since there was no reason it should not be in here. |
| 27852 | (could_be_empty_branch): Ditto. |
| 27853 | (compile_branch): Streamlined all the single-character cases; there was a bit of |
| 27854 | duplicate code. Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC as needed. |
| 27855 | But in particular, compile to those opcodes when the single character match is |
| 27856 | ASCII. |
| 27857 | (find_firstassertedchar): Added cases for OP_ASCII_CHAR and OP_ASCII_LETTER_NC. |
| 27858 | |
| 27859 | * pcre/pcre_exec.c: (match): Removed the "min", "minimize", and "op" fields from |
| 27860 | the matchframe, after I discovered that none of them needed to be saved and restored |
| 27861 | across recursive match calls. Also eliminated the ignored result field from the |
| 27862 | matchframe, since I discovered that rrc ("recursive result code") was already the |
| 27863 | exact same thing. Moved the handling of opcodes higher than OP_BRA into the default |
| 27864 | statement of the switch instead of doing them before the switch. This removes a |
| 27865 | branch from each iteration of the opcode interpreter, just as removal of "op" |
| 27866 | removed at least one store from each iteration. Last, but not least, add the |
| 27867 | OP_ASCII_CHAR and OP_ASCII_LETTER_NC functions. Neither can ever match a |
| 27868 | surrogate pair and the letter case can be handled efficiently. |
| 27869 | |
| 27870 | 2007-11-04 Darin Adler <darin@apple.com> |
| 27871 | |
| 27872 | * pcre/pcre_exec.c: (match): Try to fix the Windows build by removing unreachable code. |
| 27873 | |
| 27874 | 2007-11-03 Darin Adler <darin@apple.com> |
| 27875 | |
| 27876 | - fix non-Mac builds; remove some more unused PCRE stuff |
| 27877 | |
| 27878 | * pcre/pcre_compile.c: |
| 27879 | (compile_branch): Removed branch chain and some unused ESC values. |
| 27880 | (compile_regex): Ditto. |
| 27881 | (jsRegExpCompile): Ditto. |
| 27882 | * pcre/pcre_exec.c: |
| 27883 | (match): Removed unused branch targets. Don't use macros any more. |
| 27884 | (jsRegExpExecute): More of the same. |
| 27885 | |
| 27886 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Update for removed files. |
| 27887 | * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| 27888 | * pcre/pcre.pri: Ditto. |
| 27889 | |
| 27890 | * pcre/MERGING: Removed. |
| 27891 | * pcre/pcre_fullinfo.c: Removed. |
| 27892 | * pcre/pcre_get.c: Removed. |
| 27893 | * pcre/pcre_internal.h: |
| 27894 | * pcre/ucp.h: Removed. |
| 27895 | |
| 27896 | 2007-11-03 Darin Adler <darin@apple.com> |
| 27897 | |
| 27898 | Reviewed by Maciej. |
| 27899 | |
| 27900 | - http://bugs.webkit.org/show_bug.cgi?id=15821 |
| 27901 | remove unused PCRE features for speed |
| 27902 | |
| 27903 | A first step toward removing the PCRE features we don't use. |
| 27904 | This gives a 0.8% speedup on SunSpider, and a 6.5% speedup on |
| 27905 | the SunSpider regular expression test. |
| 27906 | |
| 27907 | Replaced the public interface with one that doesn't use the |
| 27908 | name PCRE. Removed code we don't need for JavaScript and various |
| 27909 | configurations we don't use. This is in preparation for still |
| 27910 | more changes in the future. We'll probably switch to C++ and |
| 27911 | make some even more significant changes to the regexp engine |
| 27912 | to get some additional speed. |
| 27913 | |
| 27914 | There's probably additional unused stuff that I haven't |
| 27915 | deleted yet. |
| 27916 | |
| 27917 | This does mean that our PCRE is now a fork, but I think that's |
| 27918 | not really a big deal. |
| 27919 | |
| 27920 | * JavaScriptCore.exp: Remove the 5 old entry points and add |
| 27921 | the 3 new entry points for WebCore's direct use of the regular |
| 27922 | expression engine. |
| 27923 | |
| 27924 | * kjs/config.h: Remove the USE(PCRE16) define. I decided to flip |
| 27925 | its sense and now there's a USE(POSIX_REGEX) instead, which should |
| 27926 | probably not be set by anyone. Maybe later we'll just get rid of it |
| 27927 | altogether. |
| 27928 | |
| 27929 | * kjs/regexp.h: |
| 27930 | * kjs/regexp.cpp: |
| 27931 | (KJS::RegExp::RegExp): Switch to new jsRegExp function names and |
| 27932 | defines. Cut down on the number of functions used. |
| 27933 | (KJS::RegExp::~RegExp): Ditto. |
| 27934 | (KJS::RegExp::match): Ditto. |
| 27935 | |
| 27936 | * pcre/dftables.c: (main): Get rid of ctype_letter and ctype_meta, |
| 27937 | which are unused. |
| 27938 | |
| 27939 | * pcre/pcre-config.h: Get rid of EBCIDIC, PCRE_DATA_SCOPE, const, |
| 27940 | size_t, HAVE_STRERROR, HAVE_MEMMOVE, HAVE_BCOPY, NEWLINE, |
| 27941 | POSIX_MALLOC_THRESHOLD, NO_RECURSE, SUPPORT_UCP, SUPPORT_UTF8, |
| 27942 | and JAVASCRIPT. These are all no longer configurable in our copy |
| 27943 | of the library. |
| 27944 | |
| 27945 | * pcre/pcre.h: Remove the macro-based kjs prefix hack, the PCRE |
| 27946 | version macros, PCRE_UTF16, the code to set up PCRE_DATA_SCOPE, |
| 27947 | the include of <stdlib.h>, and most of the constants and |
| 27948 | functions defined in this header. Changed the naming scheme to |
| 27949 | use a JSRegExp prefix rather than a pcre prefix. In the future, |
| 27950 | we'll probably change this to be a C++ header. |
| 27951 | |
| 27952 | * pcre/pcre_compile.c: Removed all unused code branches, |
| 27953 | including many whole functions and various byte codes. |
| 27954 | Kept changes outside of removal to a minimum. |
| 27955 | (check_escape): |
| 27956 | (first_significant_code): |
| 27957 | (find_fixedlength): |
| 27958 | (find_recurse): |
| 27959 | (could_be_empty_branch): |
| 27960 | (compile_branch): |
| 27961 | (compile_regex): |
| 27962 | (is_anchored): |
| 27963 | (is_startline): |
| 27964 | (find_firstassertedchar): |
| 27965 | (jsRegExpCompile): Renamed from pcre_compile2 and changed the |
| 27966 | parameters around a bit. |
| 27967 | (jsRegExpFree): Added. |
| 27968 | |
| 27969 | * pcre/pcre_exec.c: Removed many unused opcodes and variables. |
| 27970 | Also started tearing down the NO_RECURSE mechanism since it's |
| 27971 | now the default. In some cases there were things in the explicit |
| 27972 | frame that could be turned into plain old local variables and |
| 27973 | other small like optimizations. |
| 27974 | (pchars): |
| 27975 | (match_ref): |
| 27976 | (match): Changed parameters quite a bit since it's now not used |
| 27977 | recursively. |
| 27978 | (jsRegExpExecute): Renamed from pcre_exec. |
| 27979 | |
| 27980 | * pcre/pcre_internal.h: Get rid of PCRE_DEFINITION, PCRE_SPTR, |
| 27981 | PCRE_IMS, PCRE_ICHANGED, PCRE_NOPARTIAL, PCRE_STUDY_MAPPED, |
| 27982 | PUBLIC_OPTIONS, PUBLIC_EXEC_OPTIONS, PUBLIC_DFA_EXEC_OPTIONS, |
| 27983 | PUBLIC_STUDY_OPTIONS, MAGIC_NUMBER, 16 of the opcodes, |
| 27984 | _pcre_utt, _pcre_utt_size, _pcre_try_flipped, _pcre_ucp_findprop, |
| 27985 | and _pcre_valid_utf8. Also moved pcre_malloc and pcre_free here. |
| 27986 | |
| 27987 | * pcre/pcre_maketables.c: Changed to only compile in dftables. |
| 27988 | Also got rid of many of the tables that we don't use. |
| 27989 | |
| 27990 | * pcre/pcre_tables.c: Removed the unused Unicode property tables. |
| 27991 | |
| 27992 | * pcre/pcre_ucp_searchfuncs.c: Removed everything except for |
| 27993 | _pcre_ucp_othercase. |
| 27994 | |
| 27995 | * pcre/pcre_xclass.c: (_pcre_xclass): Removed uneeded support |
| 27996 | for classes based on Unicode properties. |
| 27997 | |
| 27998 | * wtf/FastMallocPCRE.cpp: Removed unused bits. It would be good |
| 27999 | to eliminate this completely, but we need the regular expression |
| 28000 | code to be C++ first. |
| 28001 | |
| 28002 | * pcre/pcre_fullinfo.c: |
| 28003 | * pcre/pcre_get.c: |
| 28004 | * pcre/ucp.h: |
| 28005 | Files that are no longer needed. I didn't remove them with this |
| 28006 | check-in, because I didn't want to modify all the project files. |
| 28007 | |
| 28008 | 2007-11-03 Maciej Stachowiak <mjs@apple.com> |
| 28009 | |
| 28010 | Reviewed by Sam. |
| 28011 | |
| 28012 | - remove NaN check from JSImmediate::fromDouble for 0.5% SunSpider speedup |
| 28013 | |
| 28014 | It turns out that doing this check costs more than it saves. |
| 28015 | |
| 28016 | * kjs/JSImmediate.h: |
| 28017 | (KJS::JSImmediate::fromDouble): |
| 28018 | |
| 28019 | 2007-11-03 Sam Weinig <sam@webkit.org> |
| 28020 | |
| 28021 | Reviewed by Oliver. |
| 28022 | |
| 28023 | Remove dummy variable from ClassInfo reducing the size of the struct by 1 word. |
| 28024 | The variable had been kept around for binary compatibility, but since nothing |
| 28025 | else is there is no point in continuing to keep it around. |
| 28026 | |
| 28027 | * API/JSCallbackConstructor.cpp: |
| 28028 | * API/JSCallbackFunction.cpp: |
| 28029 | * API/JSCallbackObject.cpp: |
| 28030 | * bindings/objc/objc_runtime.mm: |
| 28031 | * bindings/runtime_array.cpp: |
| 28032 | * bindings/runtime_object.cpp: |
| 28033 | * kjs/array_instance.cpp: |
| 28034 | * kjs/array_object.cpp: |
| 28035 | * kjs/bool_object.cpp: |
| 28036 | * kjs/date_object.cpp: |
| 28037 | * kjs/error_object.cpp: |
| 28038 | * kjs/function.cpp: |
| 28039 | * kjs/internal.cpp: |
| 28040 | * kjs/lookup.h: |
| 28041 | * kjs/math_object.cpp: |
| 28042 | * kjs/number_object.cpp: |
| 28043 | * kjs/object.h: |
| 28044 | * kjs/regexp_object.cpp: |
| 28045 | * kjs/string_object.cpp: |
| 28046 | |
| 28047 | 2007-11-03 Kevin McCullough <kmccullough@apple.com> |
| 28048 | |
| 28049 | - Updated testkjs results to make the build bots green until we |
| 28050 | can fix the tests that are failing. The new failures are in DST. |
| 28051 | |
| 28052 | * tests/mozilla/expected.html: |
| 28053 | |
| 28054 | 2007-11-03 Maciej Stachowiak <mjs@apple.com> |
| 28055 | |
| 28056 | Reviewed by Adam. |
| 28057 | |
| 28058 | - don't print the var twice for ForInNodes with a var declaration |
| 28059 | |
| 28060 | * kjs/nodes2string.cpp: |
| 28061 | (KJS::ForInNode::streamTo): |
| 28062 | |
| 28063 | 2007-11-03 Darin Adler <darin@apple.com> |
| 28064 | |
| 28065 | * pcre/pcre_compile.c: (check_escape): Windows build fix. Get rid of |
| 28066 | C-incompatible declaration. |
| 28067 | |
| 28068 | 2007-11-03 Mark Rowe <mrowe@apple.com> |
| 28069 | |
| 28070 | Gtk build fix. |
| 28071 | |
| 28072 | * kjs/nodes.cpp: Add missing include. |
| 28073 | |
| 28074 | 2007-11-03 Darin Adler <darin@apple.com> |
| 28075 | |
| 28076 | Reviewed by Maciej. |
| 28077 | |
| 28078 | - fix http://bugs.webkit.org/show_bug.cgi?id=15814 |
| 28079 | <rdar://problem/5536644> fast/js/kde/encode_decode_uri.html fails |
| 28080 | |
| 28081 | These changes cause us to match the JavaScript specification and pass the |
| 28082 | fast/js/kde/encode_decode_uri.html test. |
| 28083 | |
| 28084 | * kjs/function.cpp: (KJS::encode): Call the UTF-8 string conversion in its |
| 28085 | new strict mode, throwing an exception if there are malformed UTF-16 surrogate |
| 28086 | pairs in the text. |
| 28087 | |
| 28088 | * kjs/ustring.h: Added a strict version of the UTF-8 string conversion. |
| 28089 | * kjs/ustring.cpp: |
| 28090 | (KJS::decodeUTF8Sequence): Removed code to disallow U+FFFE and U+FFFF; while |
| 28091 | those might be illegal in some sense, they aren't supposed to get any special |
| 28092 | handling in the place where this function is currently used. |
| 28093 | (KJS::UString::UTF8String): Added the strictness. |
| 28094 | |
| 28095 | 2007-11-03 Darin Adler <darin@apple.com> |
| 28096 | |
| 28097 | Reviewed by Maciej. |
| 28098 | |
| 28099 | - http://bugs.webkit.org/show_bug.cgi?id=15812 |
| 28100 | some JavaScript tests (from the Mozilla test suite) are failing |
| 28101 | |
| 28102 | Two or three fixes get 7 more of the Mozilla tests passing. |
| 28103 | This gets us down from 61 failing tests to 54. |
| 28104 | |
| 28105 | * kjs/interpreter.h: (KJS::Interpreter::builtinRegExp): |
| 28106 | Made this inline and gave it a more specific type. Some day we should |
| 28107 | probably do that for all of these -- might even get a bit of a speed |
| 28108 | boost from it. |
| 28109 | * kjs/interpreter.cpp: Removed Interpreter::builtinRegExp now that it's |
| 28110 | inline in the header. |
| 28111 | |
| 28112 | * kjs/regexp_object.h: |
| 28113 | * kjs/regexp_object.cpp: |
| 28114 | (KJS::RegExpProtoFunc::callAsFunction): Moved test and exec out of the |
| 28115 | switch statement into the RegExpImp object, so they can be shared with |
| 28116 | RegExpImp::callAsFunction. |
| 28117 | (KJS::RegExpImp::match): Added. Common code used by both test and exec. |
| 28118 | (KJS::RegExpImp::test): Added. |
| 28119 | (KJS::RegExpImp::exec): Added. |
| 28120 | (KJS::RegExpImp::implementsCall): Added. |
| 28121 | (KJS::RegExpImp::callAsFunction): Added. |
| 28122 | (KJS::RegExpObjectImpPrivate::RegExpObjectImpPrivate): Initialize |
| 28123 | lastInput to null rather than empty string -- we take advantage of the |
| 28124 | difference in RegExpImp::match. |
| 28125 | (KJS::RegExpObjectImp::input): Added. No reason to go through hash tables |
| 28126 | just to get at a field like this. |
| 28127 | |
| 28128 | * pcre/pcre_compile.c: (check_escape): Changed the \u handling to match |
| 28129 | the JavaScript specification. If there are not 4 hex digits after the \u, |
| 28130 | then it's processed as if it wasn't an escape sequence at all. |
| 28131 | |
| 28132 | * pcre/pcre_internal.h: Added IS_NEWLINE, with the appropriate definition |
| 28133 | for JavaScript (4 specific Unicode values). |
| 28134 | * pcre/pcre_exec.c: |
| 28135 | (match): Changed all call sites to use IS_NEWLINE. |
| 28136 | (pcre_exec): Ditto. |
| 28137 | |
| 28138 | * tests/mozilla/expected.html: Updated to expect 7 more successful tests. |
| 28139 | |
| 28140 | 2007-11-03 David D. Kilzer <ddkilzer@webkit.org> |
| 28141 | |
| 28142 | Sort files(...); sections of Xcode project files. |
| 28143 | |
| 28144 | Rubber-stamped by Darin. |
| 28145 | |
| 28146 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 28147 | |
| 28148 | 2007-11-03 Maciej Stachowiak <mjs@apple.com> |
| 28149 | |
| 28150 | Reviewed by Oliver. |
| 28151 | |
| 28152 | - remove VarDeclListNode and simplify VarDeclNode evaluation for 0.4% SunSpider speedup |
| 28153 | |
| 28154 | * kjs/grammar.y: |
| 28155 | * kjs/nodes.cpp: |
| 28156 | (KJS::VarDeclNode::optimizeVariableAccess): |
| 28157 | (KJS::VarDeclNode::getDeclarations): |
| 28158 | (KJS::VarDeclNode::handleSlowCase): |
| 28159 | (KJS::VarDeclNode::evaluateSingle): |
| 28160 | (KJS::VarDeclNode::evaluate): |
| 28161 | (KJS::VarStatementNode::execute): |
| 28162 | * kjs/nodes.h: |
| 28163 | (KJS::VarDeclNode::): |
| 28164 | (KJS::VarStatementNode::): |
| 28165 | * kjs/nodes2string.cpp: |
| 28166 | (KJS::VarDeclNode::streamTo): |
| 28167 | |
| 28168 | 2007-11-03 Alexey Proskuryakov <ap@webkit.org> |
| 28169 | |
| 28170 | Reviewed by Darin. |
| 28171 | |
| 28172 | http://bugs.webkit.org/show_bug.cgi?id=15800 |
| 28173 | REGRESSION (r27303): RegExp leaks |
| 28174 | |
| 28175 | * kjs/regexp_object.h: |
| 28176 | (KJS::RegExpImp::setRegExp): |
| 28177 | (KJS::RegExpImp::regExp): |
| 28178 | (KJS::RegExpImp::classInfo): |
| 28179 | * kjs/regexp_object.cpp: |
| 28180 | (RegExpImp::RegExpImp): |
| 28181 | (RegExpImp::~RegExpImp): |
| 28182 | Renamed reg member variable to m_regExp, changed it to use OwnPtr. |
| 28183 | |
| 28184 | 2007-11-02 Maciej Stachowiak <mjs@apple.com> |
| 28185 | |
| 28186 | Reviewed by Oliver. |
| 28187 | |
| 28188 | - add SourceElements as a typedef for Vector<RefPtr<StatementNode> >. |
| 28189 | |
| 28190 | * kjs/grammar.y: |
| 28191 | * kjs/nodes.cpp: |
| 28192 | (KJS::statementListPushFIFO): |
| 28193 | (KJS::statementListGetDeclarations): |
| 28194 | (KJS::statementListInitializeDeclarationStacks): |
| 28195 | (KJS::statementListInitializeVariableAccessStack): |
| 28196 | (KJS::statementListExecute): |
| 28197 | (KJS::BlockNode::BlockNode): |
| 28198 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 28199 | (KJS::ProgramNode::ProgramNode): |
| 28200 | * kjs/nodes.h: |
| 28201 | (KJS::CaseClauseNode::): |
| 28202 | |
| 28203 | 2007-11-02 Darin Adler <darin@apple.com> |
| 28204 | |
| 28205 | Reviewed by Maciej. |
| 28206 | |
| 28207 | - http://bugs.webkit.org/show_bug.cgi?id=15791 |
| 28208 | change property map data structure for less memory use, better speed |
| 28209 | |
| 28210 | The property map now has an array of indices and a separate array of |
| 28211 | property map entries. This slightly slows down lookup because of a second |
| 28212 | memory acess, but makes property maps smaller and faster to iterate in |
| 28213 | functions like mark(). |
| 28214 | |
| 28215 | SunSpider says this is 1.2% faster, although it makes the bitwise-end test |
| 28216 | more than 10% slower. To fix that we'll need to optimize global variable lookup. |
| 28217 | |
| 28218 | * kjs/property_map.cpp: |
| 28219 | (KJS::PropertyMapEntry::PropertyMapEntry): |
| 28220 | (KJS::PropertyMapHashTable::entries): |
| 28221 | (KJS::PropertyMapHashTable::allocationSize): |
| 28222 | (KJS::SavedProperties::SavedProperties): |
| 28223 | (KJS::SavedProperties::~SavedProperties): |
| 28224 | (KJS::PropertyMap::checkConsistency): |
| 28225 | (KJS::PropertyMap::~PropertyMap): |
| 28226 | (KJS::PropertyMap::clear): |
| 28227 | (KJS::PropertyMap::get): |
| 28228 | (KJS::PropertyMap::getLocation): |
| 28229 | (KJS::PropertyMap::put): |
| 28230 | (KJS::PropertyMap::insert): |
| 28231 | (KJS::PropertyMap::createTable): |
| 28232 | (KJS::PropertyMap::rehash): |
| 28233 | (KJS::PropertyMap::remove): |
| 28234 | (KJS::PropertyMap::mark): |
| 28235 | (KJS::comparePropertyMapEntryIndices): |
| 28236 | (KJS::PropertyMap::containsGettersOrSetters): |
| 28237 | (KJS::PropertyMap::getEnumerablePropertyNames): |
| 28238 | (KJS::PropertyMap::save): |
| 28239 | (KJS::PropertyMap::restore): |
| 28240 | * kjs/property_map.h: |
| 28241 | |
| 28242 | 2007-11-02 Darin Adler <darin@apple.com> |
| 28243 | |
| 28244 | Reviewed by Maciej. |
| 28245 | |
| 28246 | - http://bugs.webkit.org/show_bug.cgi?id=15807 |
| 28247 | HashMap needs a take() function that combines get and remove |
| 28248 | |
| 28249 | * wtf/HashMap.h: Added take function. Simplistic implementation for now, |
| 28250 | but still does only one hash table lookup. |
| 28251 | |
| 28252 | * kjs/array_instance.cpp: (KJS::ArrayInstance::put): Use take rather than |
| 28253 | a find followed by a remove. |
| 28254 | |
| 28255 | 2007-11-02 David Carson <dacarson@gmail.com> |
| 28256 | |
| 28257 | Reviewed by Darin. |
| 28258 | |
| 28259 | Fix compiler warning "warning: suggest parentheses around && within ||" |
| 28260 | http://bugs.webkit.org/show_bug.cgi?id=15764 |
| 28261 | |
| 28262 | * kjs/value.h: (KJS::JSValue::isNumber): Add parentheses. |
| 28263 | |
| 28264 | 2007-11-01 Geoffrey Garen <ggaren@apple.com> |
| 28265 | |
| 28266 | Reviewed by Maciej Stachowiak. |
| 28267 | |
| 28268 | In preparation for making List a simple stack-allocated Vector: |
| 28269 | |
| 28270 | Removed all instances of List copying and/or assignment, and made List |
| 28271 | inherit from Noncopyable. |
| 28272 | |
| 28273 | Functions that used to return a List by copy now take List& out |
| 28274 | parameters. |
| 28275 | |
| 28276 | Layout tests and JS tests pass. |
| 28277 | |
| 28278 | * kjs/list.cpp: |
| 28279 | (KJS::List::slice): Replaced copyTail with a more generic slice |
| 28280 | alternative. (JavaScriptCore only calls slice(1), but WebCore calls |
| 28281 | slice(2)). |
| 28282 | |
| 28283 | 2007-11-01 Geoffrey Garen <ggaren@apple.com> |
| 28284 | |
| 28285 | Reviewed by Maciej Stachowiak. |
| 28286 | |
| 28287 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15785 |
| 28288 | REGRESSION(r27344): Crash on load at finance.yahoo.com |
| 28289 | |
| 28290 | Reverted a small portion of my last check-in. (The speedup and the List |
| 28291 | removal are still there, though.) |
| 28292 | |
| 28293 | ActivationImp needs to hold a pointer to its function, and mark that |
| 28294 | pointer (rather than accessing its function through its ExecState, and |
| 28295 | counting on the active scope to mark its function) because a closure |
| 28296 | can cause an ActivationImp to outlive its ExecState along with any |
| 28297 | active scope. |
| 28298 | |
| 28299 | * kjs/ExecState.cpp: |
| 28300 | (KJS::ExecState::ExecState): |
| 28301 | * kjs/function.cpp: |
| 28302 | (KJS::FunctionImp::~FunctionImp): |
| 28303 | (KJS::ActivationImp::ActivationImp): |
| 28304 | * kjs/function.h: |
| 28305 | (KJS::ActivationImp::ActivationImpPrivate::ActivationImpPrivate): |
| 28306 | |
| 28307 | Also made HashTable a little more crash-happy in debug builds, so |
| 28308 | problems like this will show up earlier: |
| 28309 | |
| 28310 | * wtf/HashTable.h: |
| 28311 | (WTF::HashTable::~HashTable): |
| 28312 | |
| 28313 | 2007-11-01 Geoffrey Garen <ggaren@apple.com> |
| 28314 | |
| 28315 | Reviewed by Adam Roben. |
| 28316 | |
| 28317 | Addressed some of Darin's review comments. |
| 28318 | |
| 28319 | Used perl -p, which is the shorthand while(<>) {}. |
| 28320 | |
| 28321 | Made sure not to suppress bison's output. |
| 28322 | |
| 28323 | Added line to removed bison_out.txt, since this script removes other |
| 28324 | intermediate files, too. |
| 28325 | |
| 28326 | * DerivedSources.make: |
| 28327 | |
| 28328 | 2007-11-01 Geoffrey Garen <ggaren@apple.com> |
| 28329 | |
| 28330 | Reviewed by Oliver Hunt. |
| 28331 | |
| 28332 | Removed List from ActivationImp, in preparation for making all lists |
| 28333 | stack-allocated. |
| 28334 | |
| 28335 | Tests pass. |
| 28336 | |
| 28337 | 1.0% speedup on SunSpider, presumably due to reduced List refcount thrash. |
| 28338 | |
| 28339 | * kjs/ExecState.cpp: |
| 28340 | (KJS::ExecState::ExecState): |
| 28341 | (KJS::ExecState::~ExecState): |
| 28342 | * kjs/function.cpp: |
| 28343 | (KJS::ActivationImp::ActivationImp): |
| 28344 | (KJS::ActivationImp::createArgumentsObject): |
| 28345 | * kjs/function.h: |
| 28346 | (KJS::ActivationImp::ActivationImpPrivate::ActivationImpPrivate): |
| 28347 | |
| 28348 | 2007-11-01 Adam Roben <aroben@apple.com> |
| 28349 | |
| 28350 | Use jsNumberCell instead of jsNumber when converting double constants to JSValues |
| 28351 | |
| 28352 | This fixes fast/js/math.html, ecma/Date/15.9.5.10-1.js, and |
| 28353 | ecma/Date/15.9.5.12-1.js, which were suffering from a bug in MSVC. |
| 28354 | |
| 28355 | It also gets rid of an MSVC warning that we previously had to silence. |
| 28356 | |
| 28357 | Reviewed by Geoff. |
| 28358 | |
| 28359 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Turn |
| 28360 | back on the "overflow in constant arithmetic" warning. |
| 28361 | * kjs/number_object.cpp: |
| 28362 | (NumberObjectImp::getValueProperty): Use jsNumberCell instead of |
| 28363 | jsNumber. |
| 28364 | |
| 28365 | 2007-10-31 Adam Roben <aroben@apple.com> |
| 28366 | |
| 28367 | Windows build fix |
| 28368 | |
| 28369 | * kjs/ExecState.h: |
| 28370 | |
| 28371 | 2007-10-31 Maciej Stachowiak <mjs@apple.com> |
| 28372 | |
| 28373 | Reviewed by Oliver. |
| 28374 | |
| 28375 | - shave some cycles off of local storage access for a 1% SunSpider speedup |
| 28376 | |
| 28377 | Keep the LocalStorage pointer in the ExecState, instead of getting |
| 28378 | it from the ActivationImp all the time. |
| 28379 | |
| 28380 | * kjs/ExecState.cpp: |
| 28381 | (KJS::ExecState::updateLocalStorage): |
| 28382 | * kjs/ExecState.h: |
| 28383 | (KJS::ExecState::localStorage): |
| 28384 | * kjs/nodes.cpp: |
| 28385 | (KJS::LocalVarAccessNode::evaluate): |
| 28386 | (KJS::LocalVarFunctionCallNode::evaluate): |
| 28387 | (KJS::PostIncLocalVarNode::evaluate): |
| 28388 | (KJS::PostDecLocalVarNode::evaluate): |
| 28389 | (KJS::LocalVarTypeOfNode::evaluate): |
| 28390 | (KJS::PreIncLocalVarNode::evaluate): |
| 28391 | (KJS::PreDecLocalVarNode::evaluate): |
| 28392 | (KJS::ReadModifyLocalVarNode::evaluate): |
| 28393 | (KJS::AssignLocalVarNode::evaluate): |
| 28394 | (KJS::FunctionBodyNode::processDeclarationsForFunctionCode): |
| 28395 | |
| 28396 | 2007-10-31 Adam Roben <aroben@apple.com> |
| 28397 | |
| 28398 | Fix a crash on launch due to a static initializer race |
| 28399 | |
| 28400 | We now use fast inline assembler spinlocks which can be statically |
| 28401 | initialized at compile time. |
| 28402 | |
| 28403 | As a side benefit, this speeds up SunSpider by 0.4%. |
| 28404 | |
| 28405 | Reviewed by Oliver. |
| 28406 | |
| 28407 | * wtf/FastMalloc.cpp: |
| 28408 | * wtf/TCSpinLock.h: |
| 28409 | (TCMalloc_SpinLock::Lock): |
| 28410 | (TCMalloc_SpinLock::Unlock): |
| 28411 | (TCMalloc_SlowLock): |
| 28412 | * wtf/TCSystemAlloc.cpp: |
| 28413 | |
| 28414 | 2007-10-31 Kevin McCullough <kmccullough@apple.com> |
| 28415 | |
| 28416 | Reviewed by Sam. |
| 28417 | |
| 28418 | - Corrected spelling. |
| 28419 | |
| 28420 | * wtf/HashTraits.h: |
| 28421 | |
| 28422 | 2007-10-31 Mark Rowe <mrowe@apple.com> |
| 28423 | |
| 28424 | Further Gtk build fixage. |
| 28425 | |
| 28426 | * kjs/regexp_object.cpp: |
| 28427 | |
| 28428 | 2007-10-31 Mark Rowe <mrowe@apple.com> |
| 28429 | |
| 28430 | Gtk build fix. |
| 28431 | |
| 28432 | * kjs/regexp.h: |
| 28433 | |
| 28434 | 2007-10-31 Darin Adler <darin@apple.com> |
| 28435 | |
| 28436 | Reviewed by Maciej. |
| 28437 | |
| 28438 | - fix http://bugs.webkit.org/show_bug.cgi?id=15749 |
| 28439 | RegExp/RegExpObjectImp cause needless UString creation |
| 28440 | |
| 28441 | Speeds things up 0.4% according to SunSpider. |
| 28442 | |
| 28443 | * kjs/config.h: Define USE(PCRE16) instead of HAVE(PCREPOSIX), |
| 28444 | because this library doesn't use the real PCRE -- it uses its |
| 28445 | own PCRE that works on UTF-16. |
| 28446 | |
| 28447 | * kjs/regexp.h: Removed a few unused functions. Changed the ifdef. |
| 28448 | Use Noncopyable. Change the return value of match. |
| 28449 | * kjs/regexp.cpp: |
| 28450 | (KJS::RegExp::RegExp): Call pcre_compile2, for a slight speed boost. |
| 28451 | (KJS::RegExp::~RegExp): PCRE16 rather than PCREPOSIX. |
| 28452 | (KJS::RegExp::match): Change to return the position as an int and the |
| 28453 | ovector as a OwnArrayPtr<int> for efficiency and clearer storage management. |
| 28454 | |
| 28455 | * kjs/regexp_object.h: Change performMatch and arrayOfMatches to no longer |
| 28456 | require a result string. |
| 28457 | * kjs/regexp_object.cpp: |
| 28458 | (RegExpProtoFunc::callAsFunction): Update for new signature of performMatch. |
| 28459 | (RegExpObjectImp::performMatch): Change so it doesn't return a string. |
| 28460 | (RegExpObjectImp::arrayOfMatches): Simplify by unifying the handling of |
| 28461 | the main result with the backreferences; now it doesn't need to take |
| 28462 | a result parameter. |
| 28463 | (RegExpObjectImp::getBackref): Minor tweaks. |
| 28464 | (RegExpObjectImp::getLastParen): Ditto. |
| 28465 | (RegExpObjectImp::getLeftContext): Ditto. |
| 28466 | (RegExpObjectImp::getRightContext): Ditto. |
| 28467 | (RegExpObjectImp::getValueProperty): Change LastMatch case to call |
| 28468 | getBackref(0) so we don't need a separate getLastMatch function. |
| 28469 | |
| 28470 | * kjs/string_object.cpp: |
| 28471 | (KJS::replace): Update to use new performMatch, including merging the |
| 28472 | matched string section with the other substrings. |
| 28473 | (KJS::StringProtoFunc::callAsFunction): Update functions to use the |
| 28474 | new performMatch and match. Also change to use OwnArrayPtr. |
| 28475 | |
| 28476 | 2007-10-31 Oliver Hunt <oliver@apple.com> |
| 28477 | |
| 28478 | * kjs/nodes.h: include OwnPtr.h |
| 28479 | |
| 28480 | 2007-10-31 Oliver Hunt <oliver@apple.com> |
| 28481 | |
| 28482 | Reviewed by Maciej. |
| 28483 | |
| 28484 | Remove SourceCodeElement class and replaced with a Vector for a 0.8% gain on sunspider |
| 28485 | |
| 28486 | * kjs/grammar.y: |
| 28487 | * kjs/nodes.cpp: |
| 28488 | (KJS::statementListPushFIFO): |
| 28489 | (KJS::statementListGetDeclarations): |
| 28490 | (KJS::statementListInitializeDeclarationStacks): |
| 28491 | (KJS::statementListInitializeVariableAccessStack): |
| 28492 | (KJS::statementListExecute): |
| 28493 | (KJS::BlockNode::optimizeVariableAccess): |
| 28494 | (KJS::BlockNode::BlockNode): |
| 28495 | (KJS::BlockNode::getDeclarations): |
| 28496 | (KJS::BlockNode::execute): |
| 28497 | (KJS::CaseClauseNode::optimizeVariableAccess): |
| 28498 | (KJS::CaseClauseNode::getDeclarations): |
| 28499 | (KJS::CaseClauseNode::evalStatements): |
| 28500 | (KJS::FunctionBodyNode::initializeDeclarationStacks): |
| 28501 | (KJS::FunctionBodyNode::optimizeVariableAccess): |
| 28502 | * kjs/nodes.h: |
| 28503 | * kjs/nodes2string.cpp: |
| 28504 | (KJS::statementListStreamTo): |
| 28505 | (KJS::BlockNode::streamTo): |
| 28506 | (KJS::CaseClauseNode::streamTo): |
| 28507 | |
| 28508 | 2007-10-30 Mark Rowe <mrowe@apple.com> |
| 28509 | |
| 28510 | * kjs/property_map.cpp: Added a missing using directive to fix the build |
| 28511 | for non-Mac ports. Mac worked only because it does the AllInOneFile compile. |
| 28512 | |
| 28513 | 2007-10-31 Maciej Stachowiak <mjs@apple.com> |
| 28514 | |
| 28515 | * kjs/property_map.cpp: Include HashTable.h the right way to fix the build |
| 28516 | for non-Mac ports. |
| 28517 | |
| 28518 | 2007-10-31 Alexey Proskuryakov <ap@webkit.org> |
| 28519 | |
| 28520 | Reviewed by Darin. |
| 28521 | |
| 28522 | http://bugs.webkit.org/show_bug.cgi?id=11001 |
| 28523 | WebKit doesn't support RegExp.compile method |
| 28524 | |
| 28525 | Test: fast/js/regexp-compile.html |
| 28526 | |
| 28527 | * kjs/regexp_object.cpp: |
| 28528 | (RegExpPrototype::RegExpPrototype): |
| 28529 | (RegExpProtoFunc::callAsFunction): |
| 28530 | * kjs/regexp_object.h: |
| 28531 | (KJS::RegExpProtoFunc::): |
| 28532 | Added RegExp.compile. |
| 28533 | |
| 28534 | * tests/mozilla/expected.html: js1_2/regexp/compile.js now passes. |
| 28535 | |
| 28536 | 2007-10-31 Maciej Stachowiak <mjs@apple.com> |
| 28537 | |
| 28538 | Reviewed by Oliver. |
| 28539 | |
| 28540 | - get rid of integer divide in PropertyMap and HashTable for 1% SunSpider speedup |
| 28541 | |
| 28542 | Integer divide sucks. Fortunately, a bunch of shifts and XORs |
| 28543 | biased towards the high bits is sufficient to provide a good |
| 28544 | double hash. Besides the SunSpider win, I used the dump statistics |
| 28545 | mode for both to verify that collisions did not increase and that |
| 28546 | the longest collision chain is not any longer. |
| 28547 | |
| 28548 | * kjs/property_map.cpp: |
| 28549 | (KJS::doubleHash): |
| 28550 | (KJS::PropertyMap::get): |
| 28551 | (KJS::PropertyMap::getLocation): |
| 28552 | (KJS::PropertyMap::put): |
| 28553 | (KJS::PropertyMap::insert): |
| 28554 | (KJS::PropertyMap::remove): |
| 28555 | (KJS::PropertyMap::checkConsistency): |
| 28556 | * wtf/HashTable.h: |
| 28557 | (WTF::doubleHash): |
| 28558 | (WTF::::lookup): |
| 28559 | (WTF::::lookupForWriting): |
| 28560 | (WTF::::fullLookupForWriting): |
| 28561 | (WTF::::add): |
| 28562 | |
| 28563 | 2007-10-30 Adam Roben <aroben@apple.com> |
| 28564 | |
| 28565 | * kjs/collector.h: Make HeapType public so it can be used for non-member |
| 28566 | things like the HeapConstants struct template. Fixes the build on Windows. |
| 28567 | |
| 28568 | 2007-10-30 Adam Roben <aroben@apple.com> |
| 28569 | |
| 28570 | Change ALWAYS_INLINE and WTF_PRIVATE_INLINE to use __forceinline on Windows |
| 28571 | |
| 28572 | Speeds up SunSpider by 0.4%. |
| 28573 | |
| 28574 | Reviewed by Steve and Maciej. |
| 28575 | |
| 28576 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable |
| 28577 | a warning during LTCG in release builds about double -> float |
| 28578 | conversion. |
| 28579 | * wtf/AlwaysInline.h: |
| 28580 | * wtf/FastMalloc.h: |
| 28581 | |
| 28582 | 2007-10-30 Adam Roben <aroben@apple.com> |
| 28583 | |
| 28584 | Use GetCurrentThreadId instead of pthread_self in FastMalloc |
| 28585 | |
| 28586 | Speeds up SunSpider by 0.3%. |
| 28587 | |
| 28588 | Reviewed by Steve. |
| 28589 | |
| 28590 | * wtf/FastMalloc.cpp: |
| 28591 | (WTF::TCMalloc_ThreadCache::InitTSD): |
| 28592 | (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): |
| 28593 | |
| 28594 | 2007-10-30 Adam Roben <aroben@apple.com> |
| 28595 | |
| 28596 | Switch to a Win32 critical section implementation of spinlocks |
| 28597 | |
| 28598 | Speeds up SunSpider by 0.4%. |
| 28599 | |
| 28600 | Reviewed by Steve. |
| 28601 | |
| 28602 | * wtf/FastMalloc.cpp: |
| 28603 | * wtf/TCSpinLock.h: |
| 28604 | (TCMalloc_SpinLock::TCMalloc_SpinLock): |
| 28605 | (TCMalloc_SpinLock::Init): |
| 28606 | (TCMalloc_SpinLock::Finalize): |
| 28607 | (TCMalloc_SpinLock::Lock): |
| 28608 | (TCMalloc_SpinLock::Unlock): |
| 28609 | * wtf/TCSystemAlloc.cpp: |
| 28610 | |
| 28611 | 2007-10-30 Adam Roben <aroben@apple.com> |
| 28612 | |
| 28613 | Fix Bug 15586: REGRESSION (r26759-r26785): Windows nightly builds crash with Safari 3 Public Beta |
| 28614 | |
| 28615 | http://bugs.webkit.org/show_bug.cgi?id=15586 |
| 28616 | |
| 28617 | Also fixes: <rdar://5565303> Cannot use regsvr32.exe to register WebKit.dll |
| 28618 | |
| 28619 | Use Win32 TLS functions instead of __declspec(thread), which breaks |
| 28620 | delay-loading. |
| 28621 | |
| 28622 | Reviewed by Steve. |
| 28623 | |
| 28624 | * wtf/FastMalloc.cpp: |
| 28625 | (WTF::getThreadHeap): |
| 28626 | (WTF::TCMalloc_ThreadCache::InitModule): |
| 28627 | |
| 28628 | 2007-10-30 Maciej Stachowiak <mjs@apple.com> |
| 28629 | |
| 28630 | Reviewed by Oliver. |
| 28631 | |
| 28632 | - allocate numbers in half-size cells, for an 0.5% SunSpider speedup |
| 28633 | http://bugs.webkit.org/show_bug.cgi?id=15772 |
| 28634 | |
| 28635 | We do this by using a single mark bit per two number cells, and |
| 28636 | tweaking marking. |
| 28637 | |
| 28638 | Besides being an 0.5% win overall, this is a 7.1% win on morph. |
| 28639 | |
| 28640 | * kjs/collector.cpp: |
| 28641 | (KJS::Collector::heapAllocate): |
| 28642 | (KJS::Collector::markStackObjectsConservatively): |
| 28643 | (KJS::Collector::sweep): |
| 28644 | * kjs/collector.h: |
| 28645 | (KJS::SmallCollectorCell::): |
| 28646 | |
| 28647 | 2007-10-30 Geoffrey Garen <ggaren@apple.com> |
| 28648 | |
| 28649 | Reviewed by Adam Roben, Sam Weinig. |
| 28650 | |
| 28651 | Made conflicts in grammar.y a persistent build failure. |
| 28652 | |
| 28653 | * DerivedSources.make: |
| 28654 | |
| 28655 | 2007-10-30 Kevin McCullough <kmccullough@apple.com> |
| 28656 | |
| 28657 | Reviewed by Adam and Geoff. |
| 28658 | |
| 28659 | - Added a new cast so all the casts are in the same place. |
| 28660 | |
| 28661 | * API/APICast.h: |
| 28662 | (toGlobalRef): |
| 28663 | |
| 28664 | 2007-10-30 Geoffrey Garen <ggaren@apple.com> |
| 28665 | |
| 28666 | Reviewed by Darin Adler. |
| 28667 | |
| 28668 | Fixed <rdar://problem/5567504> shift/reduce conflict introduced in r24457 |
| 28669 | |
| 28670 | JS tests, including |
| 28671 | |
| 28672 | ecma_2/Statements/dowhile-001.js |
| 28673 | ecma_2/Statements/dowhile-002.js |
| 28674 | ecma_2/Statements/dowhile-003.js |
| 28675 | ecma_2/Statements/dowhile-004.js |
| 28676 | ecma_2/Statements/dowhile-005.js |
| 28677 | ecma_2/Statements/dowhile-006.js |
| 28678 | ecma_2/Statements/dowhile-007.js |
| 28679 | js1_2/statements/do_while.js |
| 28680 | |
| 28681 | and layout tests, including |
| 28682 | |
| 28683 | do-while-expression-value.html |
| 28684 | do-while-semicolon.html |
| 28685 | do-while-without-semicolon.html |
| 28686 | |
| 28687 | pass. |
| 28688 | |
| 28689 | * kjs/grammar.y: Use the explicit "error" production, as we do with other |
| 28690 | automatic semicolon insertions, to disambiguate "do { } while();" from |
| 28691 | "do { } while()" followed by ";" (the empty statement). |
| 28692 | |
| 28693 | 2007-10-29 Oliver Hunt <oliver@apple.com> |
| 28694 | |
| 28695 | Reviewed by Maciej. |
| 28696 | |
| 28697 | Debranching remaining assignment nodes, and miscellaneous cleanup |
| 28698 | |
| 28699 | Split read-modify code paths out of AssignBracketNode and AssignDotNode |
| 28700 | Removed now unnecessary check for write-only assignment in ReadModifyLocalVarNode |
| 28701 | and ReadModifyResolveNode evaluate methods |
| 28702 | |
| 28703 | Leads to a 1% gain in SunSpider. |
| 28704 | |
| 28705 | * kjs/grammar.y: |
| 28706 | * kjs/nodes.cpp: |
| 28707 | (KJS::ReadModifyLocalVarNode::evaluate): |
| 28708 | (KJS::ReadModifyResolveNode::evaluate): |
| 28709 | (KJS::AssignDotNode::evaluate): |
| 28710 | (KJS::ReadModifyDotNode::optimizeVariableAccess): |
| 28711 | (KJS::ReadModifyDotNode::evaluate): |
| 28712 | (KJS::AssignBracketNode::evaluate): |
| 28713 | (KJS::ReadModifyBracketNode::optimizeVariableAccess): |
| 28714 | (KJS::ReadModifyBracketNode::evaluate): |
| 28715 | * kjs/nodes.h: |
| 28716 | (KJS::AssignBracketNode::): |
| 28717 | (KJS::AssignBracketNode::precedence): |
| 28718 | (KJS::AssignDotNode::): |
| 28719 | (KJS::AssignDotNode::precedence): |
| 28720 | * kjs/nodes2string.cpp: |
| 28721 | (KJS::ReadModifyBracketNode::streamTo): |
| 28722 | (KJS::AssignBracketNode::streamTo): |
| 28723 | (KJS::ReadModifyDotNode::streamTo): |
| 28724 | (KJS::AssignDotNode::streamTo): |
| 28725 | |
| 28726 | 2007-10-29 Oliver Hunt <oliver@apple.com> |
| 28727 | |
| 28728 | Debranching various Node::evaluate implementations |
| 28729 | |
| 28730 | Reviewed by Maciej. |
| 28731 | |
| 28732 | Split the read-modify-write assignment cases out of AssignResolveNode and into ReadModifyResolveNode |
| 28733 | Split the increment and decrement cases for Prefix- and Postfix- ResolveNode, BracketNode, and DotNode |
| 28734 | |
| 28735 | Gains 1.6% on SunSpider |
| 28736 | |
| 28737 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 28738 | * kjs/grammar.y: |
| 28739 | * kjs/nodes.cpp: |
| 28740 | (KJS::PostIncResolveNode::optimizeVariableAccess): |
| 28741 | (KJS::PostIncResolveNode::evaluate): |
| 28742 | (KJS::PostIncLocalVarNode::evaluate): |
| 28743 | (KJS::PostDecResolveNode::optimizeVariableAccess): |
| 28744 | (KJS::PostDecResolveNode::evaluate): |
| 28745 | (KJS::PostDecLocalVarNode::evaluate): |
| 28746 | (KJS::PostIncBracketNode::evaluate): |
| 28747 | (KJS::PostDecBracketNode::evaluate): |
| 28748 | (KJS::PostIncDotNode::evaluate): |
| 28749 | (KJS::PostDecDotNode::evaluate): |
| 28750 | (KJS::PreIncResolveNode::optimizeVariableAccess): |
| 28751 | (KJS::PreIncLocalVarNode::evaluate): |
| 28752 | (KJS::PreIncResolveNode::evaluate): |
| 28753 | (KJS::PreDecResolveNode::optimizeVariableAccess): |
| 28754 | (KJS::PreDecLocalVarNode::evaluate): |
| 28755 | (KJS::PreDecResolveNode::evaluate): |
| 28756 | (KJS::PreIncBracketNode::evaluate): |
| 28757 | (KJS::PreDecBracketNode::evaluate): |
| 28758 | (KJS::PreIncDotNode::evaluate): |
| 28759 | (KJS::PreDecDotNode::evaluate): |
| 28760 | (KJS::ReadModifyResolveNode::optimizeVariableAccess): |
| 28761 | (KJS::AssignResolveNode::optimizeVariableAccess): |
| 28762 | (KJS::AssignLocalVarNode::evaluate): |
| 28763 | (KJS::AssignResolveNode::evaluate): |
| 28764 | * kjs/nodes.h: |
| 28765 | (KJS::PostDecResolveNode::): |
| 28766 | (KJS::PostDecResolveNode::precedence): |
| 28767 | (KJS::PostDecLocalVarNode::): |
| 28768 | (KJS::PostfixBracketNode::): |
| 28769 | (KJS::PostfixBracketNode::precedence): |
| 28770 | (KJS::PostIncBracketNode::): |
| 28771 | (KJS::PostIncBracketNode::isIncrement): |
| 28772 | (KJS::PostDecBracketNode::): |
| 28773 | (KJS::PostDecBracketNode::isIncrement): |
| 28774 | (KJS::PostfixDotNode::): |
| 28775 | (KJS::PostfixDotNode::precedence): |
| 28776 | (KJS::PostIncDotNode::): |
| 28777 | (KJS::PostIncDotNode::isIncrement): |
| 28778 | (KJS::PostDecDotNode::): |
| 28779 | (KJS::PreIncResolveNode::): |
| 28780 | (KJS::PreDecResolveNode::): |
| 28781 | (KJS::PreDecResolveNode::precedence): |
| 28782 | (KJS::PreDecLocalVarNode::): |
| 28783 | (KJS::PrefixBracketNode::): |
| 28784 | (KJS::PrefixBracketNode::precedence): |
| 28785 | (KJS::PreIncBracketNode::): |
| 28786 | (KJS::PreIncBracketNode::isIncrement): |
| 28787 | (KJS::PreDecBracketNode::): |
| 28788 | (KJS::PreDecBracketNode::isIncrement): |
| 28789 | (KJS::PrefixDotNode::): |
| 28790 | (KJS::PrefixDotNode::precedence): |
| 28791 | (KJS::PreIncDotNode::): |
| 28792 | (KJS::PreIncDotNode::isIncrement): |
| 28793 | (KJS::PreDecDotNode::): |
| 28794 | (KJS::ReadModifyResolveNode::): |
| 28795 | (KJS::ReadModifyLocalVarNode::): |
| 28796 | (KJS::AssignResolveNode::): |
| 28797 | (KJS::AssignResolveNode::precedence): |
| 28798 | * kjs/nodes2string.cpp: |
| 28799 | (KJS::PostIncResolveNode::streamTo): |
| 28800 | (KJS::PostDecResolveNode::streamTo): |
| 28801 | (KJS::PostfixBracketNode::streamTo): |
| 28802 | (KJS::PostfixDotNode::streamTo): |
| 28803 | (KJS::PreIncResolveNode::streamTo): |
| 28804 | (KJS::PreDecResolveNode::streamTo): |
| 28805 | (KJS::ReadModifyResolveNode::streamTo): |
| 28806 | (KJS::AssignResolveNode::streamTo): |
| 28807 | |
| 28808 | 2007-10-29 Maciej Stachowiak <mjs@apple.com> |
| 28809 | |
| 28810 | Not reviewed, build fix. |
| 28811 | |
| 28812 | - Include Vector.h in a way that actually works. |
| 28813 | |
| 28814 | * kjs/LocalStorage.h: |
| 28815 | |
| 28816 | 2007-10-29 Maciej Stachowiak <mjs@apple.com> |
| 28817 | |
| 28818 | Not reviewed, build fix. |
| 28819 | |
| 28820 | - Install LocalStorage.h as a private header. |
| 28821 | |
| 28822 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 28823 | |
| 28824 | 2007-10-29 Maciej Stachowiak <mjs@apple.com> |
| 28825 | |
| 28826 | Reviewed by Darin. |
| 28827 | |
| 28828 | - Define good VectorTraits for LocalStorage entry for 0.5% speed improvement on SunSpider. |
| 28829 | |
| 28830 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 28831 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 28832 | * kjs/LocalStorage.h: Added. |
| 28833 | (KJS::LocalStorageEntry::LocalStorageEntry): |
| 28834 | (WTF::): |
| 28835 | * kjs/function.h: |
| 28836 | * kjs/nodes.cpp: |
| 28837 | (KJS::FunctionBodyNode::processDeclarationsForFunctionCode): |
| 28838 | |
| 28839 | 2007-10-29 Geoffrey Garen <ggaren@apple.com> |
| 28840 | |
| 28841 | Reviewed by Oliver Hunt. |
| 28842 | |
| 28843 | Some small tweaks that I notice while reviewing Oliver's last patch. |
| 28844 | |
| 28845 | Includes removal of an unnecessary KJS_CHECKEXCEPTIONVALUE. |
| 28846 | |
| 28847 | No change in SunSpider because SunSpider doesn't take the code path that |
| 28848 | would execute the unnecessary KJS_CHECKEXCEPTIONVALUE much. |
| 28849 | |
| 28850 | * kjs/nodes.cpp: |
| 28851 | (KJS::LocalVarPostfixNode::evaluate): |
| 28852 | (KJS::TypeOfResolveNode::optimizeVariableAccess): |
| 28853 | (KJS::LocalVarTypeOfNode::evaluate): |
| 28854 | (KJS::PrefixResolveNode::optimizeVariableAccess): |
| 28855 | (KJS::LocalVarPrefixNode::evaluate): |
| 28856 | (KJS::AssignResolveNode::optimizeVariableAccess): |
| 28857 | (KJS::LocalVarAssignNode::evaluate): |
| 28858 | * kjs/nodes.h: |
| 28859 | (KJS::LocalVarTypeOfNode::): |
| 28860 | (KJS::PrefixResolveNode::): |
| 28861 | (KJS::LocalVarPrefixNode::): |
| 28862 | (KJS::AssignResolveNode::): |
| 28863 | (KJS::LocalVarAssignNode::): |
| 28864 | |
| 28865 | 2007-10-29 Eric Seidel <eric@webkit.org> |
| 28866 | |
| 28867 | Reviewed by Maciej. |
| 28868 | |
| 28869 | SunSpider claims this was a 0.7% speedup. |
| 28870 | |
| 28871 | * kjs/string_object.cpp: |
| 28872 | (KJS::StringProtoFunc::callAsFunction): avoid mallocing a jsString in the common case |
| 28873 | |
| 28874 | 2007-10-29 Maciej Stachowiak <mjs@apple.com> |
| 28875 | |
| 28876 | Reviewed by Mark. |
| 28877 | |
| 28878 | - re-enable asserts for access to empty or deleted keys |
| 28879 | |
| 28880 | * wtf/HashTable.h: |
| 28881 | (WTF::::lookup): |
| 28882 | (WTF::::lookupForWriting): |
| 28883 | (WTF::::fullLookupForWriting): |
| 28884 | (WTF::::add): |
| 28885 | |
| 28886 | 2007-10-29 Eric Seidel <eric@webkit.org> |
| 28887 | |
| 28888 | Build fix only, no review. |
| 28889 | |
| 28890 | * JavaScriptCore.exp: Export symbol for new StringInstance::getOwnPropertySlot |
| 28891 | |
| 28892 | 2007-10-29 Mark Rowe <mrowe@apple.com> |
| 28893 | |
| 28894 | Gtk build fix. Move struct declarations into nodes.h. |
| 28895 | |
| 28896 | * kjs/grammar.y: |
| 28897 | * kjs/nodes.h: |
| 28898 | |
| 28899 | 2007-10-29 Eric Seidel <eric@webkit.org> |
| 28900 | |
| 28901 | Reviewed by darin. |
| 28902 | |
| 28903 | Give StringInstance a getOwnPropertySlot(ExecState, unsigned, PropertySlot) fastpath, just like Arrays. |
| 28904 | Make it a compile time error to use toString(ExecState) on a StringInstance |
| 28905 | |
| 28906 | SunSpider claims this was a 6.6% speedup overall (22% on string-base64) |
| 28907 | |
| 28908 | * kjs/internal.h: |
| 28909 | (KJS::StringImp::getLength): |
| 28910 | * kjs/string_object.cpp: |
| 28911 | (KJS::StringInstance::lengthGetter): |
| 28912 | (KJS::StringInstance::inlineGetOwnPropertySlot): |
| 28913 | (KJS::StringInstance::getOwnPropertySlot): |
| 28914 | * kjs/string_object.h: |
| 28915 | |
| 28916 | 2007-10-28 Oliver Hunt <oliver@apple.com> |
| 28917 | |
| 28918 | Reviewed by Darin. |
| 28919 | |
| 28920 | Add nodes to allow Assignment, TypeOf, and prefix operators to |
| 28921 | make use of the new optimised local variable look up. |
| 28922 | |
| 28923 | 5% gain on sunspider |
| 28924 | |
| 28925 | * kjs/nodes.cpp: |
| 28926 | (KJS::TypeOfResolveNode::optimizeVariableAccess): |
| 28927 | (KJS::LocalTypeOfAccessNode::evaluate): |
| 28928 | (KJS::PrefixResolveNode::optimizeVariableAccess): |
| 28929 | (KJS::PrefixLocalAccessNode::evaluate): |
| 28930 | (KJS::AssignResolveNode::optimizeVariableAccess): |
| 28931 | (KJS::AssignLocalAccessNode::evaluate): |
| 28932 | * kjs/nodes.h: |
| 28933 | (KJS::TypeOfResolveNode::): |
| 28934 | (KJS::TypeOfResolveNode::precedence): |
| 28935 | (KJS::LocalTypeOfAccessNode::): |
| 28936 | (KJS::PrefixResolveNode::): |
| 28937 | (KJS::PrefixResolveNode::precedence): |
| 28938 | (KJS::PrefixLocalAccessNode::): |
| 28939 | (KJS::AssignResolveNode::): |
| 28940 | (KJS::AssignLocalAccessNode::): |
| 28941 | |
| 28942 | 2007-10-28 Maciej Stachowiak <mjs@apple.com> |
| 28943 | |
| 28944 | Reviewed by Darin. |
| 28945 | |
| 28946 | - avoid creating and then breaking circular lists in the parser, instead track head and tail pointers at parse time |
| 28947 | http://bugs.webkit.org/show_bug.cgi?id=15748 |
| 28948 | |
| 28949 | Not a significant speedup or slowdown on SunSpider. |
| 28950 | |
| 28951 | * kjs/Parser.cpp: |
| 28952 | (KJS::clearNewNodes): |
| 28953 | * kjs/Parser.h: |
| 28954 | * kjs/grammar.y: |
| 28955 | * kjs/nodes.cpp: |
| 28956 | (KJS::BlockNode::BlockNode): |
| 28957 | (KJS::CaseBlockNode::CaseBlockNode): |
| 28958 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 28959 | (KJS::SourceElementsNode::SourceElementsNode): |
| 28960 | (KJS::ProgramNode::ProgramNode): |
| 28961 | * kjs/nodes.h: |
| 28962 | (KJS::ElementNode::): |
| 28963 | (KJS::ArrayNode::): |
| 28964 | (KJS::PropertyListNode::): |
| 28965 | (KJS::ObjectLiteralNode::): |
| 28966 | (KJS::ArgumentListNode::): |
| 28967 | (KJS::ArgumentsNode::): |
| 28968 | (KJS::VarDeclListNode::): |
| 28969 | (KJS::VarStatementNode::): |
| 28970 | (KJS::ForNode::): |
| 28971 | (KJS::ParameterNode::): |
| 28972 | (KJS::FuncExprNode::): |
| 28973 | (KJS::FuncDeclNode::): |
| 28974 | (KJS::SourceElementsNode::): |
| 28975 | (KJS::CaseClauseNode::): |
| 28976 | (KJS::ClauseListNode::): |
| 28977 | |
| 28978 | 2007-10-28 Mark Rowe <mrowe@apple.com> |
| 28979 | |
| 28980 | Disable assertions in a manner that doesn't break the Qt Windows build. |
| 28981 | |
| 28982 | * wtf/HashTable.h: |
| 28983 | (WTF::::lookup): |
| 28984 | (WTF::::lookupForWriting): |
| 28985 | (WTF::::fullLookupForWriting): |
| 28986 | |
| 28987 | 2007-10-28 Geoffrey Garen <ggaren@apple.com> |
| 28988 | |
| 28989 | Temporarily disabling some ASSERTs I introduced in my last check-in |
| 28990 | because of http://bugs.webkit.org/show_bug.cgi?id=15747 |
| 28991 | Lots of layout tests fail the !HashTranslator::equal(KeyTraits::emptyValue() ASSERT |
| 28992 | |
| 28993 | * wtf/HashTable.h: |
| 28994 | (WTF::::lookup): |
| 28995 | (WTF::::lookupForWriting): |
| 28996 | (WTF::::fullLookupForWriting): |
| 28997 | (WTF::::add): |
| 28998 | |
| 28999 | 2007-10-28 Geoffrey Garen <ggaren@apple.com> |
| 29000 | |
| 29001 | Reviewed by Darin Adler. |
| 29002 | |
| 29003 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15746 |
| 29004 | #ifndef ASSERT_DISABLED is no good! |
| 29005 | |
| 29006 | Replaced with #if !ASSERT_DISABLED. |
| 29007 | |
| 29008 | * wtf/HashTable.h: |
| 29009 | (WTF::::lookup): |
| 29010 | (WTF::::lookupForWriting): |
| 29011 | (WTF::::fullLookupForWriting): |
| 29012 | (WTF::::add): |
| 29013 | |
| 29014 | 2007-10-28 Geoffrey Garen <ggaren@apple.com> |
| 29015 | |
| 29016 | Reviewed by Darin Adler. |
| 29017 | |
| 29018 | Added FunctionCallResolveNode, PostfixResolveNode, and DeleteResolveNode |
| 29019 | to the AST transfom that replaces slow resolve nodes with fast local |
| 29020 | variable alternatives. |
| 29021 | |
| 29022 | 2.5% speedup on SunSpider. |
| 29023 | |
| 29024 | Also added some missing copyright notices. |
| 29025 | |
| 29026 | * kjs/nodes.cpp: |
| 29027 | (KJS::FunctionCallResolveNode::optimizeVariableAccess): |
| 29028 | (KJS::FunctionCallResolveNode::evaluate): |
| 29029 | (KJS::LocalVarFunctionCallNode::evaluate): |
| 29030 | (KJS::PostfixResolveNode::optimizeVariableAccess): |
| 29031 | (KJS::PostfixResolveNode::evaluate): |
| 29032 | (KJS::LocalVarPostfixNode::evaluate): |
| 29033 | (KJS::DeleteResolveNode::optimizeVariableAccess): |
| 29034 | (KJS::DeleteResolveNode::evaluate): |
| 29035 | (KJS::LocalVarDeleteNode::evaluate): |
| 29036 | * kjs/nodes.h: |
| 29037 | (KJS::FunctionCallResolveNode::): |
| 29038 | (KJS::LocalVarFunctionCallNode::LocalVarFunctionCallNode): |
| 29039 | (KJS::PostfixResolveNode::): |
| 29040 | (KJS::LocalVarPostfixNode::LocalVarPostfixNode): |
| 29041 | (KJS::DeleteResolveNode::): |
| 29042 | (KJS::LocalVarDeleteNode::LocalVarDeleteNode): |
| 29043 | |
| 29044 | 2007-10-28 Eric Seidel <eric@webkit.org> |
| 29045 | |
| 29046 | Reviewed by darin. |
| 29047 | |
| 29048 | Inline UString::Rep::deref() for a 0.8% improvement in SunSpider |
| 29049 | Add virtual keyword to a few virtual functions previously unmarked. |
| 29050 | |
| 29051 | * kjs/internal.h: |
| 29052 | (KJS::StringImp::type): |
| 29053 | (KJS::NumberImp::type): |
| 29054 | * kjs/ustring.h: |
| 29055 | (KJS::UString::Rep::deref): |
| 29056 | |
| 29057 | 2007-10-28 Darin Adler <darin@apple.com> |
| 29058 | |
| 29059 | - fix "broken everything" from the storage leak fix |
| 29060 | |
| 29061 | * wtf/RefPtr.h: (WTF::RefPtr::RefPtr): Added a PlacementNewAdopt constructor. |
| 29062 | * kjs/ustring.h: (KJS::UString::UString): Pass PlacementNewAdopt along to RefPtr. |
| 29063 | |
| 29064 | 2007-10-28 Darin Adler <darin@apple.com> |
| 29065 | |
| 29066 | Reviewed by Adam. |
| 29067 | |
| 29068 | - turn on unused parameter waring on Mac OS X because it's already on elsewhere |
| 29069 | |
| 29070 | * Configurations/Base.xcconfig: Took out -wno-unused-parameter. |
| 29071 | |
| 29072 | * API/JSNode.c: |
| 29073 | * API/JSNodeList.c: |
| 29074 | * API/minidom.c: |
| 29075 | * API/testapi.c: |
| 29076 | Fixed unused variables by using them or marked them with UNUSED_PARAM. |
| 29077 | |
| 29078 | * kjs/CollectorHeapIntrospector.h: (KJS::CollectorHeapIntrospector::zoneCalloc): |
| 29079 | Removed parameter names to indicate they are unused. |
| 29080 | |
| 29081 | 2007-10-28 Darin Adler <darin@apple.com> |
| 29082 | |
| 29083 | Reviewed by Maciej. |
| 29084 | |
| 29085 | - fix a storage leak where we ref the UString every time we replace |
| 29086 | a ResolveNode with a LocalVarAccessNode |
| 29087 | |
| 29088 | * kjs/identifier.h: (KJS::Identifier::Identifier): Added a constructor |
| 29089 | that takes PlacementNewAdopt. |
| 29090 | |
| 29091 | * kjs/nodes.h: (KJS::ResolveNode::ResolveNode): Initialize the ident |
| 29092 | with PlacementNewAdopt instead of the old value of ident. |
| 29093 | |
| 29094 | * kjs/ustring.h: (KJS::UString::UString): Added a constructor that |
| 29095 | takes PlacementNewAdopt. |
| 29096 | |
| 29097 | 2007-10-28 Darin Adler <darin@apple.com> |
| 29098 | |
| 29099 | - Windows build fix; get rid of unused parameter |
| 29100 | |
| 29101 | * kjs/nodes.cpp: (KJS::ResolveNode::optimizeVariableAccess): Don't pass it. |
| 29102 | * kjs/nodes.h: (KJS::LocalVarAccessNode::LocalVarAccessNode): Remove it. |
| 29103 | The assertions weren't all that helpful. |
| 29104 | |
| 29105 | 2007-10-28 Mark Rowe <mrowe@apple.com> |
| 29106 | |
| 29107 | Gtk build fix. Add include of MathExtras.h. |
| 29108 | |
| 29109 | * kjs/string_object.cpp: |
| 29110 | |
| 29111 | 2007-10-28 Mark Rowe <mrowe@apple.com> |
| 29112 | |
| 29113 | Reviewed by Maciej and Tim. |
| 29114 | |
| 29115 | Replace uses of isNaN and isInf with isnan and isinf, and |
| 29116 | remove isNaN and isInf. |
| 29117 | |
| 29118 | * kjs/config.h: Remove unused HAVE_'s. |
| 29119 | * kjs/date_object.cpp: |
| 29120 | (KJS::DateInstance::getTime): |
| 29121 | (KJS::DateInstance::getUTCTime): |
| 29122 | (KJS::DateProtoFunc::callAsFunction): |
| 29123 | (KJS::DateObjectImp::construct): |
| 29124 | (KJS::DateObjectFuncImp::callAsFunction): |
| 29125 | * kjs/function.cpp: |
| 29126 | (KJS::GlobalFuncImp::callAsFunction): |
| 29127 | * kjs/math_object.cpp: |
| 29128 | (MathFuncImp::callAsFunction): |
| 29129 | * kjs/nodes2string.cpp: |
| 29130 | (KJS::isParserRoundTripNumber): |
| 29131 | * kjs/number_object.cpp: |
| 29132 | (NumberProtoFunc::callAsFunction): |
| 29133 | * kjs/operations.cpp: |
| 29134 | * kjs/operations.h: |
| 29135 | * kjs/string_object.cpp: |
| 29136 | (KJS::StringProtoFunc::callAsFunction): |
| 29137 | * kjs/ustring.cpp: |
| 29138 | (KJS::UString::from): |
| 29139 | * kjs/value.cpp: |
| 29140 | (KJS::JSValue::toInteger): |
| 29141 | (KJS::JSValue::toInt32SlowCase): |
| 29142 | (KJS::JSValue::toUInt32SlowCase): |
| 29143 | |
| 29144 | 2007-10-28 Geoffrey Garen <ggaren@apple.com> |
| 29145 | |
| 29146 | Build fix: use the new-fangled missingSymbolMarker(). |
| 29147 | |
| 29148 | * kjs/nodes.cpp: |
| 29149 | (KJS::ResolveNode::optimizeVariableAccess): |
| 29150 | * kjs/nodes.h: |
| 29151 | (KJS::LocalVarAccessNode::LocalVarAccessNode): |
| 29152 | |
| 29153 | 2007-10-28 Geoffrey Garen <ggaren@apple.com> |
| 29154 | |
| 29155 | Reviewed by Maciej Stachowiak, Darin Adler. |
| 29156 | |
| 29157 | Much supporting work done by Maciej Stachowiak, Maks Orlovich, and |
| 29158 | Cameron Zwarich. |
| 29159 | |
| 29160 | AST transfom to replace slow resolve nodes with fast local variable |
| 29161 | alternatives that do direct memory access. Currently, only ResolveNode |
| 29162 | provides a fast local variable alternative. 6 others are soon to come. |
| 29163 | |
| 29164 | 16.7% speedup on SunSpider. |
| 29165 | |
| 29166 | Most of this patch is just scaffolding to support iterating all the |
| 29167 | resolve nodes in the AST through optimizeResolveNodes(). In |
| 29168 | optimizeResolveNodes(), most classes just push their child nodes onto |
| 29169 | the processing stack, while ResolveNodes actually replace themselves in |
| 29170 | the tree with more optimized alternatives, if possible. |
| 29171 | |
| 29172 | Here are the interesting bits: |
| 29173 | |
| 29174 | * kjs/nodes.h: Added PlacementNewAdoptTag, along with implementations |
| 29175 | in Node and ResolveNode. This tag allows you to use placement new to |
| 29176 | swap out a base class Node in favor of a subclass copy that holds the |
| 29177 | same data. (Without this tag, default initialization would NULL out |
| 29178 | RefPtrs, change line numbers, etc.) |
| 29179 | |
| 29180 | * kjs/nodes.cpp: |
| 29181 | (KJS::ResolveNode::evaluate): Since we're taking the slow path, ASSERT |
| 29182 | that the fast path is impossible, to make sure we didn't leave anything |
| 29183 | on the table. |
| 29184 | |
| 29185 | (KJS::FunctionBodyNode::optimizeResolveNodes): Here's where the AST |
| 29186 | transformation happens. |
| 29187 | |
| 29188 | (KJS::ResolveNode::optimizeResolveNodes): Here's where the ResolveNode |
| 29189 | optimization happens. |
| 29190 | |
| 29191 | * kjs/function.h: Added symbolTable() accessor for, for the sake of |
| 29192 | an ASSERT. |
| 29193 | |
| 29194 | 2007-10-28 Mark Rowe <mrowe@apple.com> |
| 29195 | |
| 29196 | Reviewed by Maciej. |
| 29197 | |
| 29198 | Fix "AllInOneFile.o has a global initializer in it". |
| 29199 | |
| 29200 | Some versions of gcc generate a global initializer for std::numeric_limits<size_t>::max(). |
| 29201 | We can avoid this by moving it inside an inline function. |
| 29202 | |
| 29203 | * kjs/SymbolTable.h: |
| 29204 | (KJS::missingSymbolMarker): |
| 29205 | * kjs/function.cpp: |
| 29206 | (KJS::ActivationImp::getOwnPropertySlot): |
| 29207 | (KJS::ActivationImp::put): |
| 29208 | |
| 29209 | 2007-10-28 Maciej Stachowiak <mjs@apple.com> |
| 29210 | |
| 29211 | Reviewed by Mark. |
| 29212 | |
| 29213 | - Added assertions to protect against adding empty or deleted keys to a HashTable |
| 29214 | |
| 29215 | * wtf/HashTable.h: |
| 29216 | (WTF::HashTable::lookup): |
| 29217 | (WTF::HashTable::lookupForWriting): |
| 29218 | (WTF::HashTable::fullLookupForWriting): |
| 29219 | (WTF::HashTable::add): |
| 29220 | |
| 29221 | 2007-10-28 Darin Adler <darin@apple.com> |
| 29222 | |
| 29223 | - fix GTK build |
| 29224 | |
| 29225 | * kjs/nodes2string.cpp: (KJS::isParserRoundTripNumber): |
| 29226 | Use isNaN and isInf instead of isnan and isinf. |
| 29227 | |
| 29228 | 2007-10-28 Darin Adler <darin@apple.com> |
| 29229 | |
| 29230 | Reviewed by Maciej. |
| 29231 | |
| 29232 | - http://bugs.webkit.org/show_bug.cgi?id=15735 |
| 29233 | remove GroupNode to simplify AST and possibly get a modest speedup |
| 29234 | |
| 29235 | This patch removes 4 node types: GroupNode, PropertyNameNode, |
| 29236 | FunctionCallParenBracketNode, and FunctionCallParenDotNode. |
| 29237 | |
| 29238 | To remove GroupNode, we add knowledge of precedence to the tree nodes, |
| 29239 | and use that when serializing to determine where parentheses are needed. |
| 29240 | This means we no longer have to represent parentheses in the tree. |
| 29241 | |
| 29242 | The precedence values are named after productions in the grammar from the |
| 29243 | JavaScript standard. |
| 29244 | |
| 29245 | SunSpider says this is an 0.4% speedup. |
| 29246 | |
| 29247 | * kjs/function.h: |
| 29248 | * kjs/function.cpp: Removed escapeStringForPrettyPrinting -- it's part of |
| 29249 | serialization, so I moved it to the file that takes care of that. |
| 29250 | |
| 29251 | * kjs/grammar.y: Changed makeGetterOrSetterPropertyNode to use 0 to |
| 29252 | indicate failure instead of a separate boolean. Got rid of PropertyNameNode |
| 29253 | by merging the PropertyName rule into the Property rule (which was easier |
| 29254 | than figuring out how to pass the Identifier from one node to another). |
| 29255 | Got rid of GroupNode, nodeInsideAllParens(), FunctionCallParenBracketNode, |
| 29256 | and FunctionCallParenDotNode. |
| 29257 | |
| 29258 | * kjs/nodes.h: Removed unused forward declarations and Operator values. |
| 29259 | Added Precedence enum, and precedence function to all nodes. Removed |
| 29260 | nodeInsideAllParens. Added streamBinaryOperator function for serialization. |
| 29261 | Removed GroupNode and PropertyNameNode. Made PropertyNode store an Identifier. |
| 29262 | Removed FunctionCallParenBracketNode and FunctionCallParenDotNode. |
| 29263 | |
| 29264 | * kjs/nodes.cpp: Removed Node::nodinsideAllParens, GroupNode, and PropertyNameNode. |
| 29265 | (KJS::PropertyListNode::evaluate): Changed code to get name directly instead |
| 29266 | of converting it from an Identifier to a jsString then back to a UString |
| 29267 | then into an Identifier again! |
| 29268 | |
| 29269 | * kjs/nodes2string.cpp: Changed special-token implementation to use a separate |
| 29270 | function for each of Endl, Indent, Unindent, and DotExpr instead of using a |
| 29271 | single function with a switch. Added a precedence that you can stream in, to |
| 29272 | cause the next node serialized to add parentheses based on that precedence value. |
| 29273 | (KJS::operatorString): Moved to the top of the file. |
| 29274 | (KJS::escapeStringForPrettyPrinting): Moved here from function.cpp. Removed old |
| 29275 | workaround for snprintf, since StringExtras.h takes care of that. |
| 29276 | (KJS::operator<<): Made the char and char* versions faster by using UString's |
| 29277 | character append functions instead of constructing a UString. Added the logic |
| 29278 | to the Node* version to add parentheses if needed. |
| 29279 | (KJS::Node::streamLeftAssociativeBinaryOperator): Added helper function. |
| 29280 | (KJS::ElementNode::streamTo): Use PrecAssignment for the elements. |
| 29281 | (KJS::BracketAccessorNode::streamTo): Use PrecCall for the expression before |
| 29282 | the bracket. |
| 29283 | (KJS::DotAccessorNode::streamTo): Use PrecCall for the expression before the dot. |
| 29284 | (KJS::ArgumentListNode::streamTo): Use PrecAssignment for the arguments. |
| 29285 | (KJS::NewExprNode::streamTo): Use PrecMember for the expression. |
| 29286 | (KJS::FunctionCallValueNode::streamTo): Use PrecCall. |
| 29287 | (KJS::FunctionCallBracketNode::streamTo): Ditto. |
| 29288 | (KJS::FunctionCallDotNode::streamTo): Ditto. |
| 29289 | (KJS::PostfixBracketNode::streamTo): Ditto. |
| 29290 | (KJS::PostfixDotNode::streamTo): Ditto. |
| 29291 | (KJS::PostfixErrorNode::streamTo): Use PrecLeftHandSide. |
| 29292 | (KJS::DeleteBracketNode::streamTo): Use PrecCall. |
| 29293 | (KJS::DeleteDotNode::streamTo): Ditto. |
| 29294 | (KJS::DeleteValueNode::streamTo): Use PrecUnary. |
| 29295 | (KJS::VoidNode::streamTo): Ditto. |
| 29296 | (KJS::TypeOfValueNode::streamTo): Ditto. |
| 29297 | (KJS::PrefixBracketNode::streamTo): Use PrecCall. |
| 29298 | (KJS::PrefixDotNode::streamTo): Ditto. |
| 29299 | (KJS::PrefixErrorNode::streamTo): Use PrecUnary. |
| 29300 | (KJS::UnaryPlusNode::streamTo): Ditto. |
| 29301 | (KJS::NegateNode::streamTo): Ditto. |
| 29302 | (KJS::BitwiseNotNode::streamTo): Ditto. |
| 29303 | (KJS::LogicalNotNode::streamTo): Ditto. |
| 29304 | (KJS::MultNode::streamTo): Use streamLeftAssociativeBinaryOperator. |
| 29305 | (KJS::DivNode::streamTo): Ditto. |
| 29306 | (KJS::ModNode::streamTo): Ditto. |
| 29307 | (KJS::AddNode::streamTo): Ditto. |
| 29308 | (KJS::SubNode::streamTo): Ditto. |
| 29309 | (KJS::LeftShiftNode::streamTo): Ditto. |
| 29310 | (KJS::RightShiftNode::streamTo): Ditto. |
| 29311 | (KJS::UnsignedRightShiftNode::streamTo): Ditto. |
| 29312 | (KJS::LessNode::streamTo): Ditto. |
| 29313 | (KJS::GreaterNode::streamTo): Ditto. |
| 29314 | (KJS::LessEqNode::streamTo): Ditto. |
| 29315 | (KJS::GreaterEqNode::streamTo): Ditto. |
| 29316 | (KJS::InstanceOfNode::streamTo): Ditto. |
| 29317 | (KJS::InNode::streamTo): Ditto. |
| 29318 | (KJS::EqualNode::streamTo): Ditto. |
| 29319 | (KJS::NotEqualNode::streamTo): Ditto. |
| 29320 | (KJS::StrictEqualNode::streamTo): Ditto. |
| 29321 | (KJS::NotStrictEqualNode::streamTo): Ditto. |
| 29322 | (KJS::BitAndNode::streamTo): Ditto. |
| 29323 | (KJS::BitXOrNode::streamTo): Ditto. |
| 29324 | (KJS::BitOrNode::streamTo): Ditto. |
| 29325 | (KJS::LogicalAndNode::streamTo): Ditto. |
| 29326 | (KJS::LogicalOrNode::streamTo): Ditto. |
| 29327 | (KJS::ConditionalNode::streamTo): Ditto. |
| 29328 | (KJS::AssignResolveNode::streamTo): Use PrecAssignment for the right side. |
| 29329 | (KJS::AssignBracketNode::streamTo): Use PrecCall for the expression before |
| 29330 | the bracket and PrecAssignment for the right side. |
| 29331 | (KJS::AssignDotNode::streamTo): Ditto. |
| 29332 | (KJS::AssignErrorNode::streamTo): Use PrecLeftHandSide for the left side |
| 29333 | and PrecAssignment for the right side. |
| 29334 | (KJS::CommaNode::streamTo): Use PrecAssignment for both expressions. |
| 29335 | (KJS::AssignExprNode::streamTo): Use PrecAssignment. |
| 29336 | |
| 29337 | 2007-10-28 Kevin Ollivier <kevino@theolliviers.com> |
| 29338 | |
| 29339 | Define wx port and set wx port USE options. |
| 29340 | |
| 29341 | Reviewed by Adam Roben. |
| 29342 | |
| 29343 | * wtf/Platform.h: |
| 29344 | |
| 29345 | 2007-10-28 Mark Rowe <mrowe@apple.com> |
| 29346 | |
| 29347 | We don't include "config.h" in headers. |
| 29348 | |
| 29349 | * bindings/jni/jni_instance.h: |
| 29350 | * kjs/regexp.h: |
| 29351 | * wtf/TCPageMap.h: |
| 29352 | * wtf/TCSpinLock.h: |
| 29353 | |
| 29354 | 2007-10-28 Maciej Stachowiak <mjs@apple.com> |
| 29355 | |
| 29356 | Rubber stamped by Mark. |
| 29357 | |
| 29358 | - avoid using non-portable SIZE_T_MAX in favor of std::numeric_limits |
| 29359 | |
| 29360 | * kjs/SymbolTable.h: |
| 29361 | (KJS::SymbolTableIndexHashTraits::emptyValue): |
| 29362 | * kjs/function.cpp: |
| 29363 | (KJS::ActivationImp::getOwnPropertySlot): |
| 29364 | (KJS::ActivationImp::put): |
| 29365 | |
| 29366 | 2007-10-28 Maciej Stachowiak <mjs@apple.com> |
| 29367 | |
| 29368 | Reviewed by Eric. |
| 29369 | |
| 29370 | - switch SymbolTable to be a HashMap instead of a PropertyMap for 3% SunSpider speedup |
| 29371 | |
| 29372 | * kjs/SymbolTable.h: |
| 29373 | (KJS::IdentifierRepHash::hash): Special hash function for identifier reps. |
| 29374 | (KJS::IdentifierRepHash::equal): ditto |
| 29375 | (KJS::SymbolTableIndexHashTraits::emptyValue): Special HashTraits for the index value. |
| 29376 | (KJS::SymbolTable): change to a typedef for a HashMap. |
| 29377 | * kjs/function.cpp: |
| 29378 | (KJS::ActivationImp::getOwnPropertySlot): Adjusted for new SymbolTable API. |
| 29379 | (KJS::ActivationImp::deleteProperty): ditto |
| 29380 | (KJS::ActivationImp::put): ditto |
| 29381 | |
| 29382 | * kjs/nodes.cpp: |
| 29383 | (KJS::FunctionBodyNode::initializesymbolTable): Adjusted, since |
| 29384 | you now have to store a UString::rep, not an identifier. |
| 29385 | |
| 29386 | 2007-10-27 Maciej Stachowiak <mjs@apple.com> |
| 29387 | |
| 29388 | Reviewed by Oliver. |
| 29389 | |
| 29390 | - numerous HashTable performance improvements |
| 29391 | |
| 29392 | This does not quite add up to a measurable win on SunSpider, but it allows a |
| 29393 | follow-on > 3% improvement and probably helps WebCore too. |
| 29394 | |
| 29395 | I made the following improvements, among others: |
| 29396 | |
| 29397 | - Made HashFunctions note whether it is ok to compare a real value with the equal() function |
| 29398 | to the empty or deleted value, and used this to optimize the comparisons done in hash lookup. |
| 29399 | |
| 29400 | - Specialized lookup so it doesn't have to do so many extra branches and build so many extra |
| 29401 | std::pairs for cases that don't need them. There are now four versions, one for read-only access, |
| 29402 | two for writing, and one folded directly into add() (these all were improvments). |
| 29403 | |
| 29404 | - Made HashMap::get() use lookup() directly instead of find() to avoid having to build iterators. |
| 29405 | |
| 29406 | - Made a special constructor for iterators that knows it points to |
| 29407 | a valid filled cell and so skips updating itself. |
| 29408 | |
| 29409 | - Reordered memory accesses in the various lookup functions for better code generation |
| 29410 | |
| 29411 | - Made simple translators avoid passing a hash code around |
| 29412 | |
| 29413 | - Other minor tweaks |
| 29414 | |
| 29415 | * wtf/HashTable.h: |
| 29416 | (WTF::): |
| 29417 | (WTF::HashTableConstIterator::HashTableConstIterator): |
| 29418 | (WTF::HashTableIterator::HashTableIterator): |
| 29419 | (WTF::IdentityHashTranslator::translate): |
| 29420 | (WTF::HashTable::end): |
| 29421 | (WTF::HashTable::lookup): |
| 29422 | (WTF::HashTable::lookupForWriting): |
| 29423 | (WTF::HashTable::makeKnownGoodIterator): |
| 29424 | (WTF::HashTable::makeKnownGoodConstIterator): |
| 29425 | (WTF::::lookup): |
| 29426 | (WTF::::lookupForWriting): |
| 29427 | (WTF::::fullLookupForWriting): |
| 29428 | (WTF::::add): |
| 29429 | (WTF::::addPassingHashCode): |
| 29430 | (WTF::::reinsert): |
| 29431 | (WTF::::find): |
| 29432 | (WTF::::contains): |
| 29433 | * kjs/identifier.cpp: |
| 29434 | (WTF::): |
| 29435 | * wtf/HashFunctions.h: |
| 29436 | (WTF::): |
| 29437 | * wtf/HashMap.h: |
| 29438 | (WTF::): |
| 29439 | (WTF::::get): |
| 29440 | * wtf/HashSet.h: |
| 29441 | (WTF::): |
| 29442 | (WTF::::add): |
| 29443 | * wtf/ListHashSet.h: |
| 29444 | (WTF::ListHashSetTranslator::translate): |
| 29445 | |
| 29446 | 2007-10-27 Darin Adler <darin@apple.com> |
| 29447 | |
| 29448 | Reviewed by Eric. |
| 29449 | |
| 29450 | - fix ASCIICType.h for some Windows compiles |
| 29451 | |
| 29452 | * wtf/ASCIICType.h: Check the compiler, not the OS, since it's the |
| 29453 | compiler/library that has the wchar_t that is just a typedef. |
| 29454 | |
| 29455 | 2007-10-27 Kevin McCullough <kmccullough@apple.com> |
| 29456 | |
| 29457 | - BuildFix |
| 29458 | - Forgot to change the build step when I changed the filename. |
| 29459 | |
| 29460 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 29461 | |
| 29462 | 2007-10-27 Geoffrey Garen <ggaren@apple.com> |
| 29463 | |
| 29464 | Reviewed by Darin Adler. |
| 29465 | |
| 29466 | Fixed the rest of "ASSERTION FAILED: _hash in KJS::UString::Rep:: |
| 29467 | computedHash()" |
| 29468 | http://bugs.webkit.org/show_bug.cgi?id=15718 |
| 29469 | |
| 29470 | * kjs/identifier.cpp: Fixed more cases where an Identifier didn't get a |
| 29471 | hash value. Also changed O(n) strlen to O(1) check for empty string. |
| 29472 | (KJS::Identifier::add): |
| 29473 | |
| 29474 | * kjs/ustring.cpp: Changed O(n) strlens to O(1) checks for empty string. |
| 29475 | (KJS::UString::UString): |
| 29476 | (KJS::UString::operator=): |
| 29477 | |
| 29478 | 2007-10-27 Darin Adler <darin@apple.com> |
| 29479 | |
| 29480 | Reviewed by Eric. |
| 29481 | |
| 29482 | - fix pow on Windows |
| 29483 | |
| 29484 | * wtf/MathExtras.h: (wtf_pow): Add a special case for MSVC, which has |
| 29485 | a "pow" function that does not properly handle the case where arg1 is |
| 29486 | NaN and arg2 is 0. |
| 29487 | |
| 29488 | * kjs/math_object.cpp: (MathFuncImp::callAsFunction): Don't explicity |
| 29489 | specify "::pow" -- just "pow" is fine. |
| 29490 | |
| 29491 | 2007-10-27 Darin Adler <darin@apple.com> |
| 29492 | |
| 29493 | Reviewed by Maciej. |
| 29494 | |
| 29495 | - http://bugs.webkit.org/show_bug.cgi?id=15711 |
| 29496 | force JSImmediate to be inlined for roughly 1.2% SunSpider speedup |
| 29497 | |
| 29498 | * kjs/JSImmediate.h: Put ALWAYS_INLINE on everything. |
| 29499 | |
| 29500 | * kjs/object.h: Removed redundant includes. |
| 29501 | * kjs/value.h: Ditto. |
| 29502 | |
| 29503 | 2007-10-27 Maciej Stachowiak <mjs@apple.com> |
| 29504 | |
| 29505 | Reviewed by Mark. |
| 29506 | |
| 29507 | - fixed "ASSERTION FAILED: _hash in KJS::UString::Rep::computedHash()" |
| 29508 | http://bugs.webkit.org/show_bug.cgi?id=15718 |
| 29509 | |
| 29510 | * kjs/identifier.cpp: |
| 29511 | (KJS::Identifier::addSlowCase): Ensure that empty Identifiers have a hash computed, |
| 29512 | now that we count on all Identifiers already having one. |
| 29513 | |
| 29514 | 2007-10-27 Mark Rowe <mrowe@apple.com> |
| 29515 | |
| 29516 | Silence a warning. |
| 29517 | |
| 29518 | * kjs/SymbolTable.h: |
| 29519 | |
| 29520 | 2007-10-27 Mark Rowe <mrowe@apple.com> |
| 29521 | |
| 29522 | Gtk build fix. |
| 29523 | |
| 29524 | * kjs/function.h: |
| 29525 | |
| 29526 | 2007-10-26 Kevin McCullough <kmccullough@apple.com> |
| 29527 | |
| 29528 | Rubber stamp by Adam. |
| 29529 | |
| 29530 | - Renamed JSStringRefCOM to JSStringRefBSTR since it he only thing the |
| 29531 | files contain are functions that operate on BSTRs. |
| 29532 | |
| 29533 | * API/JSStringRefBSTR.cpp: Copied from API/JSStringRefCOM.cpp. |
| 29534 | * API/JSStringRefBSTR.h: Copied from API/JSStringRefCOM.h. |
| 29535 | * API/JSStringRefCOM.cpp: Removed. |
| 29536 | * API/JSStringRefCOM.h: Removed. |
| 29537 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 29538 | |
| 29539 | 2007-10-26 Kevin McCullough <kmccullough@apple.com> |
| 29540 | |
| 29541 | Reviewed by Adam. |
| 29542 | |
| 29543 | - Made JSStringCreateWithBSTR capable of handling null BSTRs. |
| 29544 | |
| 29545 | * API/JSStringRefCOM.cpp: |
| 29546 | (JSStringCreateWithBSTR): |
| 29547 | |
| 29548 | 2007-10-26 Sam Weinig <sam@webkit.org> |
| 29549 | |
| 29550 | Windows build fix. |
| 29551 | |
| 29552 | * kjs/SymbolTable.h: Add header gaurd. |
| 29553 | * kjs/nodes.h: #include "SymbolTable.h" |
| 29554 | |
| 29555 | 2007-10-26 Geoffrey Garen <ggaren@apple.com> |
| 29556 | |
| 29557 | Suggested by Anders Carlsson. |
| 29558 | |
| 29559 | Fixed tyop. |
| 29560 | |
| 29561 | * kjs/function.cpp: |
| 29562 | (KJS::ActivationImp::getOwnPropertySlot): |
| 29563 | |
| 29564 | 2007-10-26 Geoffrey Garen <ggaren@apple.com> |
| 29565 | |
| 29566 | Suggested by Darin Adler. |
| 29567 | |
| 29568 | Use computedHash(), which is safer than just directly accessing _hash. |
| 29569 | |
| 29570 | * kjs/lookup.cpp: |
| 29571 | (KJS::Lookup::findEntry): |
| 29572 | (KJS::Lookup::find): |
| 29573 | |
| 29574 | 2007-10-26 Geoffrey Garen <ggaren@apple.com> |
| 29575 | |
| 29576 | Build fix: svn add SymbolTable.h |
| 29577 | |
| 29578 | * kjs/SymbolTable.h: Added. |
| 29579 | (KJS::SymbolTable::set): |
| 29580 | (KJS::SymbolTable::get): |
| 29581 | |
| 29582 | 2007-10-26 Geoffrey Garen <ggaren@apple.com> |
| 29583 | |
| 29584 | Build fix: export SymbolTable.h to WebCore. |
| 29585 | |
| 29586 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 29587 | |
| 29588 | 2007-10-26 Geoffrey Garen <ggaren@apple.com> |
| 29589 | |
| 29590 | Comment tweak suggested by Maciej. |
| 29591 | |
| 29592 | * kjs/function.cpp: |
| 29593 | (KJS::ActivationImp::getOwnPropertySlot): |
| 29594 | |
| 29595 | 2007-10-26 Geoffrey Garen <ggaren@apple.com> |
| 29596 | |
| 29597 | Reviewed by Maciej Stachowiak. |
| 29598 | |
| 29599 | Tweaked property maps to remove 2 branches. 2.5% speedup on SunSpider. |
| 29600 | |
| 29601 | * kjs/property_map.cpp: Use a special no branch accessor to the UString's |
| 29602 | hash value. Also, return immediately instead of branching to the end |
| 29603 | of the loop if the value is not found. |
| 29604 | (KJS::PropertyMap::get): |
| 29605 | (KJS::PropertyMap::getLocation): |
| 29606 | (KJS::PropertyMap::put): |
| 29607 | (KJS::PropertyMap::insert): |
| 29608 | (KJS::PropertyMap::remove): |
| 29609 | (KJS::PropertyMap::checkConsistency): |
| 29610 | |
| 29611 | * kjs/ustring.h: |
| 29612 | (KJS::UString::Rep::computedHash): Special no branch accessor to the |
| 29613 | UString's hash value. Used when the caller knows that the hash value |
| 29614 | has already been computed. (For example, if the caller got the UString |
| 29615 | from an Identifier.) |
| 29616 | |
| 29617 | 2007-10-26 Geoffrey Garen <ggaren@apple.com> |
| 29618 | |
| 29619 | Reviewed by Maciej Stachowiak. |
| 29620 | |
| 29621 | Switched ActivationImp to using a symbol table. For now, though, all |
| 29622 | clients take the slow path. |
| 29623 | |
| 29624 | Net .6% speedup on SunSpider. |
| 29625 | |
| 29626 | Slowdowns: |
| 29627 | - ActivationImp now mallocs in its constructor |
| 29628 | - Local variable hits use an extra level of indirection to retrieve |
| 29629 | data |
| 29630 | - Local variable misses do two lookups |
| 29631 | |
| 29632 | Speedups: |
| 29633 | - Fast initialization of local variables upon function entry |
| 29634 | |
| 29635 | * JavaScriptCore.xcodeproj/project.pbxproj: Added SymbolTable.h |
| 29636 | |
| 29637 | * kjs/function.cpp: |
| 29638 | (KJS::ActivationImp::ActivationImp): Malloc a private structure to hold |
| 29639 | data that won't fit in a JSCell. |
| 29640 | (KJS::ActivationImp::argumentsGetter): Use slow symbol table path for |
| 29641 | lookup. |
| 29642 | (KJS::ActivationImp::getOwnPropertySlot): ditto |
| 29643 | (KJS::ActivationImp::deleteProperty): ditto |
| 29644 | (KJS::ActivationImp::put): ditto |
| 29645 | (KJS::ActivationImp::createArgumentsObject): ditto |
| 29646 | |
| 29647 | (KJS::ActivationImp::mark): Call JSObject::mark first so that one of |
| 29648 | our properties doesn't try to recursively mark us. (This caused a crash |
| 29649 | in earlier testing. Not sure why we haven't run into it before.) |
| 29650 | |
| 29651 | * kjs/nodes.cpp: Functions now build a symbol table the first time |
| 29652 | they're called. |
| 29653 | (KJS::VarDeclNode::evaluate): |
| 29654 | (KJS::FunctionBodyNode::FunctionBodyNode): |
| 29655 | (KJS::FunctionBodyNode::initializeSymbolTable): |
| 29656 | (KJS::FunctionBodyNode::processDeclarations): |
| 29657 | (KJS::FunctionBodyNode::processDeclarationsForFunctionCode): |
| 29658 | (KJS::FunctionBodyNode::processDeclarationsForProgramCode): |
| 29659 | |
| 29660 | * kjs/nodes.h: |
| 29661 | (KJS::FunctionBodyNode::symbolTable): |
| 29662 | |
| 29663 | * wtf/Forward.h: Added Vector. |
| 29664 | |
| 29665 | 2007-10-26 Kevin McCullough <kmccullough@apple.com> |
| 29666 | |
| 29667 | - Corrected function name mistake in this changelog. |
| 29668 | |
| 29669 | 2007-10-26 Kevin McCullough <kmccullough@apple.com> |
| 29670 | Reviewed by Sam and Steve. |
| 29671 | |
| 29672 | - Added convenience methods for converting between BSTR and JSStringRefs |
| 29673 | |
| 29674 | * API/JSStringRefCOM.cpp: Added. |
| 29675 | (JSStringCreateWithBSTR): |
| 29676 | (JSStringCopyBSTR): |
| 29677 | * API/JSStringRefCOM.h: Added. |
| 29678 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 29679 | |
| 29680 | 2007-10-26 Mark Rowe <mrowe@apple.com> |
| 29681 | |
| 29682 | Windows build fix. |
| 29683 | |
| 29684 | * kjs/collector.cpp: |
| 29685 | (KJS::Collector::collect): |
| 29686 | |
| 29687 | 2007-10-26 Oliver Hunt <oliver@apple.com> |
| 29688 | |
| 29689 | Reviewed by Maciej. |
| 29690 | |
| 29691 | Make the JSC GC use a separate heap for JSNumbers to get a 0.7-1.4% progression in SunSpider. |
| 29692 | |
| 29693 | * kjs/CollectorHeapIntrospector.cpp: |
| 29694 | (KJS::CollectorHeapIntrospector::init): |
| 29695 | (KJS::CollectorHeapIntrospector::enumerate): |
| 29696 | * kjs/CollectorHeapIntrospector.h: |
| 29697 | * kjs/collector.cpp: |
| 29698 | (KJS::Collector::recordExtraCost): |
| 29699 | (KJS::Collector::heapAllocate): |
| 29700 | (KJS::Collector::allocate): |
| 29701 | (KJS::Collector::allocateNumber): |
| 29702 | (KJS::Collector::registerThread): |
| 29703 | (KJS::Collector::markStackObjectsConservatively): |
| 29704 | (KJS::Collector::markMainThreadOnlyObjects): |
| 29705 | (KJS::Collector::sweep): |
| 29706 | (KJS::Collector::collect): |
| 29707 | * kjs/collector.h: |
| 29708 | * kjs/internal.h: |
| 29709 | (KJS::NumberImp::operator new): |
| 29710 | Force numbers to be allocated in the secondary heap. |
| 29711 | |
| 29712 | 2007-10-26 Maciej Stachowiak <mjs@apple.com> |
| 29713 | |
| 29714 | Reviewed by Oliver. |
| 29715 | |
| 29716 | - encourage GCC a little harder to inline a few hot functions for 1.5% improvement on SunSpider. |
| 29717 | |
| 29718 | * kjs/value.h: |
| 29719 | (KJS::JSValue::getUInt32): |
| 29720 | (KJS::JSValue::getTruncatedInt32): |
| 29721 | (KJS::JSValue::toNumber): |
| 29722 | * wtf/PassRefPtr.h: |
| 29723 | (WTF::PassRefPtr::~PassRefPtr): |
| 29724 | * wtf/RefPtr.h: |
| 29725 | (WTF::RefPtr::operator->): |
| 29726 | |
| 29727 | 2007-10-26 Mark Rowe <mrowe@apple.com> |
| 29728 | |
| 29729 | Gtk build fix. |
| 29730 | |
| 29731 | * kjs/ExecState.h: |
| 29732 | |
| 29733 | 2007-10-26 Maciej Stachowiak <mjs@apple.com> |
| 29734 | |
| 29735 | Reviewed by Mark. |
| 29736 | |
| 29737 | - Merge Context class fully into ExecState, since they are always created and used together. |
| 29738 | |
| 29739 | No measurable performance impact but this is a useful cleanup. |
| 29740 | |
| 29741 | * JavaScriptCore.pri: |
| 29742 | * kjs/ExecState.cpp: |
| 29743 | (KJS::ExecState::ExecState): |
| 29744 | (KJS::ExecState::~ExecState): |
| 29745 | (KJS::ExecState::mark): |
| 29746 | (KJS::ExecState::lexicalInterpreter): |
| 29747 | * kjs/ExecState.h: |
| 29748 | (KJS::ExecState::dynamicInterpreter): |
| 29749 | (KJS::ExecState::setException): |
| 29750 | (KJS::ExecState::clearException): |
| 29751 | (KJS::ExecState::exception): |
| 29752 | (KJS::ExecState::exceptionSlot): |
| 29753 | (KJS::ExecState::hadException): |
| 29754 | (KJS::ExecState::scopeChain): |
| 29755 | (KJS::ExecState::callingExecState): |
| 29756 | (KJS::ExecState::propertyNames): |
| 29757 | * kjs/collector.cpp: |
| 29758 | (KJS::Collector::reportOutOfMemoryToAllInterpreters): |
| 29759 | * kjs/function.cpp: |
| 29760 | (KJS::FunctionImp::callAsFunction): |
| 29761 | (KJS::FunctionImp::argumentsGetter): |
| 29762 | (KJS::FunctionImp::callerGetter): |
| 29763 | (KJS::GlobalFuncImp::callAsFunction): |
| 29764 | * kjs/interpreter.cpp: |
| 29765 | (KJS::Interpreter::Interpreter): |
| 29766 | (KJS::Interpreter::init): |
| 29767 | (KJS::Interpreter::evaluate): |
| 29768 | (KJS::Interpreter::mark): |
| 29769 | * kjs/interpreter.h: |
| 29770 | (KJS::Interpreter::setCurrentExec): |
| 29771 | (KJS::Interpreter::currentExec): |
| 29772 | * kjs/nodes.cpp: |
| 29773 | (KJS::currentSourceId): |
| 29774 | (KJS::currentSourceURL): |
| 29775 | (KJS::ThisNode::evaluate): |
| 29776 | (KJS::ResolveNode::evaluate): |
| 29777 | (KJS::FunctionCallResolveNode::evaluate): |
| 29778 | (KJS::PostfixResolveNode::evaluate): |
| 29779 | (KJS::DeleteResolveNode::evaluate): |
| 29780 | (KJS::TypeOfResolveNode::evaluate): |
| 29781 | (KJS::PrefixResolveNode::evaluate): |
| 29782 | (KJS::AssignResolveNode::evaluate): |
| 29783 | (KJS::VarDeclNode::evaluate): |
| 29784 | (KJS::DoWhileNode::execute): |
| 29785 | (KJS::WhileNode::execute): |
| 29786 | (KJS::ForNode::execute): |
| 29787 | (KJS::ForInNode::execute): |
| 29788 | (KJS::ContinueNode::execute): |
| 29789 | (KJS::BreakNode::execute): |
| 29790 | (KJS::ReturnNode::execute): |
| 29791 | (KJS::WithNode::execute): |
| 29792 | (KJS::SwitchNode::execute): |
| 29793 | (KJS::LabelNode::execute): |
| 29794 | (KJS::TryNode::execute): |
| 29795 | (KJS::FunctionBodyNode::processDeclarationsFunctionCode): |
| 29796 | (KJS::FunctionBodyNode::processDeclarationsProgramCode): |
| 29797 | (KJS::FunctionBodyNode::processDeclarations): |
| 29798 | (KJS::FuncDeclNode::makeFunction): |
| 29799 | (KJS::FuncExprNode::evaluate): |
| 29800 | |
| 29801 | 2007-10-26 Mark Rowe <mrowe@apple.com> |
| 29802 | |
| 29803 | Windows build fix. |
| 29804 | |
| 29805 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 29806 | |
| 29807 | 2007-10-26 Mark Rowe <mrowe@apple.com> |
| 29808 | |
| 29809 | Gtk build fix. |
| 29810 | |
| 29811 | * JavaScriptCore.pri: |
| 29812 | * kjs/ExecState.cpp: |
| 29813 | |
| 29814 | 2007-10-26 Maciej Stachowiak <mjs@apple.com> |
| 29815 | |
| 29816 | Reviewed by Oliver. |
| 29817 | |
| 29818 | - moved Context class into ExecState.{h,cpp} in preparation for merging |
| 29819 | ExecState and Context classes. |
| 29820 | |
| 29821 | * kjs/ExecState.h: Moved CodeType enum and Context class here in |
| 29822 | preparation for merging ExecState and Context. |
| 29823 | * kjs/ExecState.cpp: Moved Context class here from Context.cpp. |
| 29824 | (KJS::Context::Context): |
| 29825 | (KJS::Context::~Context): |
| 29826 | (KJS::Context::mark): |
| 29827 | * kjs/context.h: Removed. |
| 29828 | * kjs/Context.cpp: Removed. |
| 29829 | * kjs/function.h: Removed CodeType enum. |
| 29830 | * kjs/LabelStack.h: Added. Pulled LabelStack class out of internal.h. |
| 29831 | * kjs/internal.h: Removed LabelStack. |
| 29832 | * JavaScriptCore.xcodeproj/project.pbxproj: Added new file, removed ones that are gone. |
| 29833 | * kjs/collector.cpp: Fixed includes. |
| 29834 | * kjs/function.cpp: ditto |
| 29835 | * kjs/internal.cpp: ditto |
| 29836 | * kjs/interpreter.cpp: ditto |
| 29837 | * kjs/lookup.h: ditto |
| 29838 | * kjs/nodes.cpp: ditto |
| 29839 | |
| 29840 | 2007-10-26 Mark Rowe <mrowe@apple.com> |
| 29841 | |
| 29842 | Windows build fix. |
| 29843 | |
| 29844 | * kjs/string_object.cpp: |
| 29845 | (KJS::StringObjectFuncImp::callAsFunction): |
| 29846 | |
| 29847 | 2007-10-25 Darin Adler <darin@apple.com> |
| 29848 | |
| 29849 | Reviewed by Maciej. |
| 29850 | |
| 29851 | - http://bugs.webkit.org/show_bug.cgi?id=15703 |
| 29852 | fix numeric functions -- improve correctness and speed |
| 29853 | |
| 29854 | Gives about 1% gain on SunSpider. |
| 29855 | |
| 29856 | * kjs/value.h: Added toIntegerPreserveNan, removed toUInt16. |
| 29857 | (KJS::JSValue::toInt32): Changed to call getTruncatedInt32 in a way that works |
| 29858 | with both immediate and number values. |
| 29859 | (KJS::JSValue::toUInt32): Ditto. |
| 29860 | * kjs/value.cpp: |
| 29861 | (KJS::JSValue::toInteger): Moved the logic from roundValue here, with a couple |
| 29862 | differences. One is that it now correctly returns 0 for NaN, and another is that |
| 29863 | there's no special case for 0 or infinity, since the general case already handles |
| 29864 | those correctly. |
| 29865 | (KJS::JSValue::toIntegerPreserveNaN): Added. Like toInteger, but without the |
| 29866 | check for NaN. |
| 29867 | (KJS::JSValue::toInt32SlowCase): Call toNumber instead of roundValue. The |
| 29868 | truncation done by the typecast already does the necessary truncation that |
| 29869 | roundValue was doing. |
| 29870 | (KJS::JSValue::toUInt32SlowCase): Ditto. |
| 29871 | (KJS::JSValue::toUInt16): Removed. |
| 29872 | |
| 29873 | * kjs/internal.h: Removed roundValue. |
| 29874 | * kjs/internal.cpp: Ditto. |
| 29875 | |
| 29876 | * kjs/array_object.cpp: (KJS::ArrayProtoFunc::callAsFunction): Remove unneeded |
| 29877 | code to handle NaN in Array.slice; toInteger now never returns NaN as specified. |
| 29878 | |
| 29879 | * kjs/date_object.cpp: |
| 29880 | (KJS::fillStructuresUsingTimeArgs): Replaced call to roundValue with a call to |
| 29881 | toNumber as specified. |
| 29882 | (KJS::DateProtoFunc::callAsFunction): In SetTime case, replaced call to roundValue |
| 29883 | with a call to toNumber and timeClip as specified. |
| 29884 | (KJS::DateObjectImp::construct): Removed unnecessary checks of numArgs in cases |
| 29885 | where the default behavior of toInt32 (returning 0) was already correct. Replaced |
| 29886 | call to roundValue with a call to toNumber as specified. |
| 29887 | (KJS::DateObjectFuncImp::callAsFunction): Ditto. |
| 29888 | |
| 29889 | * kjs/math_object.cpp: (MathFuncImp::callAsFunction): Removed unnecessary special |
| 29890 | cases for the pow function that the library already handles correctly. |
| 29891 | |
| 29892 | * kjs/number_object.cpp: (NumberProtoFunc::callAsFunction): Changed ToString to |
| 29893 | call toIntegerPreserveNaN, so we can continue to handle the NaN case differently. |
| 29894 | The real toInteger now returns 0 for NaN. Took out unneeded special case in |
| 29895 | ToFixed for undefined; was only needed because our toInteger was wrong. Same |
| 29896 | thing in ToExponential. Changed ToPrecision to call toIntegerPreserveNaN. |
| 29897 | |
| 29898 | * kjs/string_object.cpp: |
| 29899 | (KJS::StringProtoFunc::callAsFunction): Took out CharAt and CharCodeAt special |
| 29900 | cases for undefined that were only needed because toInteger was wrong. Same in |
| 29901 | IndexOf, and was able to remove some special cases. In LastIndexOf, used |
| 29902 | toIntegerPreserveNaN, but was able to remove some special cases there too. |
| 29903 | Changed Substr implementation to preserve correct behavior with the change |
| 29904 | to toInteger and match the specification. Also made sure we weren't converting |
| 29905 | an out of range double to an int. |
| 29906 | (KJS::StringObjectFuncImp::callAsFunction): Changed constructor to just use |
| 29907 | toUInt32, because truncating toUInt32 to 16 bits is the same thing and there's |
| 29908 | no reason to have toUInt16 as a second, less-optimized function that's only |
| 29909 | called at this one call site. |
| 29910 | |
| 29911 | * wtf/MathExtras.h: Added trunc function for Windows. |
| 29912 | |
| 29913 | 2007-10-25 Geoffrey Garen <ggaren@apple.com> |
| 29914 | |
| 29915 | Reviewed by Maciej Stachowiak. |
| 29916 | |
| 29917 | Tweaked the inner hashtable lookup loop to remove a branch in the "not |
| 29918 | found" case. .5% speedup on SunSpider. |
| 29919 | |
| 29920 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 29921 | * wtf/HashTable.h: |
| 29922 | (WTF::::lookup): |
| 29923 | |
| 29924 | 2007-10-25 Maciej Stachowiak <mjs@apple.com> |
| 29925 | |
| 29926 | Reviewed by Oliver. |
| 29927 | |
| 29928 | - fold together toPrimitive() and toNumber() conversions for 0.5% gain on SunSpider |
| 29929 | |
| 29930 | * kjs/nodes.cpp: |
| 29931 | (KJS::SubNode::evaluate): Subtract directly, since toPrimitive() is not |
| 29932 | adding any value over toNumber() here. |
| 29933 | (KJS::valueForReadModifyAssignment): Ditto. |
| 29934 | (KJS::lessThan): Use new getPrimitiveNumber() method to avoid some virtual calls |
| 29935 | and branches. |
| 29936 | (KJS::lessThanEq): Ditto. |
| 29937 | * JavaScriptCore.exp: Export new functions as needed. |
| 29938 | * kjs/value.h: |
| 29939 | (KJS::JSValue::toPrimitive): Fixed formatting. |
| 29940 | (KJS::JSValue::getPrimitiveNumber): New method - this simultaneously converts |
| 29941 | to number and tells you whether a toPrimitive() conversion with a Number hint |
| 29942 | would have given a string. |
| 29943 | * kjs/internal.cpp: |
| 29944 | (KJS::StringImp::getPrimitiveNumber): Implemented. |
| 29945 | (KJS::NumberImp::getPrimitiveNumber): ditto |
| 29946 | (KJS::GetterSetterImp::getPrimitiveNumber): ditto |
| 29947 | (KJS::StringImp::toPrimitive): Fixed formatting. |
| 29948 | (KJS::NumberImp::toPrimitive): ditto |
| 29949 | (KJS::GetterSetterImp::toPrimitive): ditto |
| 29950 | * kjs/internal.h: |
| 29951 | * kjs/object.cpp: |
| 29952 | (KJS::JSObject::getPrimitiveNumber): Implemented. |
| 29953 | * kjs/object.h: |
| 29954 | |
| 29955 | 2007-10-25 Sam Weinig <sam@webkit.org> |
| 29956 | |
| 29957 | Reviewed by Adam Roben. |
| 29958 | |
| 29959 | Remove JSStringRefCFHack from windows as it is no longer needed. |
| 29960 | |
| 29961 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 29962 | |
| 29963 | 2007-10-25 Geoffrey Garen <ggaren@apple.com> |
| 29964 | |
| 29965 | Reviewed by Oliver Hunt. |
| 29966 | |
| 29967 | Rolled out my last patch. It turns out that I needed 2 words, not 1, |
| 29968 | so it didn't help. |
| 29969 | |
| 29970 | 2007-10-25 Geoffrey Garen <ggaren@apple.com> |
| 29971 | |
| 29972 | Reviewed by Oliver Hunt. |
| 29973 | |
| 29974 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15694 |
| 29975 | Shrink the size of an activation object by 1 word |
| 29976 | |
| 29977 | This is in preparation for adding a symbol table to the activation |
| 29978 | object. |
| 29979 | |
| 29980 | The basic strategy here is to rely on the mutual exclusion between |
| 29981 | the arguments object pointer and the function pointer (you only need |
| 29982 | the latter in order to create the former), and store them in the same |
| 29983 | place. The LazyArgumentsObject class encapsulates this strategy. |
| 29984 | |
| 29985 | Also inlined the ArgumentsImp constructor, for good measure. |
| 29986 | |
| 29987 | SunSpider reports no regression. Regression tests pass. |
| 29988 | |
| 29989 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 29990 | * kjs/Context.cpp: |
| 29991 | (KJS::Context::~Context): |
| 29992 | * kjs/function.cpp: |
| 29993 | (KJS::ActivationImp::LazyArgumentsObject::createArgumentsObject): |
| 29994 | (KJS::ActivationImp::LazyArgumentsObject::mark): |
| 29995 | (KJS::ActivationImp::argumentsGetter): |
| 29996 | (KJS::ActivationImp::mark): |
| 29997 | * kjs/function.h: |
| 29998 | (KJS::ActivationImp::LazyArgumentsObject::LazyArgumentsObject): |
| 29999 | (KJS::ActivationImp::LazyArgumentsObject::getOrCreate): |
| 30000 | (KJS::ActivationImp::LazyArgumentsObject::resetArguments): |
| 30001 | (KJS::ActivationImp::LazyArgumentsObject::setArgumentsObject): |
| 30002 | (KJS::ActivationImp::LazyArgumentsObject::argumentsObject): |
| 30003 | (KJS::ActivationImp::LazyArgumentsObject::setFunction): |
| 30004 | (KJS::ActivationImp::LazyArgumentsObject::function): |
| 30005 | (KJS::ActivationImp::LazyArgumentsObject::createdArgumentsObject): |
| 30006 | (KJS::ActivationImp::LazyArgumentsObject::): |
| 30007 | (KJS::ActivationImp::ActivationImp::ActivationImp): |
| 30008 | (KJS::ActivationImp::resetArguments): |
| 30009 | |
| 30010 | 2007-10-25 Adam Roben <aroben@apple.com> |
| 30011 | |
| 30012 | Change JavaScriptCore.vcproj to use DerivedSources.make |
| 30013 | |
| 30014 | We were trying to emulate the logic of make in |
| 30015 | build-generated-files.sh, but we got it wrong. We now use a |
| 30016 | build-generated-files very much like the one that WebCore uses to |
| 30017 | invoke make. |
| 30018 | |
| 30019 | We also now only have a Debug configuration of dftables which we build |
| 30020 | even when doing a Release build of JavaScriptCore. dftables also no |
| 30021 | longer has the "_debug" name suffix. |
| 30022 | |
| 30023 | Changes mostly made by Darin, reviewed by me. |
| 30024 | |
| 30025 | * DerivedSources.make: Add a variable to set the extension used for |
| 30026 | the dftables executable. |
| 30027 | * JavaScriptCore.vcproj/JavaScriptCore.sln: Updated to use Debug |
| 30028 | dftables in Release configurations. |
| 30029 | * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Ditto. |
| 30030 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 30031 | - Updated include path to point to the new location of the derived |
| 30032 | sources. |
| 30033 | - Modified pre-build event to pass the right arguments to |
| 30034 | build-generated-files.sh and not call dftables directly. |
| 30035 | - Added the derived source files to the project. |
| 30036 | - Removed grammarWrapper.cpp, which isn't needed now that we're |
| 30037 | compiling grammar.cpp directly. |
| 30038 | * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: |
| 30039 | Slightly modified from the WebCore version. |
| 30040 | * JavaScriptCore.vcproj/JavaScriptCore/grammarWrapper.cpp: Removed. |
| 30041 | * JavaScriptCore.vcproj/dftables/dftables.vcproj: |
| 30042 | - Changed the output location to match Mac. |
| 30043 | - Removed the Release configuration. |
| 30044 | - Removed the _debug suffix. |
| 30045 | |
| 30046 | 2007-10-25 Geoffrey Garen <ggaren@apple.com> |
| 30047 | |
| 30048 | Reviewed by Eric Seidel. |
| 30049 | |
| 30050 | Slightly elaborated the differences between declaration procesing in |
| 30051 | Function Code and Program Code. |
| 30052 | |
| 30053 | .3% speedup on SunSpider. |
| 30054 | |
| 30055 | * kjs/nodes.cpp: |
| 30056 | (KJS::FunctionBodyNode::processDeclarationsFunctionCode): |
| 30057 | (KJS::FunctionBodyNode::processDeclarationsProgramCode): Store a |
| 30058 | minimum set of attributes instead of recomputing all the time. Also, |
| 30059 | ignore m_parameters, since programs don't have arguments. |
| 30060 | |
| 30061 | 2007-10-25 Eric Seidel <eric@webkit.org> |
| 30062 | |
| 30063 | Reviewed by Maciej. |
| 30064 | |
| 30065 | More preparation work before adding long-running mode to testkjs. |
| 30066 | |
| 30067 | * kjs/testkjs.cpp: |
| 30068 | (TestFunctionImp::callAsFunction): |
| 30069 | (prettyPrintScript): |
| 30070 | (runWithScripts): |
| 30071 | (parseArguments): |
| 30072 | (kjsmain): |
| 30073 | (fillBufferWithContentsOfFile): |
| 30074 | |
| 30075 | 2007-10-25 Eric Seidel <eric@webkit.org> |
| 30076 | |
| 30077 | Reviewed by Maciej. |
| 30078 | |
| 30079 | Bring testkjs code out of the dark ages in preparation for more |
| 30080 | radical improvements (like long-running testing support!) |
| 30081 | |
| 30082 | * kjs/testkjs.cpp: |
| 30083 | (TestFunctionImp::callAsFunction): |
| 30084 | (setupInterpreter): |
| 30085 | (doIt): |
| 30086 | (fillBufferWithContentsOfFile): |
| 30087 | |
| 30088 | 2007-10-25 Geoffrey Garen <ggaren@apple.com> |
| 30089 | |
| 30090 | Reviewed by Maciej Stachowiak. |
| 30091 | |
| 30092 | Make a fast path for declaration processing inside Function Code. |
| 30093 | |
| 30094 | Lifted declaration processing code up from individual declaration nodes |
| 30095 | and into processDeclarations. |
| 30096 | |
| 30097 | Broke out processDeclarations into two cases, depending on the type of |
| 30098 | code. This eliminates 2 branches, and facilitates more radical |
| 30099 | divergeance in the future. |
| 30100 | |
| 30101 | 2.5% SunSpider speedup. |
| 30102 | |
| 30103 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 30104 | * kjs/nodes.cpp: |
| 30105 | (KJS::FunctionBodyNode::initializeDeclarationStacks): |
| 30106 | (KJS::FunctionBodyNode::processDeclarationsFunctionCode): |
| 30107 | (KJS::FunctionBodyNode::processDeclarationsProgramCode): |
| 30108 | (KJS::FunctionBodyNode::execute): |
| 30109 | (KJS::FuncDeclNode::makeFunction): |
| 30110 | * kjs/nodes.h: |
| 30111 | |
| 30112 | 2007-10-25 Maciej Stachowiak <mjs@apple.com> |
| 30113 | |
| 30114 | Reviewed by Adam. |
| 30115 | |
| 30116 | - add header includes needed on platforms that don't use AllInOneFile.cpp |
| 30117 | |
| 30118 | * API/JSCallbackObject.cpp: |
| 30119 | * kjs/Context.cpp: |
| 30120 | * kjs/ExecState.cpp: |
| 30121 | * kjs/array_instance.cpp: |
| 30122 | * kjs/function_object.cpp: |
| 30123 | * kjs/interpreter.cpp: |
| 30124 | * kjs/nodes.cpp: |
| 30125 | |
| 30126 | 2007-10-25 Eric Seidel <eric@webkit.org> |
| 30127 | |
| 30128 | Reviewed by Geoff. |
| 30129 | |
| 30130 | * JavaScriptCore.xcodeproj/project.pbxproj: re-mark JSGlobalObject.h as private |
| 30131 | |
| 30132 | 2007-10-25 Geoffrey Garen <ggaren@apple.com> |
| 30133 | |
| 30134 | Reviewed by Maciej Stachowiak. |
| 30135 | |
| 30136 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15683 |
| 30137 | Re-order declaration initialization to avoid calling hasProperty inside |
| 30138 | VarDeclNode::processDeclaration |
| 30139 | |
| 30140 | .7% speedup on SunSpider. |
| 30141 | |
| 30142 | * kjs/function.h: |
| 30143 | * kjs/function.cpp: Merged parameter processing into FunctionBodyNode's |
| 30144 | other processing of declared symbols, so the order of execution could |
| 30145 | change. |
| 30146 | |
| 30147 | * kjs/nodes.cpp: |
| 30148 | (KJS::VarDeclNode::getDeclarations): Added special case for the |
| 30149 | "arguments" property name, explained in the comment. |
| 30150 | |
| 30151 | (KJS::VarDeclNode::processDeclaration): Removed call to hasProperty |
| 30152 | in the case of function code, since we know the declared symbol |
| 30153 | management will resolve conflicts between symbols. Yay! |
| 30154 | |
| 30155 | (KJS::VarDeclListNode::getDeclarations): Now that VarDeclNode's |
| 30156 | implementation of getDeclarations is non-trivial, we can't take a |
| 30157 | short-cut here any longer -- we need to put the VarDecl node on the |
| 30158 | stack so it gets processed normally. |
| 30159 | |
| 30160 | (KJS::FunctionBodyNode::processDeclarations): Changed the order of |
| 30161 | processing to enforce mutual exclusion rules. |
| 30162 | |
| 30163 | * kjs/nodes.h: |
| 30164 | (KJS::DeclarationStacks::DeclarationStacks): Structure includes an |
| 30165 | ExecState now, for fast access to the "arguments" property name. |
| 30166 | |
| 30167 | 2007-10-24 Eric Seidel <eric@webkit.org> |
| 30168 | |
| 30169 | Reviewed by Maciej. |
| 30170 | |
| 30171 | Add a JSGlobalObject class and remove the InterpreterMap |
| 30172 | http://bugs.webkit.org/show_bug.cgi?id=15681 |
| 30173 | |
| 30174 | This required making JSCallbackObject a template class to allow for |
| 30175 | JSGlobalObjects with JSCallbackObject functionality. |
| 30176 | |
| 30177 | SunSpider claims this was a 0.5% speedup. |
| 30178 | |
| 30179 | * API/JSCallbackObject.cpp: |
| 30180 | * API/JSCallbackObject.h: |
| 30181 | * API/JSCallbackObjectFunctions.h: Copied from API/JSCallbackObject.cpp. |
| 30182 | (KJS::::JSCallbackObject): |
| 30183 | (KJS::::init): |
| 30184 | (KJS::::~JSCallbackObject): |
| 30185 | (KJS::::initializeIfNeeded): |
| 30186 | (KJS::::className): |
| 30187 | (KJS::::getOwnPropertySlot): |
| 30188 | (KJS::::put): |
| 30189 | (KJS::::deleteProperty): |
| 30190 | (KJS::::implementsConstruct): |
| 30191 | (KJS::::construct): |
| 30192 | (KJS::::implementsHasInstance): |
| 30193 | (KJS::::hasInstance): |
| 30194 | (KJS::::implementsCall): |
| 30195 | (KJS::::callAsFunction): |
| 30196 | (KJS::::getPropertyNames): |
| 30197 | (KJS::::toNumber): |
| 30198 | (KJS::::toString): |
| 30199 | (KJS::::setPrivate): |
| 30200 | (KJS::::getPrivate): |
| 30201 | (KJS::::inherits): |
| 30202 | (KJS::::cachedValueGetter): |
| 30203 | (KJS::::staticValueGetter): |
| 30204 | (KJS::::staticFunctionGetter): |
| 30205 | (KJS::::callbackGetter): |
| 30206 | * API/JSClassRef.cpp: |
| 30207 | (OpaqueJSClass::prototype): |
| 30208 | * API/JSContextRef.cpp: |
| 30209 | (JSGlobalContextCreate): |
| 30210 | * API/JSObjectRef.cpp: |
| 30211 | (JSObjectMake): |
| 30212 | (JSObjectGetPrivate): |
| 30213 | (JSObjectSetPrivate): |
| 30214 | * API/JSValueRef.cpp: |
| 30215 | (JSValueIsObjectOfClass): |
| 30216 | * JavaScriptCore.exp: |
| 30217 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 30218 | * bindings/c/c_utility.cpp: |
| 30219 | (KJS::Bindings::convertValueToNPVariant): |
| 30220 | * bindings/jni/jni_jsobject.cpp: |
| 30221 | * bindings/objc/objc_utility.mm: |
| 30222 | (KJS::Bindings::convertValueToObjcValue): |
| 30223 | * kjs/Context.cpp: |
| 30224 | (KJS::Context::Context): |
| 30225 | * kjs/ExecState.cpp: |
| 30226 | (KJS::ExecState::lexicalInterpreter): |
| 30227 | * kjs/JSGlobalObject.h: Added. |
| 30228 | (KJS::JSGlobalObject::JSGlobalObject): |
| 30229 | (KJS::JSGlobalObject::isGlobalObject): |
| 30230 | (KJS::JSGlobalObject::interpreter): |
| 30231 | (KJS::JSGlobalObject::setInterpreter): |
| 30232 | * kjs/array_instance.cpp: |
| 30233 | * kjs/context.h: |
| 30234 | * kjs/function.cpp: |
| 30235 | (KJS::FunctionImp::callAsFunction): |
| 30236 | (KJS::GlobalFuncImp::callAsFunction): |
| 30237 | * kjs/interpreter.cpp: |
| 30238 | (KJS::Interpreter::Interpreter): |
| 30239 | (KJS::Interpreter::init): |
| 30240 | (KJS::Interpreter::~Interpreter): |
| 30241 | (KJS::Interpreter::globalObject): |
| 30242 | (KJS::Interpreter::initGlobalObject): |
| 30243 | (KJS::Interpreter::evaluate): |
| 30244 | * kjs/interpreter.h: |
| 30245 | * kjs/lookup.h: |
| 30246 | (KJS::cacheGlobalObject): |
| 30247 | * kjs/object.h: |
| 30248 | (KJS::JSObject::isGlobalObject): |
| 30249 | * kjs/testkjs.cpp: |
| 30250 | |
| 30251 | 2007-10-24 Eric Seidel <eric@webkit.org> |
| 30252 | |
| 30253 | Build fix for Gtk, no review. |
| 30254 | |
| 30255 | * kjs/collector.cpp: #include "context.h" |
| 30256 | |
| 30257 | 2007-10-24 Eric Seidel <eric@webkit.org> |
| 30258 | |
| 30259 | Reviewed by Maciej. |
| 30260 | |
| 30261 | Stop checking isOutOfMemory after every allocation, instead let the collector |
| 30262 | notify all ExecStates if we ever hit this rare condition. |
| 30263 | |
| 30264 | SunSpider claims this was a 2.2% speedup. |
| 30265 | |
| 30266 | * kjs/collector.cpp: |
| 30267 | (KJS::Collector::collect): |
| 30268 | (KJS::Collector::reportOutOfMemoryToAllInterpreters): |
| 30269 | * kjs/collector.h: |
| 30270 | * kjs/nodes.cpp: |
| 30271 | (KJS::TryNode::execute): |
| 30272 | |
| 30273 | 2007-10-24 Mark Rowe <mrowe@apple.com> |
| 30274 | |
| 30275 | Gtk build fix. |
| 30276 | |
| 30277 | * kjs/identifier.h: Remove extra qualification. |
| 30278 | |
| 30279 | 2007-10-24 Geoffrey Garen <ggaren@apple.com> |
| 30280 | |
| 30281 | Reviewed by Sam Weinig. |
| 30282 | |
| 30283 | Disable ALWAYS_INLINE in debug builds, since it drives the debugger |
| 30284 | crazy. |
| 30285 | |
| 30286 | * wtf/AlwaysInline.h: |
| 30287 | |
| 30288 | 2007-10-24 Geoffrey Garen <ggaren@apple.com> |
| 30289 | |
| 30290 | Reviewed by Sam Weinig. |
| 30291 | |
| 30292 | Inlined the fast path for creating an Identifier from an Identifier. |
| 30293 | |
| 30294 | This is a .4% speedup on SunSpider overall, but as big as a 2.5% |
| 30295 | speedup on certain individual tests. 65% of the Identifiers creating |
| 30296 | by SunSpider are already Identifiers. |
| 30297 | |
| 30298 | (The main reason I'm making this change is that it resolves a large |
| 30299 | regression in a patch I haven't checked in yet.) |
| 30300 | |
| 30301 | * JavaScriptCore.exp: |
| 30302 | * kjs/identifier.cpp: |
| 30303 | (KJS::Identifier::addSlowCase): |
| 30304 | * kjs/identifier.h: |
| 30305 | (KJS::Identifier::Identifier::add): |
| 30306 | |
| 30307 | 2007-10-24 Lars Knoll <lars@trolltech.com> |
| 30308 | |
| 30309 | Reviewed by Simon. |
| 30310 | |
| 30311 | some changes to the way JS values are converted to Qt values in the script bindings. Added support for converting JS arrays into QStringList's. |
| 30312 | |
| 30313 | * bindings/qt/qt_instance.cpp: |
| 30314 | (KJS::Bindings::QtInstance::invokeMethod): |
| 30315 | * bindings/qt/qt_runtime.cpp: |
| 30316 | (KJS::Bindings::convertValueToQVariant): |
| 30317 | (KJS::Bindings::QtField::setValueToInstance): |
| 30318 | |
| 30319 | 2007-10-24 Oliver Hunt <oliver@apple.com> |
| 30320 | |
| 30321 | Reviewed by Darin. |
| 30322 | |
| 30323 | Remove old relation method, replace with specialised LessThan and lessThenEq functions for a 0.5-0.6% improvement in SunSpider |
| 30324 | |
| 30325 | * kjs/nodes.cpp: |
| 30326 | (KJS::lessThan): |
| 30327 | (KJS::lessThanEq): |
| 30328 | (KJS::LessNode::evaluate): |
| 30329 | (KJS::GreaterNode::evaluate): |
| 30330 | (KJS::LessEqNode::evaluate): |
| 30331 | (KJS::GreaterEqNode::evaluate): |
| 30332 | * kjs/operations.cpp: |
| 30333 | * kjs/operations.h: |
| 30334 | |
| 30335 | 2007-10-24 Eric Seidel <eric@webkit.org> |
| 30336 | |
| 30337 | Reviewed by darin. |
| 30338 | |
| 30339 | * kjs/nodes.h: |
| 30340 | (KJS::ImmediateNumberNode::): Fix ASSERT correctness (and debug build!) |
| 30341 | |
| 30342 | 2007-10-24 Darin Adler <darin@apple.com> |
| 30343 | |
| 30344 | Reviewed by Eric. |
| 30345 | |
| 30346 | * kjs/object.cpp: (KJS::JSObject::defaultValue): Get rid of a little |
| 30347 | Identifier ref/deref for what SunSpider claims is a 0.4% speedup. |
| 30348 | |
| 30349 | 2007-10-24 Darin Adler <darin@apple.com> |
| 30350 | |
| 30351 | Reviewed by Maciej. |
| 30352 | |
| 30353 | - separate out the code to create a hash table the first time from the code |
| 30354 | to rehash |
| 30355 | |
| 30356 | SunSpider claims this was a 0.7% speedup. |
| 30357 | |
| 30358 | * kjs/property_map.cpp: |
| 30359 | (KJS::PropertyMap::expand): Changed to call either createTable or rehash. |
| 30360 | (KJS::PropertyMap::createTable): Added. For the case where we had no table. |
| 30361 | (KJS::PropertyMap::rehash): Removed code needed only in the case where we |
| 30362 | had no table. |
| 30363 | * kjs/property_map.h: Added createTable. |
| 30364 | |
| 30365 | 2007-10-24 Eric Seidel <eric@webkit.org> |
| 30366 | |
| 30367 | Reviewed by darin. |
| 30368 | |
| 30369 | Add ImmediateNumberNode to hold a JSValue* instead of a double for numbers |
| 30370 | which can be represented by JSImmediate. |
| 30371 | |
| 30372 | SunSpider claims this was a 0.6% speedup. |
| 30373 | |
| 30374 | * kjs/grammar.y: |
| 30375 | * kjs/nodes.cpp: |
| 30376 | (KJS::NumberNode::evaluate): |
| 30377 | (KJS::ImmediateNumberNode::evaluate): |
| 30378 | * kjs/nodes.h: |
| 30379 | (KJS::Node::): |
| 30380 | (KJS::ImmediateNumberNode::): |
| 30381 | * kjs/nodes2string.cpp: |
| 30382 | (ImmediateNumberNode::streamTo): |
| 30383 | |
| 30384 | 2007-10-24 Darin Adler <darin@apple.com> |
| 30385 | |
| 30386 | Reviewed by Maciej. |
| 30387 | |
| 30388 | - http://bugs.webkit.org/show_bug.cgi?id=15657 |
| 30389 | change static hash tables to use powers of two for speed |
| 30390 | |
| 30391 | Seems to give 0.7% SunSpider speedup. |
| 30392 | |
| 30393 | * kjs/create_hash_table: Updated to generate new format. |
| 30394 | * kjs/lookup.cpp: |
| 30395 | (KJS::keysMatch): Took out unneeded typecast. |
| 30396 | (KJS::findEntry): Updated to expect table type 3 -- changed the printf to a plain old assert. |
| 30397 | Replaced the modulus with a bit mask. |
| 30398 | (KJS::Lookup::findEntry): Get the hash directly, since we know identifiers already have computed |
| 30399 | their hash -- saves a branch. |
| 30400 | (KJS::Lookup::find): Ditto. |
| 30401 | * kjs/lookup.h: Changed attr from 2-byte value to one-byte value. Replaced hashSize with hashSizeMask. |
| 30402 | |
| 30403 | 2007-10-24 Maciej Stachowiak <mjs@apple.com> |
| 30404 | |
| 30405 | Reviewed by Darin. |
| 30406 | |
| 30407 | - remove KJS_CHECKEXCEPTIONs in places where exceptions can't happen for 0.6% SunSpider speedup |
| 30408 | |
| 30409 | * kjs/nodes.cpp: |
| 30410 | (KJS::DoWhileNode::execute): |
| 30411 | (KJS::WhileNode::execute): |
| 30412 | (KJS::ForNode::execute): |
| 30413 | (KJS::ForInNode::execute): |
| 30414 | (KJS::SourceElementsNode::execute): |
| 30415 | |
| 30416 | 2007-10-23 Darin Adler <darin@apple.com> |
| 30417 | |
| 30418 | Reviewed by Maciej. |
| 30419 | |
| 30420 | * kjs/JSImmediate.h: (KJS::JSImmediate::getUInt32): |
| 30421 | Changed an && to an & for a 1% gain in SunSpider. |
| 30422 | |
| 30423 | 2007-10-23 Oliver Hunt <oliver@apple.com> |
| 30424 | |
| 30425 | Reviewed by Maciej. |
| 30426 | |
| 30427 | Reduce branching in implementations of some operator implementations, yielding 1.3% boost to SunSpider. |
| 30428 | |
| 30429 | * kjs/nodes.cpp: |
| 30430 | (KJS::MultNode::evaluate): |
| 30431 | (KJS::DivNode::evaluate): |
| 30432 | (KJS::ModNode::evaluate): |
| 30433 | (KJS::add): |
| 30434 | (KJS::sub): |
| 30435 | (KJS::AddNode::evaluate): |
| 30436 | (KJS::SubNode::evaluate): |
| 30437 | (KJS::valueForReadModifyAssignment): |
| 30438 | * kjs/operations.cpp: |
| 30439 | * kjs/operations.h: |
| 30440 | |
| 30441 | 2007-10-23 Oliver Hunt <oliver@apple.com> |
| 30442 | |
| 30443 | Reviewed by Maciej. |
| 30444 | |
| 30445 | Separating all of the simple (eg. non-read-modify-write) binary operators |
| 30446 | into separate classes in preparation for further JS optimisations. |
| 30447 | |
| 30448 | Happily this produces a 0.8% to 1.0% performance increase in SunSpider with |
| 30449 | no further work. |
| 30450 | |
| 30451 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 30452 | * kjs/grammar.y: |
| 30453 | * kjs/nodes.cpp: |
| 30454 | (KJS::MultNode::evaluate): |
| 30455 | (KJS::DivNode::evaluate): |
| 30456 | (KJS::ModNode::evaluate): |
| 30457 | (KJS::AddNode::evaluate): |
| 30458 | (KJS::SubNode::evaluate): |
| 30459 | (KJS::LeftShiftNode::evaluate): |
| 30460 | (KJS::RightShiftNode::evaluate): |
| 30461 | (KJS::UnsignedRightShiftNode::evaluate): |
| 30462 | (KJS::LessNode::evaluate): |
| 30463 | (KJS::GreaterNode::evaluate): |
| 30464 | (KJS::LessEqNode::evaluate): |
| 30465 | (KJS::GreaterEqNode::evaluate): |
| 30466 | (KJS::InstanceOfNode::evaluate): |
| 30467 | (KJS::InNode::evaluate): |
| 30468 | (KJS::EqualNode::evaluate): |
| 30469 | (KJS::NotEqualNode::evaluate): |
| 30470 | (KJS::StrictEqualNode::evaluate): |
| 30471 | (KJS::NotStrictEqualNode::evaluate): |
| 30472 | (KJS::BitAndNode::evaluate): |
| 30473 | (KJS::BitXOrNode::evaluate): |
| 30474 | (KJS::BitOrNode::evaluate): |
| 30475 | (KJS::LogicalAndNode::evaluate): |
| 30476 | (KJS::LogicalOrNode::evaluate): |
| 30477 | * kjs/nodes.h: |
| 30478 | (KJS::MultNode::): |
| 30479 | (KJS::DivNode::): |
| 30480 | (KJS::ModNode::): |
| 30481 | (KJS::AddNode::): |
| 30482 | (KJS::SubNode::): |
| 30483 | (KJS::LeftShiftNode::): |
| 30484 | (KJS::RightShiftNode::): |
| 30485 | (KJS::UnsignedRightShiftNode::): |
| 30486 | (KJS::LessNode::): |
| 30487 | (KJS::GreaterNode::): |
| 30488 | (KJS::LessEqNode::): |
| 30489 | (KJS::GreaterEqNode::): |
| 30490 | (KJS::InstanceOfNode::): |
| 30491 | (KJS::InNode::): |
| 30492 | (KJS::EqualNode::): |
| 30493 | (KJS::NotEqualNode::): |
| 30494 | (KJS::StrictEqualNode::): |
| 30495 | (KJS::NotStrictEqualNode::): |
| 30496 | (KJS::BitAndNode::): |
| 30497 | (KJS::BitOrNode::): |
| 30498 | (KJS::BitXOrNode::): |
| 30499 | (KJS::LogicalAndNode::): |
| 30500 | (KJS::LogicalOrNode::): |
| 30501 | * kjs/nodes2string.cpp: |
| 30502 | (MultNode::streamTo): |
| 30503 | (DivNode::streamTo): |
| 30504 | (ModNode::streamTo): |
| 30505 | (AddNode::streamTo): |
| 30506 | (SubNode::streamTo): |
| 30507 | (LeftShiftNode::streamTo): |
| 30508 | (RightShiftNode::streamTo): |
| 30509 | (UnsignedRightShiftNode::streamTo): |
| 30510 | (LessNode::streamTo): |
| 30511 | (GreaterNode::streamTo): |
| 30512 | (LessEqNode::streamTo): |
| 30513 | (GreaterEqNode::streamTo): |
| 30514 | (InstanceOfNode::streamTo): |
| 30515 | (InNode::streamTo): |
| 30516 | (EqualNode::streamTo): |
| 30517 | (NotEqualNode::streamTo): |
| 30518 | (StrictEqualNode::streamTo): |
| 30519 | (NotStrictEqualNode::streamTo): |
| 30520 | (BitAndNode::streamTo): |
| 30521 | (BitXOrNode::streamTo): |
| 30522 | (BitOrNode::streamTo): |
| 30523 | (LogicalAndNode::streamTo): |
| 30524 | |
| 30525 | 2007-10-23 Darin Adler <darin@apple.com> |
| 30526 | |
| 30527 | Reviewed by Maciej. |
| 30528 | |
| 30529 | - fix http://bugs.webkit.org/show_bug.cgi?id=15639 |
| 30530 | fix Math.abs(0), Math.ceil(-0), and Math.floor(-0) |
| 30531 | |
| 30532 | Test: fast/js/math.html |
| 30533 | |
| 30534 | * kjs/math_object.cpp: (MathFuncImp::callAsFunction): |
| 30535 | Fix abs to look at the sign bit. Add a special case for values in the range |
| 30536 | between -0 and -1 and a special case for ceil and for -0 for floor. |
| 30537 | |
| 30538 | 2007-10-23 Darin Adler <darin@apple.com> |
| 30539 | |
| 30540 | Reviewed by Eric. |
| 30541 | |
| 30542 | - streamline exception handling code for a >1% speed-up of SunSpider |
| 30543 | |
| 30544 | * kjs/nodes.cpp: Changed macros to use functions for everything that's not |
| 30545 | part of normal execution. We'll take function call overhead when propagating |
| 30546 | an exception or out of memory. |
| 30547 | (KJS::createOutOfMemoryCompletion): Added. |
| 30548 | (KJS::substitute): Use append instead of the relatively inefficient + operator. |
| 30549 | (KJS::Node::rethrowException): Added. |
| 30550 | * kjs/nodes.h: Added rethrowException. |
| 30551 | |
| 30552 | 2007-10-22 Darin Adler <darin@apple.com> |
| 30553 | |
| 30554 | Reviewed by Maciej. |
| 30555 | |
| 30556 | - fix http://bugs.webkit.org/show_bug.cgi?id=15636 |
| 30557 | some JavaScriptCore regression tests are failing due to numeric conversion |
| 30558 | |
| 30559 | This should restore correctness and make speed better too, restoring some |
| 30560 | of the optimization we lost in my last check-in. |
| 30561 | |
| 30562 | * kjs/JSImmediate.h: |
| 30563 | (KJS::JSImmediate::getTruncatedInt32): Added. Uses the range checking idiom |
| 30564 | I used in my patch yesterday. |
| 30565 | (KJS::JSImmediate::getTruncatedUInt32): Ditto. |
| 30566 | |
| 30567 | * kjs/internal.h: Removed getInt32 and added getTruncatedInt/UInt32. |
| 30568 | * kjs/internal.cpp: |
| 30569 | (KJS::NumberImp::getUInt32): Changed to always use double, since I can't find |
| 30570 | a way to write this more efficiently for float. |
| 30571 | (KJS::NumberImp::getTruncatedInt32): Added. |
| 30572 | (KJS::NumberImp::getTruncatedUInt32): Added. |
| 30573 | |
| 30574 | * kjs/value.h: Removed getInt32 and added getTruncatedInt/UInt32. |
| 30575 | (KJS::JSValue::getUInt32): |
| 30576 | (KJS::JSValue::getTruncatedInt32): Added. |
| 30577 | (KJS::JSValue::getTruncatedUInt32): Added. |
| 30578 | (KJS::JSValue::toInt32): Changed getInt32 call to getTruncatedInt32. |
| 30579 | (KJS::JSValue::toUInt32): Changed getUInt32 call to getTruncatedUInt32. |
| 30580 | * kjs/value.cpp: |
| 30581 | (KJS::JSCell::getTruncatedInt32): Added. |
| 30582 | (KJS::JSCell::getTruncatedUInt32): Added. |
| 30583 | (KJS::JSValue::toInteger): Changed getUInt32 call to getTruncatedInt32. |
| 30584 | (KJS::JSValue::toInt32SlowCase): Removed extra getInt32 call I accidentally |
| 30585 | had left in here. |
| 30586 | (KJS::JSValue::toUInt32SlowCase): Ditto. |
| 30587 | (KJS::JSValue::toUInt16): Changed getUInt32 call to getTruncatedUInt32. |
| 30588 | |
| 30589 | * JavaScriptCore.exp: Updated. |
| 30590 | |
| 30591 | 2007-10-22 Darin Adler <darin@apple.com> |
| 30592 | |
| 30593 | Reviewed by Geoff. |
| 30594 | |
| 30595 | - fix http://bugs.webkit.org/show_bug.cgi?id=15632 |
| 30596 | js1_5/Array/array-001.js test failing |
| 30597 | |
| 30598 | One of the JavaScriptCore tests was failing; it failed because of |
| 30599 | my change to NumberImp::getUInt32. The incorrect code I copied was |
| 30600 | from JSImmediate::getUInt32, and was a pre-existing bug. |
| 30601 | |
| 30602 | This patch fixes correctness, but will surely slow down SunSpider. |
| 30603 | We may be able to code this tighter and get the speed back. |
| 30604 | |
| 30605 | * kjs/JSImmediate.h: |
| 30606 | (KJS::JSImmediate::getInt32): Renamed from toInt32 to more accurately |
| 30607 | reflect the fact that this function only returns true if the value is |
| 30608 | accurate (no fractional part, etc.). Changed code so that it returns |
| 30609 | false when the value has a fraction. |
| 30610 | (KJS::JSImmediate::getUInt32): Ditto. |
| 30611 | |
| 30612 | * kjs/internal.cpp: |
| 30613 | (KJS::NumberImp::getInt32): Changed code so that it returns false when |
| 30614 | the value has a fraction. Restores the old behavior. |
| 30615 | (KJS::NumberImp::getUInt32): Ditto. |
| 30616 | |
| 30617 | * kjs/value.h: |
| 30618 | (KJS::JSValue::getInt32): Updated for name change. |
| 30619 | (KJS::JSValue::getUInt32): Ditto. |
| 30620 | (KJS::JSValue::toInt32): Ditto. |
| 30621 | (KJS::JSValue::toUInt32): Ditto. |
| 30622 | |
| 30623 | 2007-10-22 Darin Adler <darin@apple.com> |
| 30624 | |
| 30625 | Reviewed by Brady. |
| 30626 | |
| 30627 | - fix crash seen when running JavaScriptCore tests |
| 30628 | |
| 30629 | * kjs/array_instance.cpp: (KJS::ArrayInstance::mark): |
| 30630 | Copy and paste error: I accidentally had code here that was |
| 30631 | making a copy of the HashMap -- that's illegal inside a mark |
| 30632 | function and was unnecessary. The other callsite was modifying |
| 30633 | the map as it iterated it, but this function is not. |
| 30634 | |
| 30635 | 2007-10-22 Maciej Stachowiak <mjs@apple.com> |
| 30636 | |
| 30637 | Reviewed by Oliver. |
| 30638 | |
| 30639 | - Avoid moving floats into integer registers in jsNumber() for 3% speedup on SunSpider |
| 30640 | http://bugs.webkit.org/show_bug.cgi?id=15627 |
| 30641 | |
| 30642 | * kjs/JSImmediate.h: |
| 30643 | (KJS::JSImmediate::fromDouble): Avoid moving floats to integer |
| 30644 | registers since this is very slow. |
| 30645 | |
| 30646 | 2007-10-22 Darin Adler <darin@apple.com> |
| 30647 | |
| 30648 | Reviewed by Eric Seidel. |
| 30649 | |
| 30650 | - http://bugs.webkit.org/show_bug.cgi?id=15617 |
| 30651 | improve speed of integer conversions |
| 30652 | |
| 30653 | Makes SunSpider 6% faster. |
| 30654 | |
| 30655 | * kjs/JSImmediate.h: Added toInt32 and toUInt32, with separate versions for |
| 30656 | 32-bit and 64-bit. |
| 30657 | * kjs/value.h: |
| 30658 | (KJS::JSValue::getUInt32): Call JSImmediate::toUInt32. |
| 30659 | |
| 30660 | * kjs/internal.h: Added getInt32. |
| 30661 | * kjs/internal.cpp: |
| 30662 | (KJS::NumberImp::getInt32): Added. |
| 30663 | (KJS::NumberImp::getUInt32): Replaced with more-optimal implementation |
| 30664 | stolen from JSValue. |
| 30665 | |
| 30666 | * kjs/value.h: |
| 30667 | (KJS::jsNumber): Marked ALWAYS_INLINE, because this wasn't getting |
| 30668 | inlined. |
| 30669 | (KJS::JSValue::getInt32): Added. |
| 30670 | (KJS::JSValue::getUInt32): Changed to call the new JSImmediate::toUInt32 |
| 30671 | to avoid converting from float to double. |
| 30672 | (KJS::JSValue::toInt32): Made inline, separated out the slow case. |
| 30673 | (KJS::JSValue::toUInt32): Ditto. |
| 30674 | * kjs/value.cpp: |
| 30675 | (KJS::JSCell::getInt32): Added. |
| 30676 | (KJS::JSValue::toInt32SlowCase): Renamed from toInt32. Changed to use the |
| 30677 | new getInt32. Added a faster case for in-range numbers. |
| 30678 | (KJS::JSValue::toUInt32SlowCase): Ditto. |
| 30679 | (KJS::JSValue::toUInt16): Added a faster case for in-range numbers. |
| 30680 | |
| 30681 | * JavaScriptCore.exp: Updated for changes. |
| 30682 | |
| 30683 | 2007-10-22 Adam Roben <aroben@apple.com> |
| 30684 | |
| 30685 | Windows build fix |
| 30686 | |
| 30687 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Turn off |
| 30688 | warning about implicit conversion to bool. |
| 30689 | |
| 30690 | 2007-10-22 Mark Rowe <mrowe@apple.com> |
| 30691 | |
| 30692 | Gtk build fix. |
| 30693 | |
| 30694 | * kjs/array_instance.cpp: |
| 30695 | |
| 30696 | 2007-10-22 Darin Adler <darin@apple.com> |
| 30697 | |
| 30698 | Reviewed by Maciej. |
| 30699 | |
| 30700 | - http://bugs.webkit.org/show_bug.cgi?id=15606 |
| 30701 | make cut-off for sparse vs. dense arrays smarter for speed with large arrays |
| 30702 | |
| 30703 | Makes the morph test in SunSpider 26% faster, and the overall |
| 30704 | benchmark 3% faster. |
| 30705 | |
| 30706 | This also fixes some small problems we had with the distinction |
| 30707 | between nonexistent and undefined values in arrays. |
| 30708 | |
| 30709 | * kjs/array_instance.h: Tweaked formatting and naming. |
| 30710 | * kjs/array_instance.cpp: Copied from kjs/array_object.cpp. |
| 30711 | (KJS::storageSize): Added. Computes the size of the storage given a vector length. |
| 30712 | (KJS::increasedVectorLength): Added. Implements the rule for resizing the vector. |
| 30713 | (KJS::isDenseEnoughForVector): Added. |
| 30714 | (KJS::ArrayInstance::ArrayInstance): Initialize the new fields. |
| 30715 | (KJS::ArrayInstance::~ArrayInstance): Since m_storage is now never 0, delete it. |
| 30716 | (KJS::ArrayInstance::getItem): Updated for name changes. |
| 30717 | (KJS::ArrayInstance::lengthGetter): Ditto. |
| 30718 | (KJS::ArrayInstance::inlineGetOwnPropertySlot): Added. Allows both versions of |
| 30719 | getOwnPropertySlot to share more code. |
| 30720 | (KJS::ArrayInstance::getOwnPropertySlot): Just refactored, no code change. |
| 30721 | (KJS::ArrayInstance::put): Added logic for extending the vector as long as the |
| 30722 | array is dense enough. Also keep m_numValuesInVector up to date. |
| 30723 | (KJS::ArrayInstance::deleteProperty): Added code to keep m_numValuesInVector |
| 30724 | up to date. |
| 30725 | (KJS::ArrayInstance::getPropertyNames): Fixed bug where this would omit names |
| 30726 | for array indices with undefined values. |
| 30727 | (KJS::ArrayInstance::increaseVectorLength): Renamed from resizeStorage. Also |
| 30728 | simplified to only handle getting larger. |
| 30729 | (KJS::ArrayInstance::setLength): Added code to update m_numValuesInVector, to |
| 30730 | zero out the unused part of the vector and to delete the map if it's no longer |
| 30731 | needed. |
| 30732 | (KJS::ArrayInstance::mark): Tweaked formatting. |
| 30733 | (KJS::compareByStringForQSort): Ditto. |
| 30734 | (KJS::ArrayInstance::sort): Ditto. |
| 30735 | (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments): |
| 30736 | Ditto. |
| 30737 | (KJS::compareWithCompareFunctionForQSort): Ditto. |
| 30738 | (KJS::ArrayInstance::compactForSorting): Fixed bug where this would turn |
| 30739 | undefined values into nonexistent values in some cases. |
| 30740 | |
| 30741 | * kjs/array_object.h: Removed MAX_ARRAY_INDEX. |
| 30742 | * kjs/array_object.cpp: Removed ArrayInstance. Moved to a separate file. |
| 30743 | |
| 30744 | * JavaScriptCore.pri: Added array_instance.cpp. |
| 30745 | * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. |
| 30746 | * kjs/AllInOneFile.cpp: Ditto. |
| 30747 | |
| 30748 | 2007-10-22 Andrew Wellington <proton@wiretapped.net> |
| 30749 | |
| 30750 | Reviewed by Mark Rowe. |
| 30751 | |
| 30752 | Fix for local database support after r26879 |
| 30753 | Ensure that ENABLE_DATABASE and ENABLE_ICONDATABASE are correctly set |
| 30754 | |
| 30755 | * Configurations/JavaScriptCore.xcconfig: |
| 30756 | |
| 30757 | 2007-10-22 Simon Hausmann <hausmann@kde.org> |
| 30758 | |
| 30759 | Reviewed by Alp. |
| 30760 | |
| 30761 | Build fix for the non-qmake builds. |
| 30762 | |
| 30763 | * wtf/Platform.h: Default to enabling the database features unless |
| 30764 | otherwise specified. (similar to ENABLE_ICONDATABASE) |
| 30765 | |
| 30766 | 2007-10-22 Holger Freyther <zecke@selfish.org> |
| 30767 | |
| 30768 | Reviewed by Simon Hausmann <hausmann@kde.org>. |
| 30769 | |
| 30770 | * Do not build testkjs as an application bundle. This is |
| 30771 | needed for run-javascriptcore-tests on OSX. |
| 30772 | * Also, based on r26633, allow to test the WebKit/Qt port on OSX. |
| 30773 | * Set DYLD_LIBRARY_PATH if it was set in the environment. It must be set |
| 30774 | as we do not have -rpath on OSX. |
| 30775 | |
| 30776 | * kjs/testkjs.pro: |
| 30777 | |
| 30778 | 2007-10-21 Mark Rowe <mrowe@apple.com> |
| 30779 | |
| 30780 | Reviewed by Alp. |
| 30781 | |
| 30782 | http://bugs.webkit.org/show_bug.cgi?id=15575 |
| 30783 | Bug 15575: [GTK] Implement threading using GThread |
| 30784 | |
| 30785 | * wtf/Platform.h: Do not enable pthreads for Gtk. |
| 30786 | |
| 30787 | 2007-10-21 Mark Rowe <mrowe@apple.com> |
| 30788 | |
| 30789 | Reviewed by Mitz. |
| 30790 | |
| 30791 | Fix http://bugs.webkit.org/show_bug.cgi?id=15603 |
| 30792 | Bug 15603: Regression(r26847): Crash when sorting an empty array from JavaScript |
| 30793 | |
| 30794 | * kjs/array_object.cpp: |
| 30795 | (KJS::freeStorage): Reinstate null-check that was removed in r26847. |
| 30796 | |
| 30797 | 2007-10-21 Darin Adler <darin@apple.com> |
| 30798 | |
| 30799 | - fix Windows build |
| 30800 | |
| 30801 | * kjs/array_instance.h: Removed unused ExecState parameter. |
| 30802 | * kjs/array_object.cpp: |
| 30803 | (KJS::ArrayInstance::put): Ditto. |
| 30804 | (KJS::ArrayInstance::setLength): Ditto. |
| 30805 | |
| 30806 | 2007-10-21 Darin Adler <darin@apple.com> |
| 30807 | |
| 30808 | * kjs/array_object.cpp: (KJS::ArrayInstance::put): |
| 30809 | Add missing assignment that was causing regression test crash. |
| 30810 | |
| 30811 | 2007-10-21 Darin Adler <darin@apple.com> |
| 30812 | |
| 30813 | Reviewed by Maciej. |
| 30814 | |
| 30815 | - http://bugs.webkit.org/show_bug.cgi?id=15585 |
| 30816 | speed up sparse arrays by using a custom map |
| 30817 | |
| 30818 | Speeds up SunSpider by 10%. |
| 30819 | |
| 30820 | * kjs/array_object.cpp: |
| 30821 | (allocateStorage): Leave room for an additional pointer. |
| 30822 | (reallocateStorage): Ditto. |
| 30823 | (freeStorage): Ditto. |
| 30824 | (ArrayInstance::~ArrayInstance): Delete the overflow map if present. |
| 30825 | (ArrayInstance::getItem): Read values from the overflow map if present. |
| 30826 | Removed the check of length, since it slows down the common case. |
| 30827 | (ArrayInstance::getOwnPropertySlot): Ditto. Also removed the fallback |
| 30828 | to the property map. |
| 30829 | (ArrayInstance::put): Write values into the overflow map as needed. |
| 30830 | Also create overflow map when needed. |
| 30831 | (ArrayInstance::deleteProperty): Remove values from the overflow map |
| 30832 | as appropriate. |
| 30833 | (ArrayInstance::getPropertyNames): Add a name for each identifier in |
| 30834 | the property map. This is extremely inefficient. |
| 30835 | (ArrayInstance::setLength): Remove any values in the overflow map |
| 30836 | that are past the new length, as we formerly did with the property map. |
| 30837 | (ArrayInstance::mark): Mark any values in the overflow map. |
| 30838 | (compareByStringForQSort): Removed unneeded undefined case, since |
| 30839 | compactForSorting guarantees we will have no undefined values. |
| 30840 | (compareWithCompareFunctionForQSort): Ditto. |
| 30841 | (ArrayInstance::compactForSorting): Copy all the values out of the |
| 30842 | overflow map and destroy it. |
| 30843 | |
| 30844 | * kjs/property_map.h: Removed now-unused getSparseArrayPropertyNames. |
| 30845 | * kjs/property_map.cpp: Ditto. |
| 30846 | |
| 30847 | 2007-10-20 Darin Adler <darin@apple.com> |
| 30848 | |
| 30849 | Reviewed by Maciej. |
| 30850 | |
| 30851 | - http://bugs.webkit.org/show_bug.cgi?id=15579 |
| 30852 | stop churning identifier reference counts copying Completion objects |
| 30853 | |
| 30854 | * kjs/completion.h: Replace the Identifier with an Identifier*. |
| 30855 | * kjs/nodes.cpp: |
| 30856 | (ForInNode::execute): Update for change to Completion constructor. |
| 30857 | (ContinueNode::execute): Ditto. |
| 30858 | (BreakNode::execute): Ditto. |
| 30859 | |
| 30860 | 2007-10-20 Mark Rowe <mrowe@apple.com> |
| 30861 | |
| 30862 | Reviewed by Alp. |
| 30863 | |
| 30864 | Gtk changes needed to enable HTML 5 client-side database storage. |
| 30865 | |
| 30866 | * wtf/Platform.h: Have Gtk use pthreads for now. |
| 30867 | |
| 30868 | 2007-10-20 Geoffrey Garen <ggaren@apple.com> |
| 30869 | |
| 30870 | Reviewed by Maciej Stachowiak. |
| 30871 | |
| 30872 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15570 |
| 30873 | Store gathered declaration nodes in the function body node. |
| 30874 | |
| 30875 | This means that you only have to gather the declaration nodes the first |
| 30876 | time the function executes. Performance gain of 2.10% on SunSpider, |
| 30877 | 0.90% on command-line JS iBench. |
| 30878 | |
| 30879 | * kjs/nodes.cpp: Split declaration stack initialization code off into |
| 30880 | initializeDeclarationStacks(). |
| 30881 | (FunctionBodyNode::FunctionBodyNode): |
| 30882 | (FunctionBodyNode::initializeDeclarationStacks): |
| 30883 | (FunctionBodyNode::processDeclarations): |
| 30884 | |
| 30885 | * kjs/nodes.h: Changed DeclarationStacks structure to hold references, |
| 30886 | since the actual Vectors are now stored either on the stack or in the |
| 30887 | function body node. |
| 30888 | |
| 30889 | 2007-10-19 Geoffrey Garen <ggaren@apple.com> |
| 30890 | |
| 30891 | Reviewed by Darin Adler. |
| 30892 | |
| 30893 | http://bugs.webkit.org/show_bug.cgi?id=15559 |
| 30894 | Moved processDeclarations call into FunctionBodyNode::execute |
| 30895 | |
| 30896 | To improve encapsulation, moved processDeclarations call into |
| 30897 | FunctionBodyNode::execute. Also marked processDeclarations |
| 30898 | ALWAYS_INLINE, since it has only 1 caller now. This is a .71% speedup |
| 30899 | on command-line JS iBench. |
| 30900 | |
| 30901 | * kjs/function.cpp: |
| 30902 | (KJS::FunctionImp::callAsFunction): |
| 30903 | (KJS::GlobalFuncImp::callAsFunction): |
| 30904 | * kjs/function.h: |
| 30905 | * kjs/interpreter.cpp: |
| 30906 | (KJS::Interpreter::evaluate): |
| 30907 | * kjs/nodes.cpp: |
| 30908 | (FunctionBodyNode::execute): |
| 30909 | * kjs/nodes.h: |
| 30910 | |
| 30911 | 2007-10-19 Brady Eidson <beidson@apple.com> |
| 30912 | |
| 30913 | Reviewed by Sam |
| 30914 | |
| 30915 | Queue -> Deque! and small style tweaks |
| 30916 | |
| 30917 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: |
| 30918 | * JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj |
| 30919 | * wtf/Deque.h: Added. |
| 30920 | (WTF::DequeNode::DequeNode): |
| 30921 | (WTF::Deque::Deque): |
| 30922 | (WTF::Deque::~Deque): |
| 30923 | (WTF::Deque::size): |
| 30924 | (WTF::Deque::isEmpty): |
| 30925 | (WTF::Deque::append): |
| 30926 | (WTF::Deque::prepend): |
| 30927 | (WTF::Deque::first): |
| 30928 | (WTF::Deque::last): |
| 30929 | (WTF::Deque::removeFirst): |
| 30930 | (WTF::Deque::clear): |
| 30931 | * wtf/Queue.h: Removed. |
| 30932 | |
| 30933 | |
| 30934 | 2007-10-19 Brady Eidson <beidson@apple.com> |
| 30935 | |
| 30936 | Reviewed by Oliver |
| 30937 | |
| 30938 | Added a simple LinkedList based Queue to wtf |
| 30939 | We can make a better, more sophisticated an efficient one later, but have |
| 30940 | needed one for some time, now! |
| 30941 | |
| 30942 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 30943 | * wtf/Queue.h: Added. |
| 30944 | (WTF::QueueNode::QueueNode): |
| 30945 | (WTF::Queue::Queue): |
| 30946 | (WTF::Queue::~Queue): |
| 30947 | (WTF::Queue::size): |
| 30948 | (WTF::Queue::isEmpty): |
| 30949 | (WTF::Queue::append): |
| 30950 | (WTF::Queue::prepend): |
| 30951 | (WTF::Queue::first): |
| 30952 | (WTF::Queue::last): |
| 30953 | (WTF::Queue::removeFirst): |
| 30954 | (WTF::Queue::clear): |
| 30955 | |
| 30956 | 2007-10-19 Nikolas Zimmermann <zimmermann@kde.org> |
| 30957 | |
| 30958 | Reviewed by Anders. |
| 30959 | |
| 30960 | Try to fix Qt/Win build slave, by including windows.h also on Qt/Win. |
| 30961 | |
| 30962 | * kjs/testkjs.cpp: Change PLATFORM(WIN) to PLATFORM(WIN_OS) |
| 30963 | |
| 30964 | 2007-10-19 Simon Hausmann <hausmann@kde.org> |
| 30965 | |
| 30966 | Reviewed by Lars. |
| 30967 | |
| 30968 | Fix compilation on Windows when wchar_t is a typedef instead of a native type (triggered by -Zc:wchar_t-). |
| 30969 | Don't provide the wchar_t overloads then as they conflict with the unsigned short ones. |
| 30970 | |
| 30971 | * wtf/ASCIICType.h: |
| 30972 | (WTF::isASCIIAlpha): |
| 30973 | (WTF::isASCIIAlphanumeric): |
| 30974 | (WTF::isASCIIDigit): |
| 30975 | (WTF::isASCIIHexDigit): |
| 30976 | (WTF::isASCIILower): |
| 30977 | (WTF::isASCIISpace): |
| 30978 | (WTF::toASCIILower): |
| 30979 | (WTF::toASCIIUpper): |
| 30980 | |
| 30981 | 2007-10-19 Simon Hausmann <hausmann@kde.org> |
| 30982 | |
| 30983 | Reviewed by Lars. |
| 30984 | |
| 30985 | Another build fix for the windows/qt build: Apply the same fix as in revision 26686 also to kjs/config.h to disable the disallowctype feature. |
| 30986 | |
| 30987 | * kjs/config.h: |
| 30988 | |
| 30989 | 2007-10-18 Maciej Stachowiak <mjs@apple.com> |
| 30990 | |
| 30991 | Reviewed by Adam. |
| 30992 | |
| 30993 | - use __declspec(thread) for fast thread-local storage on Windows |
| 30994 | |
| 30995 | - 2.2% speedup on sunspider (on Windows) |
| 30996 | - 7% speedup on the string section |
| 30997 | - 6% speedup on JS iBench |
| 30998 | |
| 30999 | - fixed <rdar://problem/5473084> PLT on Windows got 2.5% slower between r25406 and r25422 |
| 31000 | - fixed at least some of <rdar://5527965? i-Bench JS was 14% slower in 310A11 than 310A10 |
| 31001 | |
| 31002 | |
| 31003 | * wtf/FastMalloc.cpp: |
| 31004 | (WTF::getThreadHeap): |
| 31005 | (WTF::setThreadHeap): |
| 31006 | (WTF::TCMalloc_ThreadCache::GetCache): |
| 31007 | (WTF::TCMalloc_ThreadCache::GetCacheIfPresent): |
| 31008 | (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): |
| 31009 | |
| 31010 | 2007-10-17 Darin Adler <darin@apple.com> |
| 31011 | |
| 31012 | Reviewed by Mark Rowe. |
| 31013 | |
| 31014 | - fix http://bugs.webkit.org/show_bug.cgi?id=15543 |
| 31015 | <rdar://problem/5545639> REGRESSION (r26697): |
| 31016 | GoogleDocs: Can't create new documents or open existing ones |
| 31017 | |
| 31018 | Test: fast/js/regexp-non-character.html |
| 31019 | |
| 31020 | * pcre/pcre_compile.c: (check_escape): Take out the checks for valid characters |
| 31021 | in the \u sequences -- not needed and actively harmful. |
| 31022 | |
| 31023 | 2007-10-17 Anders Carlsson <andersca@apple.com> |
| 31024 | |
| 31025 | Reviewed by Oliver. |
| 31026 | |
| 31027 | * wtf/Platform.h: |
| 31028 | #define USE_PTHREADS on Mac. |
| 31029 | |
| 31030 | 2007-10-17 Geoffrey Garen <ggaren@apple.com> |
| 31031 | |
| 31032 | Reviewed by Darin Adler. |
| 31033 | |
| 31034 | Merged DeclaredFunctionImp into FunctionImp (the base class) because |
| 31035 | the distinction between the two was unused. |
| 31036 | |
| 31037 | Removed codeType() from FunctionImp because FunctionImp and its |
| 31038 | subclasses all returned FunctionCode, so it was unused, practically |
| 31039 | speaking. |
| 31040 | |
| 31041 | Removed a different codeType() from GlobalFuncImp because it was unused. |
| 31042 | (Perhaps it was vestigial from a time when GlobalFuncImp used to |
| 31043 | inherit from FunctionImp.) |
| 31044 | |
| 31045 | * bindings/runtime_method.cpp: |
| 31046 | * bindings/runtime_method.h: |
| 31047 | * kjs/function.cpp: |
| 31048 | (KJS::FunctionImp::FunctionImp): |
| 31049 | (KJS::FunctionImp::callAsFunction): |
| 31050 | (KJS::FunctionImp::construct): |
| 31051 | (KJS::FunctionImp::execute): |
| 31052 | (KJS::FunctionImp::processVarDecls): |
| 31053 | * kjs/function.h: |
| 31054 | (KJS::FunctionImp::implementsConstruct): |
| 31055 | (KJS::FunctionImp::scope): |
| 31056 | * kjs/function_object.cpp: |
| 31057 | (FunctionProtoFunc::callAsFunction): |
| 31058 | (FunctionObjectImp::construct): |
| 31059 | * kjs/nodes.cpp: |
| 31060 | (FuncDeclNode::processFuncDecl): |
| 31061 | (FuncExprNode::evaluate): |
| 31062 | |
| 31063 | 2007-10-17 Adam Roben <aroben@apple.com> |
| 31064 | |
| 31065 | Windows build fix part 2. |
| 31066 | |
| 31067 | Fix was by Darin, reviewed by Anders and Adam. |
| 31068 | |
| 31069 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add |
| 31070 | FastMallocPCRE.cpp to the project, and let Visual Studio have its way |
| 31071 | with the post-build step. |
| 31072 | * pcre/pcre.h: Don't DLL export the entry points just because this |
| 31073 | is Win32 -- this is an internal copy of PCRE and should be private. |
| 31074 | * pcre/pcre_compile.c: Fix an uninitialized variable warning -- |
| 31075 | there's no real problem but it's better to quiet the compiler by |
| 31076 | tweaking the code slightly than turn off the warning entirely. |
| 31077 | |
| 31078 | 2007-10-17 Adam Roben <aroben@apple.com> |
| 31079 | |
| 31080 | Windows build fix. |
| 31081 | |
| 31082 | Reviewed by Anders. |
| 31083 | |
| 31084 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable |
| 31085 | some mismatched signed/unsigned comparison warnings. |
| 31086 | * pcre/pcre_exec.c: |
| 31087 | (match): #if-out some labels that don't seem to exist. |
| 31088 | |
| 31089 | 2007-10-17 Mark Rowe <mrowe@apple.com> |
| 31090 | |
| 31091 | Gtk build fix. |
| 31092 | |
| 31093 | * JavaScriptCore.pri: Add FastMallocPCRE.cpp. |
| 31094 | * pcre/pcre_get. #if out two functions that depend on pcre_get_stringnumber, which |
| 31095 | is currently unavailable for UTF-16. |
| 31096 | |
| 31097 | 2007-10-16 Darin Adler <darin@apple.com> |
| 31098 | |
| 31099 | Reviewed by Geoff. |
| 31100 | |
| 31101 | - merged PCRE changes between 6.4 and 6.5 |
| 31102 | |
| 31103 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: |
| 31104 | * JavaScriptCore.xcodeproj/project.pbxproj: |
| 31105 | Removed pcre_config.c, pcre_globals.c, pcre_info.c, pcre_maketables.c, |
| 31106 | pcre_printint.src, pcre_refcount.c, pcre_study.c, pcre_try_flipped.c, |
| 31107 | pcre_ucp_findchar.c, pcre_version.c, and ucptable.c. Added pcre_ucp_searchfuncs.c. |
| 31108 | |
| 31109 | * pcre/AUTHORS: |
| 31110 | * pcre/LICENCE: |
| 31111 | * pcre/MERGING: |
| 31112 | * pcre/dftables.c: |
| 31113 | * pcre/pcre-config.h: |
| 31114 | * pcre/pcre.h: |
| 31115 | * pcre/pcre.pri: |
| 31116 | * pcre/pcre_compile.c: |
| 31117 | * pcre/pcre_exec.c: |
| 31118 | * pcre/pcre_fullinfo.c: |
| 31119 | * pcre/pcre_get.c: |
| 31120 | * pcre/pcre_internal.h: |
| 31121 | * pcre/pcre_maketables.c: |
| 31122 | * pcre/pcre_ord2utf8.c: |
| 31123 | * pcre/pcre_tables.c: |
| 31124 | * pcre/pcre_ucp_searchfuncs.c: Copied from pcre/pcre_ucp_findchar.c. |
| 31125 | * pcre/pcre_xclass.c: |
| 31126 | * pcre/ucp.h: |
| 31127 | * pcre/ucpinternal.h: |
| 31128 | * pcre/ucptable.c: |
| 31129 | Updated with new versions from the PCRE 6.5 release, merged with changes. |
| 31130 | |
| 31131 | * pcre/pcre_config.c: Removed. |
| 31132 | * pcre/pcre_globals.c: Removed. |
| 31133 | * pcre/pcre_info.c: Removed. |
| 31134 | * pcre/pcre_printint.src: Removed. |
| 31135 | * pcre/pcre_refcount.c: Removed. |
| 31136 | * pcre/pcre_study.c: Removed. |
| 31137 | * pcre/pcre_try_flipped.c: Removed. |
| 31138 | * pcre/pcre_ucp_findchar.c: Removed. |
| 31139 | * pcre/pcre_version.c: Removed. |
| 31140 | |
| 31141 | 2007-10-16 Geoffrey Garen <ggaren@apple.com> |
| 31142 | |
| 31143 | Reviewed by Darin Adler. |
| 31144 | |
| 31145 | Removed KJS_VERBOSE because it was getting in the way of readability, |
| 31146 | and the messages didn't seem very helpful. |
| 31147 | |
| 31148 | * kjs/function.cpp: |
| 31149 | (KJS::FunctionImp::callAsFunction): |
| 31150 | (KJS::FunctionImp::passInParameters): |
| 31151 | * kjs/lookup.h: |
| 31152 | (KJS::lookupPut): |
| 31153 | * kjs/object.cpp: |
| 31154 | (KJS::JSObject::put): |
| 31155 | * kjs/value.h: |
| 31156 | |
| 31157 | 2007-10-16 Geoffrey Garen <ggaren@apple.com> |
| 31158 | |
| 31159 | Reviewed by Darin Adler. |
| 31160 | |
| 31161 | Removed the Parameter class because it was a redundant wrapper around |
| 31162 | Identifier. |
| 31163 | |
| 31164 | * kjs/function.cpp: |
| 31165 | (KJS::FunctionImp::passInParameters): |
| 31166 | (KJS::FunctionImp::getParameterName): |
| 31167 | * kjs/nodes.cpp: |
| 31168 | (FunctionBodyNode::addParam): |
| 31169 | * kjs/nodes.h: |
| 31170 | (KJS::FunctionBodyNode::): |
| 31171 | |
| 31172 | 2007-10-16 Geoffrey Garen <ggaren@apple.com> |
| 31173 | |
| 31174 | Reviewed by Darin Adler. |
| 31175 | |
| 31176 | Global replace of assert with ASSERT. |
| 31177 | |
| 31178 | 2007-10-16 Adam Roben <aroben@apple.com> |
| 31179 | |
| 31180 | Make testkjs not delay-load WebKit |
| 31181 | |
| 31182 | Soon, delay-loading WebKit will be impossible (because we will be |
| 31183 | using __declspec(thread) for thread-local storage). This change |
| 31184 | prepares testkjs for the future. |
| 31185 | |
| 31186 | Reviewed by Sam. |
| 31187 | |
| 31188 | * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed WebKitInitializer, |
| 31189 | added FindSafari. |
| 31190 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Don't link against |
| 31191 | WebKitInitializer, don't delay-load WebKit. |
| 31192 | * kjs/testkjs.cpp: Don't use WebKitInitializer. |
| 31193 | |
| 31194 | 2007-10-16 Adam Roben <aroben@apple.com> |
| 31195 | |
| 31196 | Updated testkjs for the rename of WebKit_debug.dll to WebKit.dll for the Debug configuration |
| 31197 | |
| 31198 | Reviewed by Kevin McCullough. |
| 31199 | |
| 31200 | * JavaScriptCore.vcproj/debug.vsprops: Added WebKitDLLConfigSuffix. |
| 31201 | * JavaScriptCore.vcproj/debug_internal.vsprops: Ditto. |
| 31202 | * JavaScriptCore.vcproj/release.vsprops: Ditto. |
| 31203 | * JavaScriptCore.vcproj/testkjs/testkjs.vcproj: Use |
| 31204 | WebKitDLLConfigSuffix when referring to WebKit.dll, and fixed a typo |
| 31205 | in the name of icuuc36[_debug].dll. |
| 31206 | |
| 31207 | 2007-10-16 Geoffrey Garen <ggaren@apple.com> |
| 31208 | |
| 31209 | Reviewed by Maciej Stachowiak. |
| 31210 | |
| 31211 | Re-structured variable and function declaration code. |
| 31212 | |
| 31213 | Command-line JS iBench shows no regression. |
| 31214 | |
| 31215 | Here are the changes: |
| 31216 | |
| 31217 | 1. Function declarations are now processed at the same time as var |
| 31218 | declarations -- namely, immediately upon entry to an execution context. |
| 31219 | This does not match Firefox, which waits to process a function |
| 31220 | declaration until the declaration's containing block executes, but it |
| 31221 | does match IE and the ECMA spec. (10.1.3 states that var and function |
| 31222 | declarations should be processed at the same time -- namely, "On |
| 31223 | entering an execution context." 12.2 states that "A Block does not |
| 31224 | define a new execution scope.") |
| 31225 | |
| 31226 | 2. Declaration processing proceeds iteratively now, rather than |
| 31227 | recursively, storing the nodes is finds in stacks. This will later |
| 31228 | facilitate an optimization to hold on to the gathered declaration nodes, |
| 31229 | rather than re-fetching them in every function call. |
| 31230 | [ http://bugs.webkit.org/show_bug.cgi?id=14868 ] |
| 31231 | |
| 31232 | Modified these tests because they expected the incorrect Mozilla |
| 31233 | behavior described above: |
| 31234 | |
| 31235 | * tests/mozilla/ecma_3/Function/scope-001.js: |
| 31236 | * tests/mozilla/js1_5/Scope/regress-184107.js: |
| 31237 | |
| 31238 | 2007-10-16 Darin Adler <darin@apple.com> |
| 31239 | |
| 31240 | - try to fix the GTK build |
| 31241 | |
| 31242 | * kjs/ustring.cpp: Include ASCIICType.h, not ASCIICtype.h. |
| 31243 | |
| 31244 | 2007-10-16 Darin Adler <darin@apple.com> |
| 31245 | |
| 31246 | - try to fix the Windows build |
| 31247 | |
| 31248 | * kjs/date_object.cpp: (KJS::parseDate): A couple instances of isspace were |
| 31249 | in here. Not sure why it wasn't failing elsewhere. Changed to isASCIISpace. |
| 31250 | |
| 31251 | 2007-10-16 Darin Adler <darin@apple.com> |
| 31252 | |
| 31253 | - try to fix the GTK build |
| 31254 | |
| 31255 | * kjs/ustring.cpp: Include ASCIICType.h. |
| 31256 | |
| 31257 | 2007-10-16 Darin Adler <darin@apple.com> |
| 31258 | |
| 31259 | Reviewed by Maciej and Geoff (and looked over by Eric). |
| 31260 | |
| 31261 | - http://bugs.webkit.org/show_bug.cgi?id=15519 |
| 31262 | eliminate use of <ctype.h> for processing ASCII |
| 31263 | |
| 31264 | * wtf/ASCIICType.h: Added. |
| 31265 | * wtf/DisallowCType.h: Added. |
| 31266 | |
| 31267 | * kjs/config.h: Include DisallowCType.h. |
| 31268 | |
| 31269 | * kjs/date_object.cpp: |
| 31270 | (KJS::skipSpacesAndComments): |
| 31271 | (KJS::findMonth): |
| 31272 | (KJS::parseDate): |
| 31273 | * kjs/function.cpp: |
| 31274 | (KJS::decode): |
| 31275 | * kjs/ustring.cpp: |
| 31276 | (KJS::UString::toDouble): |
| 31277 | Use ASCIICType.h functions instead of ctype.h ones. |
| 31278 | |
| 31279 | 2007-10-14 Maciej Stachowiak <mjs@apple.com> |
| 31280 | |
| 31281 | Reviewed by Darin. |
| 31282 | |
| 31283 | - fixes for "New JavaScript benchmark" |
| 31284 | http://bugs.webkit.org/show_bug.cgi?id=15515 |
| 31285 | |
| 31286 | * kjs/testkjs.cpp: |
| 31287 | (TestFunctionImp::callAsFunction): Implement "load" for compatibility |
| 31288 | with SpiderMonkey. |
| 31289 | (TestFunctionImp::): ditto |
| 31290 | (doIt): ditto |
| 31291 | (kjsmain): Drop useless --> from output. |
| 31292 | |
| 31293 | 2007-10-15 Geoffrey Garen <ggaren@apple.com> |
| 31294 | |
| 31295 | Removed unnecessary #include. |
| 31296 | |
| 31297 | * API/JSObjectRef.cpp: |
| 31298 | |
| 31299 | 2007-10-15 Geoffrey Garen <ggaren@apple.com> |
| 31300 | |
| 31301 | Double-reverse build fix. My tree was out of date. |
| 31302 | |
| 31303 | * kjs/nodes.cpp: |
| 31304 | (NumberNode::evaluate): |
| 31305 | |
| 31306 | 2007-10-15 Geoffrey Garen <ggaren@apple.com> |
| 31307 | |
| 31308 | Build fix. |
| 31309 | |
| 31310 | * kjs/nodes.cpp: |
| 31311 | (NumberNode::evaluate): |
| 31312 | |
| 31313 | 2007-10-15 Geoffrey Garen <ggaren@apple.com> |
| 31314 | |
| 31315 | Reviewed by Darin Adler. |
| 31316 | |
| 31317 | Removed surprising self-named "hack" that made nested functions |
| 31318 | available as named properties of their containing functions, and placed |
| 31319 | containing function objects in the scope chains of nested functions. |
| 31320 | |
| 31321 | There were a few reasons to remove this "hack:" |
| 31322 | |
| 31323 | 1. It contradicted FF, IE, and the ECMA spec. |
| 31324 | |
| 31325 | 2. It incurred a performance penalty, since merely parsing a function |
| 31326 | required parsing its body for nested functions (and so on). |
| 31327 | |
| 31328 | 3. SVN history contains no explanation for why it was added. It was just |
| 31329 | legacy code in a large merge a long, long time ago. |
| 31330 | |
| 31331 | [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ] |
| 31332 | |
| 31333 | * kjs/nodes.cpp: |
| 31334 | (FuncDeclNode::processFuncDecl): |
| 31335 | |
| 31336 | 2007-10-15 Geoffrey Garen <ggaren@apple.com> |
| 31337 | |
| 31338 | Reviewed by Darin Adler. |
| 31339 | |
| 31340 | Removed the concept of AnonymousCode. It was unused, and it doesn't |
| 31341 | exist in the ECMA spec. |
| 31342 | |
| 31343 | [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ] |
| 31344 | |
| 31345 | * kjs/Context.cpp: |
| 31346 | (KJS::Context::Context): |
| 31347 | * kjs/function.h: |
| 31348 | * kjs/nodes.cpp: |
| 31349 | (ReturnNode::execute): |
| 31350 | |
| 31351 | 2007-10-15 Geoffrey Garen <ggaren@apple.com> |
| 31352 | |
| 31353 | Reviewed by Darin Adler. |
| 31354 | |
| 31355 | Made function parameters DontDelete. This matches FF and the vague |
| 31356 | description in ECMA 10.1.3. It's also required in order to make |
| 31357 | symbol table based lookup of function parameters valid. (If the |
| 31358 | parameters aren't DontDelete, you can't guarantee that you'll find |
| 31359 | them later in the symbol table.) |
| 31360 | |
| 31361 | [ Patch broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ] |
| 31362 | |
| 31363 | * kjs/function.cpp: |
| 31364 | (KJS::FunctionImp::passInParameters): |
| 31365 | |
| 31366 | 2007-10-15 Geoffrey Garen <ggaren@apple.com> |
| 31367 | |
| 31368 | Reviewed by Maciej Stachowiak. |
| 31369 | |
| 31370 | Some Vector optimizations. These are especially important when using |
| 31371 | Vector as a stack for implementing recursive algorithms iteratively. |
| 31372 | |
| 31373 | [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ] |
| 31374 | |
| 31375 | 1. Added shrink(), which is a version of resize() that you can call |
| 31376 | to save a branch / improve code generation and inlining when you know |
| 31377 | that the vector is not getting bigger. |
| 31378 | |
| 31379 | 2. Changed subclassing relationship in VectorBuffer to remove a call to |
| 31380 | fastFree() in the destructor for the inlineCapacity != 0 template |
| 31381 | specialization. This brings inline Vectors one step closer to true |
| 31382 | stack-allocated arrays. |
| 31383 | |
| 31384 | Also changed abort() to CRASH(), since the latter works better. |
| 31385 | |
| 31386 | * wtf/Vector.h: |
| 31387 | (WTF::VectorBufferBase::allocateBuffer): |
| 31388 | (WTF::VectorBufferBase::deallocateBuffer): |
| 31389 | (WTF::VectorBufferBase::VectorBufferBase): |
| 31390 | (WTF::VectorBufferBase::~VectorBufferBase): |
| 31391 | (WTF::): |
| 31392 | (WTF::VectorBuffer::VectorBuffer): |
| 31393 | (WTF::VectorBuffer::~VectorBuffer): |
| 31394 | (WTF::VectorBuffer::deallocateBuffer): |
| 31395 | (WTF::VectorBuffer::releaseBuffer): |
| 31396 | (WTF::Vector::clear): |
| 31397 | (WTF::Vector::removeLast): |
| 31398 | (WTF::::operator): |
| 31399 | (WTF::::fill): |
| 31400 | (WTF::::shrink): |
| 31401 | |
| 31402 | 2007-10-12 Geoffrey Garen <ggaren@apple.com> |
| 31403 | |
| 31404 | Reviewed by Maciej Stachowiak. |
| 31405 | |
| 31406 | Fixed http://bugs.webkit.org/show_bug.cgi?id=15490 |
| 31407 | Iteration statements sometimes incorrectly evaluate to the empty value |
| 31408 | (KDE r670547). |
| 31409 | |
| 31410 | [ Broken off from http://bugs.webkit.org/show_bug.cgi?id=14868 ] |
| 31411 | |
| 31412 | This patch is a merge of KDE r670547, with substantial modification |
| 31413 | for performance. |
| 31414 | |
| 31415 | It fixes do-while statements to evaluate to a value. (They used |
| 31416 | to evaluate to the empty value in all cases.) |
| 31417 | |
| 31418 | It also fixes SourceElementsNode to maintain the value of abnormal |
| 31419 | completions like "break" and "continue." |
| 31420 | |
| 31421 | It also re-works the main execution loop in SourceElementsNode so that |
| 31422 | it (1) makes a little more sense and (2) avoids unnecessary work. This |
| 31423 | is a .28% speedup on command-line JS iBench. |
| 31424 | |
| 31425 | * kjs/nodes.cpp: |
| 31426 | (DoWhileNode::execute): |
| 31427 | (SourceElementsNode::execute): |
| 31428 | |
| 31429 | 2007-10-15 Simon Hausmann <hausmann@kde.org> |
| 31430 | |
| 31431 | Reviewed by Lars. |
| 31432 | |
| 31433 | Fix compilation with gcc 4.3 by including 'limits' due to the use of std::numeric_limits. |
| 31434 | |
| 31435 | * wtf/HashTraits.h: |
| 31436 | |
| 31437 | 2007-10-5 Kevin Ollivier <kevino@theolliviers.com> |
| 31438 | |
| 31439 | Reviewed by Adam. |
| 31440 | |
| 31441 | Add support for MSVC7, and fix cases where PLATFORM(WIN) should |
| 31442 | be PLATFORM(WIN_OS) for other ports building on Windows. |
| 31443 | |
| 31444 | * kjs/DateMath.cpp: |
| 31445 | (KJS::getDSTOffsetSimple): |
| 31446 | * kjs/JSImmediate.h: |
| 31447 | * wtf/Assertions.cpp: |
| 31448 | * wtf/Assertions.h: |
| 31449 | * wtf/Platform.h: |
| 31450 | * wtf/StringExtras.h: |
| 31451 | (snprintf): |
| 31452 | (vsnprintf): |
| 31453 | |
| 31454 | 2007-10-14 Cameron Zwarich <cwzwarich@uwaterloo.ca> |
| 31455 | |
| 31456 | Reviewed by Darin. |
| 31457 | |
| 31458 | Adds NegateNode optimization from KJS. The relevant revision in KDE |
| 31459 | is 666736. |
| 31460 | |
| 31461 | * kjs/grammar.y: |
| 31462 | * kjs/nodes.cpp: |
| 31463 | (NumberNode::evaluate): |
| 31464 | * kjs/nodes.h: |
| 31465 | (KJS::Node::): |
| 31466 | (KJS::NumberNode::): |
| 31467 | * kjs/nodes2string.cpp: |
| 31468 | (NumberNode::streamTo): |
| 31469 | |
| 31470 | 2007-10-14 Jason Foreman <jason@threeve.org> |
| 31471 | |
| 31472 | Reviewed by Maciej. |
| 31473 | |
| 31474 | Fix http://bugs.webkit.org/show_bug.cgi?id=15145 |
| 31475 | |
| 31476 | Ensure that if adjusting n to minimize the difference of n*intPow10(e-p+1) to x, |
| 31477 | that the property n < intPow10(p) is maintained. |
| 31478 | |
| 31479 | * kjs/number_object.cpp: |
| 31480 | (NumberProtoFunc::callAsFunction): |
| 31481 | |
| 31482 | == Rolled over to ChangeLog-2007-10-14 == |