User:SadEagle: Difference between revisions

From KDE TechBase
Line 18: Line 18:
== KJS and KJS/Frostbyte ==
== KJS and KJS/Frostbyte ==
* Idea: split off the hash table stuff off from JSObject
* Idea: split off the hash table stuff off from JSObject
* <s>Value for global code, used in domts at least</s>
** Probably not workable since the prototype even of pure objects
** <s>Regression SunSpider?</s>
can have hashtable properties. Object.prototype doesn't, however, so
** <s>Performance eval?</s>
we can bypass a lot of stuff. Properties there can only be DontEnum or
* <s>return-within-finally</s>
default, too.  
** <s>Needs testing.</s>
* Debugger, again
* Debugger, again
** Mostly works, but stepping through ifs is funny --- need to figure out why
** Mostly works, but stepping through ifs is funny --- need to figure out why
Line 36: Line 35:
** seems slower, actually
** seems slower, actually
* Idea, part 2: use the above to setup immediates in the same place as registers. This can simplify the IR a lot and shrink the loop considerably. Also means there is no longer architecture differences in 32-bit and 64-bit needs at the IR level, and the IR gets smaller.
* Idea, part 2: use the above to setup immediates in the same place as registers. This can simplify the IR a lot and shrink the loop considerably. Also means there is no longer architecture differences in 32-bit and 64-bit needs at the IR level, and the IR gets smaller.
** Of course, recursion more expensive. But worth a try?
* BUG: need to flush lazy local copies at function call (or do I do it already?)
* BUG: need to flush lazy local copies at function call (or do I do it already?)
* Alternative/conflict with below: if using a single stack for parameter passing/direct calls, we want to always do stack allocation and then do a deferred tearoff when needed --- this may actually be visible based on refcount  
* Alternative/conflict with below: if using a single stack for parameter passing/direct calls, we want to always do stack allocation and then do a deferred tearoff when needed --- this may actually be visible based on refcount  
Line 45: Line 45:
** tearoffs done.
** tearoffs done.
** With eval operator, if I keep track of lexical depth, may be  able to directly route to global object, etc. Needs thought.
** With eval operator, if I keep track of lexical depth, may be  able to directly route to global object, etc. Needs thought.
* <s>Easy one: custom StringImp::toString that takes care of object and prototype checking, etc. to avoid the extra lookup.</s>
* Fix const
* const
* obscure sequencing thing
* obscure sequencing thing
** seems like an another regression on the TC though --- exception precision?
** seems like an another regression on the TC though --- exception precision?
Line 54: Line 53:
** Also probably double-allocator for 32-bit.
** Also probably double-allocator for 32-bit.
* Do a review pass over API to make sure not BC leaks.
* Do a review pass over API to make sure not BC leaks.
* <s>Solaris stack support for ade</s>
* Check {{Bug|108538}}
* Double-check global handling, synchronize with JSC
* Double-check global handling, synchronize with JSC
* Consider using packed immediate/register bits. The key observation  is that locals are read from an array, too, so we could do something  like:   
* Consider using packed immediate/register bits. The key observation  is that locals are read from an array, too, so we could do something  like:   

Revision as of 19:45, 7 August 2008

Misc stuff

