{"push_id":760761673,"size":2,"distinct_size":2,"ref":"refs/heads/master","head":"877560e07f0189a06e1fbc8221876eadaee2ac1d","before":"e9cde1575716257dc8f54544b0d8eb61e7d99137","commits":[{"sha":"e9da3497387f947b863945d49160d2163ac6fded","author":{"email":"a82ad16292c9f3b890b7b13c336ff95f6bd02623@webkit.org","name":"commit-queue@webkit.org"},"message":"Fix possible EGL and GLX makeCurrent problem of GLPlatformContext and GLPlatformSurface\nhttps://bugs.webkit.org/show_bug.cgi?id=147695\n\nPatch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-17\nReviewed by Gyuyoung Kim.\n\nGLPLatformContext::makeCurrent is implemented to do no-op when it thinks, comparing with a static\nvariable declared in GLPlatformContext.cpp, there is no changes. This can lead to not-working\nmakeCurrent when other part of codes, e.g., Cairo-gl, change EGL or GLX current context by calling\nsomething like eglMakeCurrent. So modify GLPLatformContext::makeCurrent to use the return value of\neglGetCurrentContext or glXGetCurrentContext as a comparing target rather than a static variable.\nIn addition, GLPlatformSurface::isCurrentDrawable is also modified to use eglGetCurrentSurface or\nglXGetCurrentDrawable rather than a static variable.\n\nThere are no tests because already existing GL tests will verify this change.\n\n* platform/graphics/opengl/GLPlatformContext.cpp:\n(WebCore::GLPlatformContext::makeCurrent):\n(WebCore::GLPlatformContext::releaseCurrent):\n(WebCore::GLCurrentContextWrapper::GLCurrentContextWrapper): Deleted.\n(WebCore::GLPlatformContext::~GLPlatformContext): Deleted.\n(WebCore::GLPlatformContext::isCurrentContext): Deleted.\n(WebCore::GLPlatformContext::getCurrent): Deleted.\n* platform/graphics/opengl/GLPlatformContext.h:\n* platform/graphics/opengl/GLPlatformSurface.cpp:\n(WebCore::GLPlatformSurface::~GLPlatformSurface): Deleted.\n(WebCore::GLPlatformSurface::isCurrentDrawable): Deleted.\n(WebCore::GLPlatformSurface::onMakeCurrent): Deleted.\n(WebCore::GLPlatformSurface::destroy): Deleted.\n* platform/graphics/opengl/GLPlatformSurface.h:\n* platform/graphics/surfaces/egl/EGLSurface.cpp:\n(WebCore::EGLTransportSurface::isCurrentDrawable):\n(WebCore::EGLOffScreenSurface::isCurrentDrawable):\n* platform/graphics/surfaces/egl/EGLSurface.h:\n* platform/graphics/surfaces/glx/GLXSurface.cpp:\n(WebCore::GLXTransportSurface::isCurrentContext):\n(WebCore::GLXOffScreenSurface::isCurrentContext):\n* platform/graphics/surfaces/glx/GLXSurface.h:\n\ngit-svn-id: http://svn.webkit.org/repository/webkit/trunk@188522 268f45cc-cd09-0410-ab3c-d52691b4dbfc","distinct":true,"url":"https://api.github.com/repos/paul99/webkit-mips/commits/e9da3497387f947b863945d49160d2163ac6fded"},{"sha":"877560e07f0189a06e1fbc8221876eadaee2ac1d","author":{"email":"083d44ce61b1f946a3aa6fbd704954e0195d0658@apple.com","name":"cdumez@apple.com"},"message":"Accessing HTMLCollection.length is slow\nhttps://bugs.webkit.org/show_bug.cgi?id=148039\n\nReviewed by Ryosuke Niwa.\n\nSource/WebCore:\n\nAccessing was HTMLCollection.length is slow, much slower than accessing\nNodeList.length. The reason is that HTMLCollection's bindings code is\nslightly different. In particular, HTMLCollection's GetOwnPropertySlot()\nhas an extra check to see if the PropertyName is available on the\nprototype before doing:\n1. Check static properties (getStaticValueSlotEntryWithoutCaching())\n2. Indexed getter\n3. Named getter\n4. Check own properties (getStaticValueSlot())\n\nThis means that everytime the JavaScript was accessing HTMLCollection.length\nor HTMLCollection[index], we would check if length / index was present on the\nprototype before calling HTMLCollection::length() / HTMLCollection::item(i).\nThe prototype check is fairly expensive and was making traversing an\nHTMLCollection much slower than traversing a NodeList.\n\nIn this patch, I refactored GetOwnPropertySlot() to do:\n1. Indexed getter\n2. Check static properties\n3. Prototype check\n4. Named getter\n5. Check own properties\n\nThis way, the prototype check is no longer slowing down HTMLCollection\ntraversal. What matters is that we do the prototype check *before* calling\nthe named getter as we don't want named properties to mask properties on\nthe prototype.\n\nNote that this patch takes the minimal approach to get the performance win\nwhile limiting the risk of breakage. Indeed, the current behavior still\ndoes not match the WebIDL specification, which seems to indicate the order\nshould be:\n1. Indexed getter\n2. Check static / own properties\n3. Prototype check\n4. Named getter\n\nOnce we match the specification, I believe we will be able to drop the\nJSC::HasImpureGetOwnPropertySlot flag on HTMLCollection, which currently\nmakes HTMLCollection.length not cacheable. Right now, I believe we still\nneed this flag because named properties can still mask own properties.\n\nPerformance:\n/Bindings/childNodes-traversal: 5597.54 +/- 0.7% -> 5572.10 +/- 0.4%\n/Bindings/children-traversal: 3852.61 +/- 0.3% -> 4731.03 +/- 0.3% (~23% better)\n\nTest: fast/dom/htmlcollection-getownproperty.html\n\n* bindings/scripts/CodeGeneratorJS.pm:\n(GenerateGetOwnPropertySlotBody):\n* bindings/scripts/test/JS/JSTestEventTarget.cpp:\n(WebCore::JSTestEventTarget::getOwnPropertySlot):\n\nLayoutTests:\n\n* fast/dom/htmlcollection-getownproperty-expected.txt: Added.\n* fast/dom/htmlcollection-getownproperty.html: Added.\nAdd new layout test covering the expected behavior of HTMLCollection's\n[[GetOwnProperty]]. A few checks are still failing as we don't entirely\nmatch the specification yet.\n\n* fast/dom/wrapper-classes-expected.txt:\nRebaseline test as a few more checks are now passing.\n\ngit-svn-id: http://svn.webkit.org/repository/webkit/trunk@188523 268f45cc-cd09-0410-ab3c-d52691b4dbfc","distinct":true,"url":"https://api.github.com/repos/paul99/webkit-mips/commits/877560e07f0189a06e1fbc8221876eadaee2ac1d"}]}