1. 16 Jan, 2003 1 commit
    • darin's avatar
      Reviewed by Maciej. · 389288b2
      darin authored
      	- rolled in a change from the KJS folks
      
              * kjs/number_object.h: Use ObjectImp *, not Object, for the proto.
              * kjs/number_object.cpp:
              (NumberInstanceImp::NumberInstanceImp): Use ObjectImp *, not Object, for the proto.
              (NumberPrototypeImp::NumberPrototypeImp): Pass ObjectImp.
              (NumberObjectImp::construct): Use ObjectImp.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3338 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      389288b2
  2. 15 Jan, 2003 1 commit
    • darin's avatar
      Reviewed by Ken. · 13748990
      darin authored
      	- rolled in a change from the KJS folks
      
      	Fixes a bug where the date functions would not accept non-strings.
      	And provides a bit of a speedup.
      
              * kjs/date_object.h: Change parameter type for parseDate.
              * kjs/date_object.cpp:
              (DateObjectFuncImp::call): Always call toString, don't check the type.
              (KJS::parseDate): Take a UString parameter, not a String parameter.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3327 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      13748990
  3. 13 Jan, 2003 2 commits
    • darin's avatar
      * kjs/ustring.h: Fix spelling of occurrence. · b87b8515
      darin authored
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3315 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b87b8515
    • darin's avatar
      Reviewed by Maciej. · 60414e6b
      darin authored
      	- turned more recursion into iteration, and fixed some backwards stuff
      
              * kjs/grammar.y: Use the normal idiom for CaseClauses and FormalParameterList
      	rather than using append().
              * kjs/grammar.cpp: Regenerated.
      
              * kjs/nodes.h: Change ClauseListNode and ParameterNode to use the normal idiom,
      	and got rid of append methods. Also added friend declarations and calls to reverseList().
              * kjs/nodes.cpp:
              (StatListNode::ref): Iteration, not recursion.
              (StatListNode::deref): Iteration, not recursion.
              (StatListNode::execute): Iteration, not recursion.
              (StatListNode::processVarDecls): Iteration, not recursion.
              (CaseClauseNode::reverseList): Added.
              (ClauseListNode::ref): Iteration, not recursion.
              (ClauseListNode::deref): Iteration, not recursion.
              (ClauseListNode::processVarDecls): Iteration, not recursion.
              (CaseBlockNode::reverseLists): Added.
              (ParameterNode::ref): Iteration, not recursion.
              (ParameterNode::deref): Iteration, not recursion.
              (FuncDeclNode::reverseParameterList): Added.
              (FuncExprNode::reverseParameterList): Added.
              (SourceElementsNode::ref): Iteration, not recursion.
              (SourceElementsNode::deref): Iteration, not recursion.
              (SourceElementsNode::execute): Use variable name of n to match other functions.
              (SourceElementsNode::processFuncDecl): Ditto.
              (SourceElementsNode::processVarDecls): Ditto.
      
              * kjs/nodes2string.cpp:
              (SourceStream::operator<<): Used a switch statement for a bit of added clarity.
              (ElementNode::streamTo): Iteration, not recursion.
              (PropertyValueNode::streamTo): Iteration, not recursion.
              (ArgumentListNode::streamTo): Iteration, not recursion.
              (StatListNode::streamTo): Iteration, not recursion, and fixed order.
              (VarDeclListNode::streamTo): Iteration, not recursion.
              (ClauseListNode::streamTo): Used for statement to match other functions.
              (CaseBlockNode::streamTo): Used for statement to match other functions.
              (ParameterNode::streamTo): Iteration, not recursion.
              (SourceElementsNode::streamTo): Iteration, not recursion, and fixed order that has been
      	backwards since I changed how this works in nodes.cpp.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3313 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      60414e6b
  4. 12 Jan, 2003 1 commit
    • darin's avatar
      Reviewed by John. · ffcf8970
      darin authored
      	- changes inspired by things I noticed reviewing diffs vs. KDE when preparing the tarball
      
              * kjs/function.cpp: (GlobalFuncImp::call): Use strtol when strtoll is
      	not available. Do #ifndef NDEBUG, not #if !NDEBUG.
              * kjs/function.h: Do #ifndef NDEBUG, not #if !NDEBUG.
              * kjs/internal.cpp:
              (InterpreterImp::initGlobalObject): Do #ifndef NDEBUG, not #if !NDEBUG.
              (KJS::printInfo): Remove case for ListType and remove default case that just
      	ends up suppressing the "missing case" warning and does no good.
              * kjs/interpreter.cpp: (Interpreter::evaluate): Do #ifndef NDEBUG, not #if !NDEBUG.
              * kjs/nodes.cpp:
              (Node::finalCheck): Fix accidentally-deleted code in an ifdef we never compile.
              (FunctionCallNode::evaluate): Remove bogus XXX comment. Maciej put this comment in,
              and together we determined it's not needed.
              (TypeOfNode::evaluate): Ditto.
              * kjs/object.cpp: Remove assert that refers to ListType.
              * kjs/value.h: Remove ListType.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3306 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ffcf8970
  5. 03 Jan, 2003 1 commit
  6. 30 Dec, 2002 1 commit
    • darin's avatar
      Reviewed by Don and Maciej. · 8e8091f7
      darin authored
      	- follow-on to my fix for 3134693 that fixes one more case of recursion and simplifies further
      
              * kjs/grammar.y: Remove SourceElementNode and just use a StatementNode instead.
      	Reverse SourceElements rule so the recursive rule comes first as in the original
      	KJS code (avoids actual parser recursion).
      
              * kjs/grammar.cpp: Regenerated.
              * kjs/grammar.cpp.h: Regenerated.
              * kjs/grammar.h: Regenerated.
      
              * kjs/nodes.h: Make processFuncDecl a virtual function in StatementNode so that we can
      	use a StatementNode instead of a SourceElementNode. Add a call to reverseList in BlockNode
      	to correct the order of the linked list in SourceElementsNode, to replace the technique
      	where we reversed it in the parser. Remove SourceElementNode class, and make the element in
      	SourceElementsNode be a StatementNode instead.
              * kjs/nodes.cpp: Remove SourceElementNode code.
              (StatementNode::processFuncDecl): Added empty function.
              (BlockNode::reverseList): Added. Used to make the SourceElements list ordered correctly.
              * kjs/nodes2string.cpp: Remove SourceElementNode code.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3215 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8e8091f7
  7. 28 Dec, 2002 1 commit
    • kocienda's avatar
      Reviewed by Gramps and Ken. · 69335a5d
      kocienda authored
      	Checked in by Ken.
      
      	- fixed 3134693 -- carsdirect.com crash on used car search, due to large JavaScript array
      
      	The parser was using recursion to handle many types of lists.
      	This meant that we crashed out of stack space when any of the lists were extra big.
      	I applied the same sort of fix we had already applied a while back for argument lists for
      	all the other types of lists, including the list of ElementNode that was the reason for
      	the crash reported here.
      
              * kjs/grammar.y: Removed ElisionNode altogether and just use a count.
      	Use specific node types for PropertyNameAndValueList and PropertyName.
      
              * kjs/grammar.cpp: Regenerated.
              * kjs/grammar.cpp.h: Regenerated.
              * kjs/grammar.h: Regenerated.
      
              * kjs/nodes.h: Elide "ElisionNode", changing objects to keep elision counts instead.
      	Make the ObjectLiteralNode list field be PropertyValueNode, not just Node.
      	Make PropertyValueNode fields have specific types. Add new reverse list functions, calls
      	to those functions in the constructors, and friend declarations as needed so the class
      	that holds the head of a list can reverse the list during parsing.
              * kjs/nodes.cpp:
              (ElementNode::ref): Use iteration instead of recursion. Also elide "elision".
              (ElementNode::deref): Ditto.
              (ElementNode::evaluate): Use iteration instead of recursion, taking advantage of
      	the fact that the linked list is reversed. Also use the elision count rather than
      	an elision list.
              (ArrayNode::reverseElementList): Reverse the list so we can iterate normally.
              (ArrayNode::ref): Elide "elision".
              (ArrayNode::deref): Ditto.
              (ArrayNode::evaluate): Use elision count instead of elision list.
              (ObjectLiteralNode::reverseList): Reverse the list so we can iterate normally.
              (PropertyValueNode::ref): Use iteration instead of recursion.
              (PropertyValueNode::deref): Use iteration instead of recursion.
              (PropertyValueNode::evaluate): Use iteration instead of recursion, taking advantage
      	of the fact that the linked list is reversed.
              (ArgumentListNode::ref): Change code to match the other similar cases we had to revise.
              (ArgumentListNode::deref): Ditto.
              (ArgumentListNode::evaluateList): Ditto.
              (ArgumentsNode::reverseList): Ditto.
              (VarDeclListNode::ref): Use iteration instead of recursion.
              (VarDeclListNode::deref): Ditto.
              (VarDeclListNode::evaluate): Use iteration instead of recursion, taking advantage
      	of the fact that the linked list is reversed.
              (VarDeclListNode::processVarDecls): Ditto.
              (VarStatementNode::reverseList): Reverse the list so we can iterate normally.
              (FunctionBodyNode::FunctionBodyNode): Use BlockNode as the base class, removing
      	most of the FunctionBodyNode class.
      
              * kjs/nodes2string.cpp:
              (ElementNode::streamTo): Update for using a count for elision, and reverse linking.
              (ArrayNode::streamTo): Update for using a count for elision.
              (PropertyValueNode::streamTo): Update for reverse linking.
              (ArgumentListNode::streamTo): Update for reverse linking. This has been wrong for
      	a while, since we added the reverse a long time ago.
              (VarDeclListNode::streamTo): Update for reverse linking.
              (ParameterNode::streamTo): Update for reverse linking.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3192 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      69335a5d
  8. 23 Dec, 2002 1 commit
    • darin's avatar
      Reviewed by Don and John. · 92285d33
      darin authored
      	- fixed 3134449 -- Date.UTC returns NaN (invalid date)
      
      	Did more testing of the date functions and made them behave like the other browsers.
      	There were three problems:
      
                  1) We did a validity check that other browsers don't do (hence the NaN).
                  2) We treated passed-in dates as local time even in Date.UTC (hence a wrong result
                     once I fixed the NaN).
                  3) The results of ToUTCString (and ToGMTString) weren't formatted quite the same
      	       as other browsers.
      
      	Also found a couple of silly but unrelated coding mistakes.
      
              * kjs/date_object.cpp:
              (timetUsingCF): Added. Has the guts of mktimeUsingCF, but without the CFGregorianDateIsValid
              check. Other browsers accept invalid dates. Also takes a time zone parameter.
              (mktimeUsingCF): Calls timetUsingCF with the current time zone.
              (timegmUsingCF): Calls timetUsingCF with the UTC time zone.
              (formatDate): Remove the includeComma flag.
              (formatDateUTCVariant): Added. For use instead of formatDate with the includeComma flag.
      	Puts the day before the month name.
              (DateProtoFuncImp::call): Use the new formatDateUTCVariant for ToGMTString and ToUTCString.
      	Without this change the date didn't match other browsers.
              (DateObjectImp::DateObjectImp): Use UTCPropertyName. Somehow I declared this and didn't use
      	it before.
              (DateObjectImp::construct): Pass -1 for is_dst literally instead of using invalidDate.
      	Changing this to invalidDate was just a mistake (although no real difference in compiled
      	code since invalidDate is just -1).
              (DateObjectFuncImp::call): Call timegm for the UTC case instead of mktime.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3177 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      92285d33
  9. 17 Dec, 2002 1 commit
    • darin's avatar
      top level: · fc4fd1d0
      darin authored
              Reviewed by Don and Maciej.
      
              * force-clean-timestamp: Trigger a full build since we are setting
      	MACOSX_DEPLOYMENT_TARGET to 10.2, which requires remaking all PFEs.
      
      Tools:
      
              * Scripts/check-copyright: Added.
      
      JavaScriptCore:
      
              Reviewed by Don and Maciej.
      
      	- fixed 3129115 -- need Apple copyright added to open source documents
      
      	* tons of files: Added our copyright to files we modified, and updated all to standard format.
      
      	- other changes
      
              * JavaScriptCore.pbproj/project.pbxproj: Set MACOSX_DEPLOYMENT_TARGET to 10.2.
      	Also removed completion.cpp.
              * kjs/completion.cpp: Removed.
              * kjs/completion.h: Made the Completion constructor inline.
      
              * kjs/grammar.y: Removed an obsolete "pretend ifdef". No need to put these in APPLE_CHANGES now.
      
      WebFoundation:
      
              Reviewed by Don and Maciej.
      
              * English.lproj/StringsNotToBeLocalized.txt: Updated for recent changes.
              * WebFoundation.pbproj/project.pbxproj: Set MACOSX_DEPLOYMENT_TARGET to 10.2.
      
      WebCore:
      
              Reviewed by Don and Maciej.
      
      	- fixed 3129115 -- need Apple copyright added to open source documents
      
      	* tons of files: Added copyright message to files we modified and
      	standardized format of copyrights too.
      
      	- fixed 3129235 -- assert in LRUList visiting apple.com if "Display images" preference is off
      
              * khtml/misc/loader.cpp:
              (Cache::getLRUListFor): Use the first list for 0-sized objects.
              (Cache::removeFromLRUList): Allow 0-sized objects.
      
      	- other changes
      
              * khtml/rendering/render_style.h: Remove bogus unused private constructor.
      
              * kwq/KWQFont.h: Added copy constructor and assignment operator.
              * kwq/KWQFont.mm:
              (QFont::QFont): Copy constructor now retains the NSFont. The old version didn't which could
      	cause retain/release problems.
              (QFont::operator=): Retain the new NSFont and release the old one.
      
              * WebCore.pbproj/project.pbxproj: Set MACOSX_DEPLOYMENT_TARGET to 10.2.
      
      WebKit:
      
              Reviewed by Don and Maciej.
      
              * WebView.subproj/WebUserAgentSpoofTable.gperf: Added a couple of new domains to the list we
      	spoof as Mac IE, and added comments.
              * WebView.subproj/WebUserAgentSpoofTable.c: Regenerated.
      
              * WebKit.pbproj/project.pbxproj: Set MACOSX_DEPLOYMENT_TARGET to 10.2
      
      WebBrowser:
      
              Reviewed by Don and Maciej.
      
      	- fixed 3106686 -- Remove "world leak" debugging window before beta
      
              * Test/PageLoadTestController.m:
              (-[PageLoadTestController windowDidLoad]): (Not part of the bug fix.) Changed the combo
      	box so it automatically sizes to the number of pltsuite files so we don't have to edit
      	the nib all the time.
              (-[PageLoadTestController anyWindowWillClose:]): Don't do any world leak test when the
      	window closes. The one in the page load test window is still there.
      
              * Debug/DebugUtilities.m: (-[NSApplication validate_toggleAlwaysCheckForWorldLeaks:]):
      	Don't enable or check the debug menu item at all. Put an ifdef in so we can turn it on later.
      
      	- fixed 3124310 -- remove "app refuses to launch" code before shipping
      
              * main.m: (main): Remove all the licensing code.
      
      	- other changes
      
              * BrowserNSNetServiceExtras.m: Made all locally-defined-and used functions static
      	so we would know if any were unused and for cleanliness.
              (-[NSNetService hostName:andPort:]): Remove some silly assertions.
              (decode_name): Change printf for errors to ERROR.
              (decode_srv): Ditto.
      	(decode_txt): Removed because it's unused.
              (skip_question): Ditto.
              (MyDictionaryKeyHashCallBack): Removed silly assertion.
              (MyCreateCFDictionaryFromTXT): Ditto.
      
              * WebBrowser.pbproj/project.pbxproj: Set MACOSX_DEPLOYMENT_TARGET to 10.2
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3098 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      fc4fd1d0
  10. 14 Dec, 2002 2 commits
    • mjs's avatar
      Reviewed by Ken. · f273a9fd
      mjs authored
      	- further corrections to number printing.
      
              * kjs/ustring.cpp:
              (UString::from): Make number printing match the ECMA standard
      	algorithm.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3053 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f273a9fd
    • mjs's avatar
      Reviewed by Dave. · 957a1b3b
      mjs authored
      	- fix toString() conversion for numbers less than 1. Negative
      	exponents are still wrong though (things like 1E-34).
      
              * kjs/ustring.cpp:
      	(UString::from): Don't print empty string for numbers less than 1,
      	and remember to add extra 0s after the decimal for negative
      	decimal positions.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3051 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      957a1b3b
  11. 12 Dec, 2002 3 commits
  12. 11 Dec, 2002 1 commit
    • mjs's avatar
      Reviewed by Don. · 9132b10b
      mjs authored
      	- Add kjsprint global function in Development build for ease of	debugging.
      	- Print uncaught JavaScript exceptions to the console in Development.
      	- Improve wording of exception error messages.
      
              * kjs/function.cpp:
              (GlobalFuncImp::call):
              * kjs/function.h:
              * kjs/internal.cpp:
              (InterpreterImp::initGlobalObject):
              * kjs/interpreter.cpp:
              (Interpreter::evaluate):
              * kjs/nodes.cpp:
              (NewExprNode::evaluate):
              (FunctionCallNode::evaluate):
              (RelationalNode::evaluate):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3009 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9132b10b
  13. 09 Dec, 2002 1 commit
    • mjs's avatar
      Reviewed by Ken. · ca7af085
      mjs authored
      	- fixed 3059637 - all articles missing at excite.com sports page
      	- fixed 3065903 - most of content missing at excite.com news page
      
      	These bugs both came up because a JavaScript function has a var
      	declaration that collides with a function parameter name.
      
              * kjs/nodes.cpp:
              (VarDeclNode::processVarDecls): Don't set the property to
      	undefined if a property with that name is already set on the
      	global object. Otherwise we may clobber function parameters with
      	undefined even before hitting a possible var initializer.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2974 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ca7af085
  14. 04 Dec, 2002 2 commits
    • mjs's avatar
      Reviewed by: Richard Williamson · e5d3a406
      mjs authored
      	Added explicit lock/unlock methods so Sherlock can grab the
      	interpreter lock as needed.
      
      	- partially addressed 3084320 - JavaScriptCore crash
      
              * kjs/internal.cpp:
              (InterpreterImp::InterpreterImp):
              (InterpreterImp::lock):
              (InterpreterImp::unlock):
              * kjs/internal.h:
              * kjs/interpreter.cpp:
              (Interpreter::lock):
              (Interpreter::unlock):
              * kjs/interpreter.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2935 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e5d3a406
    • mjs's avatar
      Reviewed by: NOBODY (OOPS!) · 21dbd392
      mjs authored
      	Set things up so JavaScriptCore builds in PCRE and uses it for
      	regular expressions. This fixes many form validation bugs:
      
      	- fixed 3103197 - javascript at fidelity.com rejects valid input
      	- fixed 2942552 - form validation at weather.com fails
      	- fixed 3079752 - js always reports textarea is empty
      	- fixed 3079719 - covad.com "check availalbility" fails
      
              * Makefile.am: Add pcre subdir.
              * kjs/config.h: define HAVE_PCREPOSIX to true.
      	* kjs/regexp.h: Don't include pcreposix.h since nothing from there
      	is used.
      	* pcre/.cvsignore: Added.
              * pcre/ChangeLog: Removed.
              * pcre/INSTALL: Removed.
              * pcre/Makefile.am: Added.
              * pcre/Makefile.in: Removed.
              * pcre/NEWS: Removed.
              * pcre/NON-UNIX-USE: Removed.
              * pcre/README: Removed.
              * pcre/chartables.c: Added.
              * pcre/config.guess: Removed.
              * pcre/config.in: Removed.
              * pcre/config.sub: Removed.
              * pcre/configure: Removed.
              * pcre/configure.in: Removed.
              * pcre/dll.mk: Removed.
              * pcre/doc/Tech.Notes: Removed.
              * pcre/doc/pcre.3: Removed.
              * pcre/doc/pcre.html: Removed.
              * pcre/doc/pcre.txt: Removed.
              * pcre/doc/pcregrep.1: Removed.
              * pcre/doc/pcregrep.html: Removed.
              * pcre/doc/pcregrep.txt: Removed.
              * pcre/doc/pcreposix.3: Removed.
              * pcre/doc/pcreposix.html: Removed.
              * pcre/doc/pcreposix.txt: Removed.
              * pcre/doc/pcretest.1: Removed.
              * pcre/doc/pcretest.html: Removed.
              * pcre/doc/pcretest.txt: Removed.
              * pcre/doc/perltest.txt: Removed.
              * pcre/install-sh: Removed.
              * pcre/ltmain.sh: Removed.
              * pcre/pcre-config.h: Added.
              * pcre/pcre-config.in: Removed.
              * pcre/internal.h: Include pcre-config.h instead of config.h
              * pcre/pcre.c:
              (ord2utf8): Fix warnings.
              (pcre_compile): Fix warnings.
              * pcre/pcre.def: Removed.
              * pcre/pcre.h: Added.
              * pcre/pcre.in: Removed.
              * JavaScriptCore.pbproj/project.pbxproj: Added pcre files to build.
              * JavaScriptCorePrefix.h: Guard c++ headers with #ifdef __cplusplus.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2933 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      21dbd392
  15. 03 Dec, 2002 2 commits
  16. 27 Nov, 2002 1 commit
  17. 26 Nov, 2002 4 commits
    • mjs's avatar
      Change ActivationImp to be allocated via the garbage collector · 0e6b4f09
      mjs authored
      	again instead of on the stack. This fixes the following four
      	regressions but sadly it causes a 6% performance hit. It's
      	probably possibly to reduce the hit a bit by being smarter about
      	inlining and the way the marking list variant is implemented, but
      	I'll look into that later.
      
      	- fixed 3111500 - REGRESSION: crash in "KJS::ScopeChain::mark()" on www.posci.com
      	- fixed 3111145 - REGRESSION: reproducible crash in KJS hashtable lookup at time.com
      	- fixed 3110897 - REGRESSION: javascript crasher on http://bmwgallery.tripod.com/
      	- fixed 3109987 - REGRESSION: Reproducible crash in KJS ObjectImp at live365.com
      
      	Also:
      
      	- improved DEBUG_COLLECTOR mode a bit by never giving memory back
      	to the system.
      
              * kjs/collector.cpp:
              * kjs/context.h:
              * kjs/function.cpp:
              (ActivationImp::ActivationImp):
              (ActivationImp::mark):
              (ActivationImp::createArgumentsObject):
              * kjs/function.h:
              * kjs/internal.cpp:
              (ContextImp::ContextImp):
              (ContextImp::mark):
              * kjs/list.cpp:
              * kjs/list.h:
              * kjs/value.cpp:
              (Value::Value):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2883 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0e6b4f09
    • darin's avatar
      * kjs/property_map.cpp: · 13d73dc6
      darin authored
      	(PropertyMap::save): Look at the attributes the same way in the single hash entry
      	case as in the actual hash table case. Change the rule for which attributes to save
      	to "attributes that don't have the ReadOnly, DontEnum, or Function bit set".
              Also fix bug where saving an empty property map would leave the count set to the old value.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2882 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      13d73dc6
    • rjw's avatar
      JavaScriptCore · 3f05b75a
      rjw authored
              Remove debugging code.  Could be cause of performance regresssion.
              * kjs/nodes.cpp:
              (FunctionCallNode::evaluate):
      
              Restire attributes correctly.
              * kjs/property_map.cpp:
      
      WebKit        Only cache page if the load has completed.
              * WebView.subproj/WebFramePrivate.m:
              (-[WebFrame _setState:]):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2881 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3f05b75a
    • rjw's avatar
      JavaScriptCore · e67107bd
      rjw authored
              Use delete[] (not delete) operator to delete array.
      
              * kjs/property_map.cpp:
      
      WebBrowser
              Use cleaned up API to enable/disable page cache.
      
              * Debug/DebugUtilities.m:
              (-[BrowserDocument toggleBackForwardEnabled:]):
      
      WebCore
              Cleanup up leaking objects in page cache.
      
              * kwq/KWQKHTMLPart.mm:
              (KWQKHTMLPart::openURLFromPageCache):
              * kwq/WebCoreBridge.mm:
              (-[KWQPageState initWithDocument:DOM::URL:windowProperties:KJS::locationProperties:KJS::]):
              (-[KWQPageState dealloc]):
      
      WebKit
              Cleanup leaking objects in page cache.
              Cleaned up API a bit.
      
              * History.subproj/WebBackForwardList.h:
              * History.subproj/WebBackForwardList.m:
              (-[WebBackForwardList dealloc]):
              (+[WebBackForwardList setUsesPageCache:]):
              (+[WebBackForwardList usesPageCache]):
              (+[WebBackForwardList setPageCacheSize:]):
              (+[WebBackForwardList pageCacheSize]):
              * History.subproj/WebHistoryItem.h:
              * History.subproj/WebHistoryItem.m:
              (-[WebHistoryItem setHasPageCache:]):
              * WebCoreSupport.subproj/WebBridge.m:
              (-[WebBridge saveDocumentToPageCache:]):
              * WebKit.exp:
              * WebView.subproj/WebFramePrivate.m:
              (-[WebFrame _canCachePage]):
              (-[WebFrame _purgePageCache]):
              (-[WebFrame _setState:]):
              (-[WebFrame _continueLoadRequestAfterNavigationPolicy:request:]):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2874 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e67107bd
  18. 25 Nov, 2002 3 commits
    • rjw's avatar
      i Added a debug menu to turn back/forward cache on and off. · 683c446f
      rjw authored
              Off by default.  Use with discretion.  Still leaks like
              a sieve.  Useful to provide a sense of potential speed up.
      
              * Debug/DebugUtilities.m:
              (-[DebugUtilities createDebugMenu]):
              (-[BrowserDocument validate_showDOMTree:]):
              (-[BrowserDocument toggleBackForwardEnabled:]):
      
              Changes fro back/forward cache.
      
              * History.subproj/WebHistoryItem.h:
              * History.subproj/WebHistoryItem.m:
              (+[WebHistoryItem setUsePageCache:]):
              (+[WebHistoryItem usePageCache]):
              * WebCoreSupport.subproj/WebBridge.m:
              (-[WebBridge saveDocumentToPageCache:]):
              * WebView.subproj/WebFramePrivate.h:
              * WebView.subproj/WebFramePrivate.m:
              (-[WebFrame _detachFromParent]):
              (-[WebFrame _canCachePage]):
              (-[WebFrame _setState:]):
      
              Tweaked some debugging info.
      
              * khtml/xml/dom_docimpl.cpp:
              (DocumentImpl::~DocumentImpl):
              (DocumentImpl::detach):
      
              Added debugging info.  Fixed property map save function.
      
              * kjs/nodes.cpp:
              (FunctionCallNode::evaluate):
              * kjs/property_map.cpp:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2871 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      683c446f
    • rjw's avatar
      Changes for back/forward. Currently disabled. · b0eb2ac5
      rjw authored
              * History.subproj/WebHistoryItem.h:
              * History.subproj/WebHistoryItem.m:
              (-[WebHistoryItem dealloc]):
              (-[WebHistoryItem setPageCacheEnabled:]):
              (-[WebHistoryItem pageCache]):
              * Misc.subproj/WebKitLogging.h:
              * Misc.subproj/WebKitLogging.m:
              * WebCoreSupport.subproj/WebBridge.m:
              (-[WebBridge saveDocumentToPageCache:]):
              * WebView.subproj/WebDataSource.m:
              (-[WebDataSource startLoading]):
              * WebView.subproj/WebDataSourcePrivate.h:
              * WebView.subproj/WebDataSourcePrivate.m:
              (-[WebDataSource _startLoading:]):
              (-[WebDataSource _startLoading]):
              (-[WebDataSource _commitIfReady:]):
              (-[WebDataSource _commitIfReady]):
              (-[WebDataSource _setStoredInPageCache:]):
              (-[WebDataSource _storedInPageCache]):
              * WebView.subproj/WebFramePrivate.h:
              * WebView.subproj/WebFramePrivate.m:
              (-[WebFrame _transitionToCommitted:]):
              (-[WebFrame _canCachePage]):
              (-[WebFrame _purgePageCache]):
              (-[WebFrame _setState:]):
              (-[WebFrame _continueFragmentScrollAfterNavigationPolicy:request:]):
              (-[WebFrame _continueLoadRequestAfterNavigationPolicy:request:]):
      
              Changes for back/forward.  Currently disabled.
      
              * ForwardingHeaders/kjs/property_map.h: Added.
              * khtml/ecma/kjs_window.cpp:
              (Window::hasTimeouts):
              (WindowQObject::hasTimeouts):
              * khtml/ecma/kjs_window.h:
              * khtml/khtmlpart_p.h:
              * khtml/xml/dom_docimpl.cpp:
              (DocumentImpl::DocumentImpl):
              (DocumentImpl::detach):
              (DocumentImpl::inPageCache):
              (DocumentImpl::setInPageCache):
              * khtml/xml/dom_docimpl.h:
              * kwq/KWQKHTMLPart.h:
              * kwq/KWQKHTMLPart.mm:
              (KWQKHTMLPart::setView):
              (KWQKHTMLPart::userAgent):
              (KWQKHTMLPart::nextKeyViewForWidget):
              (KWQKHTMLPart::canCachePage):
              (KWQKHTMLPart::saveWindowProperties):
              (KWQKHTMLPart::saveLocationProperties):
              (KWQKHTMLPart::restoreWindowProperties):
              (KWQKHTMLPart::restoreLocationProperties):
              (KWQKHTMLPart::openURLFromPageCache):
              * kwq/WebCoreBridge.h:
              * kwq/WebCoreBridge.mm:
              (-[WebCoreBridge openURL:reload:headers:lastModified:pageCache:]):
              (-[WebCoreBridge saveDocumentToPageCache]):
              (-[WebCoreBridge canCachePage]):
              (attributedString):
              (-[KWQPageState initWithDocument:DOM::URL:windowProperties:KJS::locationProperties:KJS::]):
              (-[KWQPageState dealloc]):
              (-[KWQPageState DOM::]):
              (-[KWQPageState URL]):
              (-[KWQPageState KJS::]):
      
              Changes for back/forward.  Currently disabled.
      
              * kjs/property_map.cpp:
              * kjs/property_map.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2863 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b0eb2ac5
    • darin's avatar
      JavaScriptCore: · d4ca2268
      darin authored
              * kjs/property_map.cpp: Rearrange code a little bit and tweak indentation.
      	This might provide a tiny speedup because we don't look at the single entry
      	any more in cases where the _table pointer is non-0.
      
      WebKit:
      
      	- fixed a problem I discovered in testing where multiple identical bookmarks confuse us
      
              * Bookmarks.subproj/WebBookmarkList.m:
              (-[WebBookmarkList removeChild:]): Use indexOfObjectIdenticalTo: and removeObjectIdenticalTo:
      	instead of containsObject: and removeObject:.
              (-[WebBookmarkList insertChild:atIndex:]): Use indexOfObjectIdenticalTo: instead of
      	containsObject: in the assertion.
      
      WebBrowser:
      
              - fixed 3042781 -- slidey animation sometimes draws partial item behind overflow indicator
              - fixed 3090845 -- would be nice to be able to drop bookmarks into folders using the bookmark toolbar
              - fixed 3107422 -- bookmark in toolbar gets stuck highlighted if window is moved by the stacking code
              - fixed problem where you would get an overflow indicator even if there was room for the last bookmark
              - fixed problem where the cursor could change to an I-beam during a constrained drag
      
              * FavoriteButton.h: Add canAcceptDroppedBookmark, setHighlighted, and
      	acceptDroppedBookmark methods for use when doing a constrained drag that
      	drop items into folders. Also add a category on NSView to be used to pause
      	animation when over a button that will accept a drop.
              * FavoriteButton.m:
              (-[FavoriteButton registerForDraggedTypes]): Accept DraggedFavoriteButtonPboardType.
              (-[FavoriteButton initTrackingRect]): Add an observer so we update the tracking rect
      	when the window moves too. This fixes bug 3107422.
              (-[FavoriteButton bookmarksFromPasteboard:]): Added. Helper method that accepts drag
      	from DraggedFavoriteButtonPboardType as well as the other bookmark pasteboard types,
      	but only within the same superview.
              (-[FavoriteButton determineDragOperation:]): Call [self bookmarksFromPasteboard:]
      	instead of [WebBookmark bookmarksFromPasteboard].
              (-[FavoriteButton draggingEntered:]): Pause animation when we enter a button that can
      	accept a dropped bookmark. This makes sure that the button doesn't slide out from under
      	the mouse.
              (-[FavoriteButton draggingUpdated:]): Don't do any highlighting here because it's not
      	necessary.
              (-[FavoriteButton draggingExited:]): Resume the animation in case we paused it.
              (-[FavoriteButton performDragOperation:]): Call [self bookmarksFromPasteboard:]
      	instead of [WebBookmark bookmarksFromPasteboard]. Also resume the animation in case we
      	paused it.
              (-[FavoriteButton canAcceptDroppedBookmark]): Added. Returns YES if the bookmark's type
      	is WebBookmarkTypeList.
              (-[FavoriteButton setHighlighted:]): Added. Calls setHighlighted: on the button's cell.
              (-[FavoriteButton acceptDroppedBookmark:]): Added. Does the same work that performDragOperation
      	does for the case of moving a button within the same bar.
              (-[FavoriteButton _hitTest:dragTypes:]): Don't accept drags at the edges of the button.
      	This makes space between buttons so there's room to put new buttons between two old ones, even
      	if the old ones are both for folders.
              (-[NSView pauseAnimation]): Added. Passes the call up the superview chain.
              (-[NSView resumeAnimation]): Added. Passes the call up the superview chain.
      
              * FavoritesBar.m:
              (-[FavoritesBar maxButtonXWithoutClipIndicator]): Added. Leaves a margin,
      	currently 3 pixels.
              (-[FavoritesBar maxButtonXWithClipIndicator]): Added. Leaves a margin,
      	currently 3 pixels.
              (-[FavoritesBar maxButtonX]): Modified to call either maxButtonXWithoutClipIndicator
      	or maxButtonXWithClipIndicator depending on whether the clip indicator is showing.
              (-[FavoritesBar slideButtonsIntoPlace]): Slide buttons off the right side of the bar
      	if they are going to be clipped out. Allow the last button to go all the way to the
      	right, using the space that would otherwise be used by the clip indicator. Make the
      	clip indicator disappear if buttons are going to slide past it to the left or the right.
              (-[FavoritesBar _layOutButtons]): Include the smarts about leaving space for the
      	item to be dropped and about leaving out the currently dragged item that was formerly
      	only in slideButtonsIntoPlace. Also include the smarts about positioning mentioned
      	above, and do positioning here, rather than in _refreshButtons. To allow calling this
      	during constrained dragging, add the dragged item after adding all the other items.
              (-[FavoritesBar finishedSlidingAnimation:]): Added. Calls _layOutButtons. This is used
      	to make the clip indicator reappear in case slideButtonsIntoPlace made it disappear.
              (-[FavoritesBar addButtonForBookmark:]): Removed left edge parameter. This no method longer
              tries to position bookmarks at all.
              (-[FavoritesBar _refreshButtons]): Get rid of code that attempts to position the buttons.
      	We now do that in _layOutButtons.
              (-[FavoritesBar initWithView:]): Initialize _dragSourceIndexIfMoving to NSNotFound.
      	Make us the animation's delegate so we get a finishedSlidingAnimation:.
              (-[FavoritesBar performDragOperation:]): Check for drags within the favorites bar by
      	checking _dragSourceIndexIfMoving rather than looking for DraggedFavoriteButtonPboardType.
      	Also reset _dropIndex since _layOutButtons now looks at it.
              (-[FavoritesBar draggingEnded:]): Reset _dragSourceIndexIfMoving since _layOutButtons
      	now looks at it.
              (-[FavoritesBar reorderFavoriteButton:fromMouseDownEvent:]): Disable cursor rectangles and
      	set the cursor to the arrow cursor during the reorder process. Add hit testing so that the
      	constrained dragging can drop items in FavoriteButtons that are folders. Pause animation
      	when over such a FavoriteButton, and resume it when not over it.
              (-[FavoritesBar pauseAnimation]): Added.
              (-[FavoritesBar resumeAnimation]): Added.
      
              * FavoritesBarView.h: Add pauseAnimation and resumeAnimation methods to the delegate.
              * FavoritesBarView.m:
              (-[FavoritesBarView pauseAnimation]): Pass call on to the delegate.
              (-[FavoritesBarView resumeAnimation]): Ditto.
      
              * SlidingAnimation.h: Add delegate, setDelegate method, pause and resume methods, and
      	finishedSlidingAnimation: method for the delegate.
              * SlidingAnimation.m:
              (-[SlidingAnimation updateTimer]): Take the paused state into account, and also call the
      	finishedSlidingAnimation: method when the animation completes.
              (-[SlidingAnimation showNextFrame]): Simplify by using a call to updateTimer to do most
      	of the work.
              (-[SlidingAnimation setDelegate:]): Added. Just sets the delegate field.
              (-[SlidingAnimation pause]): Added. Just sets the paused state and calls updateTimer.
              (-[SlidingAnimation resume]): Added. Just sets the paused state and calls updateTimer.
      
      	- fixed a problem I discovered in testing where multiple identical bookmarks confuse us
      
              * BookmarksViewController.m:
              ([BookmarksViewController anyAncestorOfBookmark:inArray:]): Use indexOfObjectIdenticalTo:
      	instead of containsObject:, because we want to use identity on bookmarks, not equality
      	comparison.
      	([BookmarksViewController bookmarkOrAnyAncestor:inArray:]): Ditto.
      	([BookmarksViewController newContentItemWithTitle:URLString:type:positionIgnoresSelection:]): Ditto.
      	([BookmarksViewController sourceRowForBookmark:]): Ditto.
      	([BookmarksViewController outlineView:validateDrop:proposedItem:proposedChildIndex:]): Ditto.
      	([BookmarksViewController paste:]): Ditto.
      	([UndoRemoveInfo initWithBookmark:]): Ditto.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2861 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d4ca2268
  19. 24 Nov, 2002 4 commits
    • darin's avatar
      JavaScriptCore: · 8d450d34
      darin authored
      	- changed ScopeChain to not ref each item in the chain, and use
              marking instead; gains 1% on JavaScript iBench
      
              * kjs/context.h: Return chain by reference.
              * kjs/internal.cpp: (ContextImp::mark): Mark the scope chain.
              * kjs/interpreter.cpp: (Context::scopeChain): Return chain by reference.
              * kjs/interpreter.h: Make some Context methods inline.
              * kjs/nodes.cpp:
              (ThisNode::evaluate): Get at ContextImp directly.
              (ResolveNode::evaluateReference): Ditto.
              (VarDeclNode::evaluate): Ditto.
              (VarDeclNode::processVarDecls): Ditto.
              (FuncDeclNode::processFuncDecl): Pass ScopeChain directly to avoid copying.
              (FuncExprNode::evaluate): Ditto.
              * kjs/object.cpp: Make scope and setScope inline.
              * kjs/object.h: Make scope return a chain by reference. Make scope and
      	setScope both be inline. Use a normal ScopeChain instead of NoRefScopeChain
      	since they are now one and the same.
              * kjs/scope_chain.cpp: Remove all the code to ref and deref objects.
      	Merge NoRefScopeChain in with ScopeChain since they both work this way now.
              * kjs/scope_chain.h: Remove NoRefScopeChain and simplify the ref counts.
      	Make more functions inline.
      
      WebCore:
      
              * force-js-clean-timestamp: Touch for ScopeChain change.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2851 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8d450d34
    • mjs's avatar
      - fixed 3098356 - Hard hang on movie search at www.movietickets.com · c082d008
      mjs authored
              * kjs/string_object.cpp:
              (StringProtoFuncImp::call): When doing a regexp replacement that
      	results in an empty match, always move on to the next character
      	after doing the replacement. The previous code would hit an
      	infinite loop if an initial empty match was replaced with the
      	empty string.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c082d008
    • mjs's avatar
      - fixed 3095446 - Crash on AppleScript page due to very long argument list · 219ed0ac
      mjs authored
              * kjs/grammar.y: Don't try to construct the argument list in the
      	right order, since that blows out the parser stack.
      	* kjs/nodes.cpp:
              (ArgumentsNode::ArgumentsNode): Instead reverse the argument list
      	here.
              * kjs/nodes.h: Make ArgumentsNode a friend of ArgumentListNode.
              * kjs/grammar.cpp: Updated from grammar.y.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2847 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      219ed0ac
    • mjs's avatar
      - completed Darin's mostly-fix for 3037795 - Resource use · 1a9f113f
      mjs authored
      	increases when accessing very high index value in array
      
      	The two missing pieces were handling sparse properties when
      	shrinking the array, and when sorting. Thse are now both taken
      	care of.
      
              * kjs/array_instance.h:
              * kjs/array_object.cpp:
              (ArrayInstanceImp::put):
              (ArrayInstanceImp::deleteProperty):
              (ArrayInstanceImp::resizeStorage):
              (ArrayInstanceImp::setLength):
              (ArrayInstanceImp::sort):
              (ArrayInstanceImp::pushUndefinedObjectsToEnd):
              * kjs/identifier.h:
              * kjs/object.h:
              * kjs/property_map.cpp:
              * kjs/property_map.h:
              * kjs/reference_list.cpp:
              (ReferenceList::append):
              (ReferenceList::length):
              * kjs/reference_list.h:
              * kjs/ustring.cpp:
              (UString::toUInt32):
              * kjs/ustring.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      1a9f113f
  20. 23 Nov, 2002 2 commits
    • mjs's avatar
      Numerous collector changes for a net gain of 3% on JS ibench: · 5a7a3882
      mjs authored
      	- Replaced per-block bitmap with free list.
      	- Increased number of empty blocks kept around to 2.
      	- Doubled block size.
      	- When scanning heap in collector, skip scanning the rest of a
      	block as soon as we see as many live cells as the the number of
      	used cells it had originally.
      
      	Also the following collector changes unrelated to performance:
      
      	- Made constants `const int' instead of `static const int'.
      	- Miscellaneous code cleanup.
      
              * kjs/collector.cpp:
      
      	- Added debugging mode enabled by defining DEBUG_GC which asserts
      	when a destroyed ValueImp
      
              * kjs/internal.cpp:
              (ContextImp::mark):
              * kjs/value.cpp:
              (Value::Value):
              * kjs/value.h:
      	* kjs/config.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2845 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5a7a3882
    • darin's avatar
      JavaScriptCore: · ff399e06
      darin authored
      	- replaced List class with a vector rather than a linked list, changed it
      	to use a pool of instances instead of all the nodes allocated off of the
      	heap; gives 10% gain on iBench
      
              * kjs/list.h: Complete rewrite.
              * kjs/list.cpp: Ditto.
      
              * kjs/array_object.cpp: (compareWithCompareFunctionForQSort): Go back to
      	doing a clear and two appends here. Fast with the new list implementation.
      
              * kjs/collector.h: Remove _COLLECTOR hack and just make rootObjectClasses
      	return a const void *.
              * kjs/collector.cpp: Remove _COLLECTOR hack, and various other minor tweaks.
      
      WebCore:
      
              * khtml/ecma/kjs_window.cpp: Remove _COLLECTOR hack.
      
              * kwq/WebCoreJavaScript.h:
              * kwq/WebCoreJavaScript.mm:
              (+[WebCoreJavaScript rootObjectClasses]):
      	Update for name change -- root object classes, not all live object classes.
      
              * force-js-clean-timestamp: Make sure we don't have more build problems.
      
      WebKit:
      
              * Misc.subproj/WebCoreStatistics.h:
              * Misc.subproj/WebCoreStatistics.m:
              (+[WebCoreStatistics javaScriptRootObjectClasses]):
      	Update for name change -- root object classes, not all live object classes.
      
      WebBrowser:
      
              * Debug/CacheController.m: (-[CacheController refreshJavaScriptStatisticsMatrix]):
      	Update for name change -- root object classes, not all live object classes.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2843 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ff399e06
  21. 22 Nov, 2002 4 commits
    • darin's avatar
      - prepare to reimplement KJS::List; move to its own file, add statistics · 6afbb079
      darin authored
              * kjs/function_object.cpp: (FunctionProtoFuncImp::call): Use new copyTail()
      	function rather than copy() and removeFirst().
      
              * kjs/identifier.cpp: Add statistics, off by default.
              * kjs/property_map.cpp: Add statistics, off by default.
      
              * kjs/list.cpp: Added. Moved code here. To be rewritten.
              * kjs/list.h: Added. Moved interface here. To be rewritten.
      
              * kjs/types.cpp: Removed.
              * kjs/types.h: Now just an empty header that includes other headers.
      
              * JavaScriptCore.pbproj/project.pbxproj: Add new files, rearrange.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2834 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      6afbb079
    • mjs's avatar
      - reduce cell size to 56 bytes from 64, now that nearly all · db3db8e9
      mjs authored
      	objects fit in that size. .5% speed gain and probably some
      	footprint gain.
      
              * kjs/collector.cpp: Change CELL_SIZE from 64 to 56.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2825 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      db3db8e9
    • darin's avatar
      JavaScriptCore: · 7b978750
      darin authored
      	- change ScopeChain to be a singly linked list shares tails, gives 11% gain on iBench
      
              * kjs/context.h:
              (ContextImp::pushScope): Make inline, use push instead of prepend, and pass imp pointer.
              (ContextImp::popScope): Make inline, use pop instead of removeFirst.
              * kjs/function.cpp: (DeclaredFunctionImp::DeclaredFunctionImp): No need to copy.
              * kjs/function_object.cpp: (FunctionObjectImp::construct): Use push instead of
      	prepend, and pass imp pointer.
              * kjs/internal.cpp: (ContextImp::ContextImp): Use clear, push instead of prepend,
      	and pass imp pointers.
              * kjs/nodes.cpp: (ResolveNode::evaluateReference): Use isEmpty, pop, and top instead
      	of ScopeChainIterator.
              * kjs/object.h: Change _scope to be a NoRefScopeChain.
              * kjs/object.cpp: No need to initialize _scope any more, since it's not a NoRefScopeChain.
      
              * kjs/scope_chain.h: Rewrite, different implementation and interface.
              * kjs/scope_chain.cpp: More of the same.
      
      WebCore:
      
              * khtml/ecma/kjs_dom.cpp: (DOMNode::pushEventHandlerScope): Change to push handlers
      	on an existing scope chain rather than returning one. Name change too.
              * khtml/ecma/kjs_dom.h: More of the same.
              * khtml/ecma/kjs_html.cpp: (KJS::HTMLElement::pushEventHandlerScope): And here.
              * khtml/ecma/kjs_html.h: And here.
      
              * khtml/ecma/kjs_events.cpp: (JSEventListener::handleEvent): Use the pushEventHandlerScope
      	function, and also don't worry about optimizing the "no change" case, because that already
      	works pretty efficiently.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2824 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7b978750
    • mjs's avatar
      - a simple change for .4% gain on ibench - instead of unmarking · f67a9641
      mjs authored
      	all objects at the start of collection, instead unmark as part of
      	the sweep phase
      
              * kjs/collector.cpp:
              (Collector::collect): Remove separate unmarking pass and instead
      	unmark the objects that don't get collected during the sweep
      	phase.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2822 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f67a9641
  22. 21 Nov, 2002 1 commit
    • darin's avatar
      top level: · 36614a72
      darin authored
              * Site/Internal/Design/CFURL.rtf: Added.
      
      Tools:
      
              * Scripts/last-update: Added. Script for Trey that tells you when
      	you last did a cvs update, based on most-recently updated ChangeLog.
      
      JavaScriptCore:
      
      	- stop garbage collecting the ActivationImp objects, gets 3% on iBench
      	- pave the way to separate the argument lists from scope chains
      
              * kjs/context.h: Added. Moved ContextImp here so it can use things defined
      	in function.h
      
              * kjs/scope_chain.h: Added. Starting as a copy of List, to be improved.
              * kjs/scope_chain.cpp: Added. Starting as a copy of List, to be improved.
      
              * JavaScriptCore.pbproj/project.pbxproj: Rearranged things, added context.h.
      
              * kjs/function.cpp:
              (FunctionImp::call): Pass InterpreterImp, not ExecState, to ContextImp.
              (DeclaredFunctionImp::DeclaredFunctionImp): List -> ScopeChain.
              (ActivationImp::createArgumentsObject): ArgumentList -> List.
              (GlobalFuncImp::call): Pass InterpreterImp, not an ExecState, to ContextImp.
              * kjs/function.h: List -> ScopeChain.
              * kjs/function_object.cpp: (FunctionObjectImp::construct): List -> ScopeChain.
              * kjs/internal.cpp:
              (ContextImp::ContextImp): Set the context in the interpreter.
              (ContextImp::~ContextImp): Set the context in the interpreter to the caller.
              (ContextImp::mark): Mark all the activation objects.
              (InterpreterImp::InterpreterImp): Initialize context to 0.
              (InterpreterImp::mark): Mark the top context.
              (InterpreterImp::evaluate): Pass InterpreterImp to ContextImp.
              * kjs/internal.h: Move ContextImp to its own header. Add setContext to InterpreterImp.
              * kjs/interpreter.cpp: (Context::scopeChain): List -> ScopeChain.
              * kjs/interpreter.h: List -> ScopeChain.
              * kjs/nodes.cpp:
              (ResolveNode::evaluateReference): List -> ScopeChain.
              (FuncDeclNode::processFuncDecl): List -> ScopeChain.
              (FuncExprNode::evaluate): List -> ScopeChain.
              * kjs/object.cpp: List -> ScopeChain.
              * kjs/object.h: List -> ScopeChain.
      
              * kjs/types.h: Remove needsMarking features from List.
              * kjs/types.cpp: Ditto.
      
      WebCore:
      
              * khtml/ecma/kjs_dom.cpp: (DOMNode::eventHandlerScope): List -> ScopeChain.
              * khtml/ecma/kjs_dom.h: List -> ScopeChain.
              * khtml/ecma/kjs_events.cpp: (JSEventListener::handleEvent): List -> ScopeChain.
              * khtml/ecma/kjs_html.cpp: (KJS::HTMLElement::eventHandlerScope): List -> ScopeChain.
              * khtml/ecma/kjs_html.h: List -> ScopeChain.
      
              * force-js-clean-timestamp: Not sure this is required, but better safe than sorry.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2821 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      36614a72