nspluginviewer

  • Debug recent regressions
  • FP flash 10 workaround
  • Fix exiting on host exit, double-check some more to make sure no process leaks
    • serviceOwnerChanged
    • dfaure: See Kded::slotApplicationRemoved for an example; (the possibly unintuitive bit is "if (oldOwner.isEmpty() || !newOwner.isEmpty()) return;"

Canvas

  • Update for createImageData, range changes
  • Update error handling?
  • setFillColor(double r, double g, double b, double a) extension

KJS and KJS/Frostbyte

  • Idea: split off the hash table stuff off from JSObject
    • Probably not workable since the prototype even of pure objects

can have hashtable properties. Object.prototype doesn't, however, so we can bypass a lot of stuff. Properties there can only be DontEnum or default, too.

  • Debugger, again
    • Mostly works, but stepping through ifs is funny --- need to figure out why
  • Unbreak CPU guard.
  • See if we can keep track of the current function body in the parser. Use that

to help track of things like presence of "arguments"

    • With this and eval operator, may be able to get rid of an explicit activation and scope chain entry...
  • Type system changes:
    • Make int32 immediates apply to int32 values --- add a notion of exact embedding
    • Add a notion of value/number dual-use in registers --- use DontMark bit to distinguish which it is
  • Idea: have a template for activation in FunctionImp, and then just memcpy, minus the params, on startup
    • still need to setup functions separately, though.
    • seems slower, actually
  • Idea, part 2: use the above to setup immediates in the same place as registers. This can simplify the IR a lot and shrink the loop considerably. Also means there is no longer architecture differences in 32-bit and 64-bit needs at the IR level, and the IR gets smaller.
    • Of course, recursion more expensive. But worth a try?
  • BUG: need to flush lazy local copies at function call (or do I do it already?)
  • Alternative/conflict with below: if using a single stack for parameter passing/direct calls, we want to always do stack allocation and then do a deferred tearoff when needed --- this may actually be visible based on refcount

of the scope chain, except when manually done.

    • That's actually done, but I am not sure of how to best combine it with other stuff
  • Do segmented/nonmoveable stack allocation --- just have a list of pieces, and work on them one at a time. Older ones can be recycled. This means we never have to refetch the locals array.Also avoids the WARNING WARNING WARNING part.
  • Do deferred tearoffs.
  • eval operator/eval tearoffs
    • tearoffs done.
    • With eval operator, if I keep track of lexical depth, may be able to directly route to global object, etc. Needs thought.
  • Fix const
  • obscure sequencing thing
    • seems like an another regression on the TC though --- exception precision?
  • merge in the API, etc., from trunk
  • Do the List performance changes
  • Do IR dialectes for 32- and 64-bit -- e.g. PointerCell
    • Also probably double-allocator for 32-bit.
  • Do a review pass over API to make sure not BC leaks.
  • Double-check global handling, synchronize with JSC
  • Consider using packed immediate/register bits. The key observation is that locals are read from an array, too, so we could do something like:
  arg0 = argsType[(fullOp >> 16) & 1][offsetVal];
  • Crazy idea: when going to proper CFG construction, do we even have to linearize?

KHTML - Short-term stuff

  • Don't forget the clip:rect(auto, 123, ...) stuff
  • Don't forget the leak fixes
    • consult with Maciej and Micha
  • There was a change in getElementsByClassName case behavior
  • Do floating-point font size computation
    • Or rather e-mail it to kfm-devel
  • Fix the damn image-load-event-thing in iframes
  • Go through the canvas testcase again
  • Fix noscript on DOM ops. Should it just display:none? I guess I should check HTML5
  • Important, don't know how to fix: bug #163359
  • Need to debug various editors
  • bug #162745 -- for CSS, we need to strip whitespace from URLs. Ditto for object, I'd think. Perhaps completeURL should do it.
  • For objects, empty URLs should probably embed still -- but when? CompleteURL on empty seems like a culprit for the self-embed bugs.
  • Inherit params
  • bug #161196 --- option value --- should be super-quick
  • JS Redirects
  • Iframe stuff
  • Fix the paranoia affecting(?) flickr(?) upload bug #126974
  • The XHTML parser mode
  • Check the XML parser -- QXML workaround might not be needed, weird whitespace handling and recovery stuff
  • Check the implicit node stuff. Only the form one seems correct to me, and that can be done w/o wasting a bit at top-level.
  • the libthai thing
  • bug #104358
  • XHR:
  • bug #103250 --- KWallet and pages with textareas.

khtmlImLoad

  • Allan's foreign loader patch
  • Scale animation provider for GIF --- bug #162614
  • Animation stoping
  • Better pre-blend cache?
  • FredrikH performance goodness?

KHTML - Long term stuff

  • Fix adblock performance. At the very least, special case

substring matching to not use QRegExp.

Other long term stuff

  • Async loading of nspluginviewer somehow?

Other kdelibs stuff

  • Figure out why the maxProcess stuff in kio_http doesn't seem to work.