gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, master, updated. bd098819ba1eb9e46494


From: Sandro Santilli
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. bd098819ba1eb9e4649488b7b40a89e903996e57
Date: Fri, 10 Sep 2010 04:08:59 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, master has been updated
       via  bd098819ba1eb9e4649488b7b40a89e903996e57 (commit)
       via  394e4dc6179442afcfefc8cf1703f34661f95a96 (commit)
       via  4d19d5285c53af0707a6c5b853648a3ae5f10bf1 (commit)
       via  b87b9b35e3ab9722d8c93cc94c854f135258d3a5 (commit)
      from  0dd6b94867ec42c4b8a5897cd12f4711d0dcc42f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=bd098819ba1eb9e4649488b7b40a89e903996e57


commit bd098819ba1eb9e4649488b7b40a89e903996e57
Author: Sandro Santilli <address@hidden>
Date:   Fri Sep 10 06:04:35 2010 +0200

    fix typo, add instructions about lowercase named strings

diff --git a/libcore/namedStrings.h b/libcore/namedStrings.h
index 4892b53..7378f33 100644
--- a/libcore/namedStrings.h
+++ b/libcore/namedStrings.h
@@ -46,9 +46,16 @@ class string_table; // Forward
 /// be used if you know their key value already.
 namespace NSV {
 
+/// All known lower-case names are grouped at the beginning
+/// of the enum, followed by INTERNAL_HIGHEST_LOWERCASE.
+/// WARNING: putting mixed-case names before
+///          INTERNAL_HIGHEST_LOWERCASE introduces bugs !
+/// (putting lower-case names after INTERNAL_HIGHEST_LOWERCASE
+///  is fine, except for performance)
+///
 enum NamedStrings {
         PROP_A = 1,
-        LOWERCASE,
+        PROP_ALIGN,
         PROP_ARGUMENTS,
         PROP_B,
         PROP_BOLD,

http://git.savannah.gnu.org/cgit//commit/?id=394e4dc6179442afcfefc8cf1703f34661f95a96


commit 394e4dc6179442afcfefc8cf1703f34661f95a96
Author: Sandro Santilli <address@hidden>
Date:   Fri Sep 10 05:49:26 2010 +0200

    Use named string for "arguments"

diff --git a/libcore/Function.cpp b/libcore/Function.cpp
index 439bd99..43fa97e 100644
--- a/libcore/Function.cpp
+++ b/libcore/Function.cpp
@@ -133,10 +133,9 @@ Function::call(const fn_call& fn)
 
     // Add 'arguments'
     as_object* args = getGlobal(fn).createArray();
-    string_table& st = getStringTable(fn);
 
     // Put 'arguments' in a local var.
-    setLocal(cf, st.find("arguments"), getArguments(*this, *args, fn, caller));
+    setLocal(cf, NSV::PROP_ARGUMENTS, getArguments(*this, *args, fn, caller));
 
        // Execute the actions.
        // Do this in a try block to proper drop the pushed call frame 
diff --git a/libcore/Function2.cpp b/libcore/Function2.cpp
index b11476e..9563556 100644
--- a/libcore/Function2.cpp
+++ b/libcore/Function2.cpp
@@ -130,9 +130,8 @@ Function2::call(const fn_call& fn)
             ++current_reg;
         }
         else {
-            string_table& st = getStringTable(fn);
             // Put 'arguments' in a local var.
-            setLocal(cf, st.find("arguments"), args);
+            setLocal(cf, NSV::PROP_ARGUMENTS, args);
         }
 
     }

http://git.savannah.gnu.org/cgit//commit/?id=4d19d5285c53af0707a6c5b853648a3ae5f10bf1


commit 4d19d5285c53af0707a6c5b853648a3ae5f10bf1
Author: Sandro Santilli <address@hidden>
Date:   Fri Sep 10 05:48:14 2010 +0200

    Order namedStrings so that known-to-be-lowercased are grouped at the 
beginning; add a placeholder for last lowercase key and register it with 
string_table;
    add a namedString for "arguments"

diff --git a/libcore/namedStrings.cpp b/libcore/namedStrings.cpp
index a2e0d7d..d43aa40 100644
--- a/libcore/namedStrings.cpp
+++ b/libcore/namedStrings.cpp
@@ -31,6 +31,7 @@ static const string_table::svt preload_names[] =
     string_table::svt( "a", NSV::PROP_A ),
     string_table::svt( "addListener", NSV::PROP_ADD_LISTENER ),
     string_table::svt( "align", NSV::PROP_ALIGN ),
+    string_table::svt( "arguments", NSV::PROP_ARGUMENTS ),
     string_table::svt( "ASnative", NSV::PROP_AS_NATIVE ),
     string_table::svt( "ASSetPropFlags", NSV::PROP_AS_SET_PROP_FLAGS ),
     string_table::svt( "_alpha", NSV::PROP_uALPHA ),
@@ -243,13 +244,15 @@ static const string_table::svt preload_names[] =
     string_table::svt( "adobe.utils", NSV::NS_ADOBE_UTILS ),
     string_table::svt( "", NSV::INTERNAL_TYPE ),
     string_table::svt( "", NSV::INTERNAL_STACK_PARENT ),
-    string_table::svt( "", NSV::INTERNAL_INTERFACES )
+    string_table::svt( "", NSV::INTERNAL_INTERFACES ),
+    string_table::svt( "", NSV::INTERNAL_HIGHEST_LOWERCASE )
 };
 
 void
 loadStrings(string_table& table)
 {
     table.insert_group(preload_names, arraySize(preload_names));
+    table.setHighestKnownLowercase(NSV::INTERNAL_HIGHEST_LOWERCASE);
 }
 
 } // namespace NSV
diff --git a/libcore/namedStrings.h b/libcore/namedStrings.h
index 728a49c..4892b53 100644
--- a/libcore/namedStrings.h
+++ b/libcore/namedStrings.h
@@ -47,7 +47,143 @@ class string_table; // Forward
 namespace NSV {
 
 enum NamedStrings {
-        CLASS_ACCESSIBILITY = 1,
+        PROP_A = 1,
+        LOWERCASE,
+        PROP_ARGUMENTS,
+        PROP_B,
+        PROP_BOLD,
+        PROP_C,
+        PROP_CALLEE,
+        PROP_CALLER,
+        PROP_COLOR,
+        PROP_CONCAT,
+        PROP_CONSTRUCTOR,
+        PROP_D,
+        PROP_DATA,
+        PROP_DECODE,
+        PROP_E,
+        PROP_ENABLED,
+        PROP_ESCAPE,
+        PROP_G,
+        PROP_H,
+        PROP_HEIGHT,
+        PROP_INDENT,
+        PROP_ITALIC,
+        PROP_LEADING,
+        PROP_LEFT_MARGIN,
+        PROP_LENGTH,
+        PROP_LOADED,
+        PROP_METH,
+        PROP_PROTOTYPE,
+        PROP_PUSH,
+        PROP_R,
+        PROP_SIZE,
+        PROP_SPLICE,
+        PROP_STATUS,
+        PROP_SUPER,
+        PROP_TARGET,
+        PROP_TEXT,
+        PROP_THIS,
+        PROP_TX,
+        PROP_TY,
+        PROP_uALPHA,
+        PROP_uCURRENTFRAME,
+        PROP_uDROPTARGET,
+        PROP_uFOCUSRECT,
+        PROP_uFRAMESLOADED,
+        PROP_uGLOBAL,
+        PROP_uHEIGHT,
+        PROP_uHIGHQUALITY,
+        PROP_uLISTENERS,
+        PROP_uNAME,
+        PROP_UNDERLINE,
+        PROP_uPARENT,
+        PROP_uQUALITY,
+        PROP_uROOT,
+        PROP_uROTATION,
+        PROP_uSOUNDBUFTIME,
+        PROP_uTARGET,
+        PROP_uTOTALFRAMES,
+        PROP_uuCONSTRUCTORuu,
+        PROP_uuPROTOuu,
+        PROP_uuRESOLVE,
+        PROP_uURL,
+        PROP_uVISIBLE,
+        PROP_uWIDTH,
+        PROP_uX,
+        PROP_uXMOUSE,
+        PROP_uXSCALE,
+        PROP_uY,
+        PROP_uYMOUSE,
+        PROP_uYSCALE,
+        PROP_W,
+        PROP_WIDTH,
+        PROP_X,
+        PROP_Y,
+        INTERNAL_HIGHEST_LOWERCASE,
+
+        PROP_ADD_LISTENER,
+        PROP_AS_NATIVE,
+        PROP_AS_SET_PROP_FLAGS,
+        PROP_BLOCK_INDENT,
+        PROP_BROADCAST_MESSAGE,
+        PROP_BULLET,
+        PROP_uBYTES_TOTAL,
+        PROP_uBYTES_LOADED,
+        PROP_CONTENT_TYPE,
+        PROP_FOCUS_ENABLED,
+        PROP_HTML_TEXT,
+        PROP_MATRIX_TYPE,
+        PROP_ON_CLOSE,
+        PROP_ON_CONNECT,
+        PROP_ON_CONSTRUCT,
+        PROP_ON_DATA,
+        PROP_ON_DRAG_OUT,
+        PROP_ON_DRAG_OVER,
+        PROP_ON_ENTER_FRAME,
+        PROP_ON_FULLSCREEN,
+        PROP_ON_INITIALIZE,
+        PROP_ON_KEY_DOWN,
+        PROP_ON_KEY_PRESS,
+        PROP_ON_KEY_UP,
+        PROP_ON_KILL_FOCUS,
+        PROP_ON_LOAD,
+        PROP_ON_LOAD_ERROR,
+        PROP_ON_LOAD_INIT,
+        PROP_ON_LOAD_PROGRESS,
+        PROP_ON_LOAD_START,
+        PROP_ON_META_DATA,
+        PROP_ON_MOUSE_DOWN,
+        PROP_ON_MOUSE_MOVE,
+        PROP_ON_MOUSE_UP,
+        PROP_ON_PRESS,
+        PROP_ON_RELEASE,
+        PROP_ON_RELEASE_OUTSIDE,
+        PROP_ON_RESIZE,
+        PROP_ON_RESULT,
+        PROP_ON_ROLL_OUT,
+        PROP_ON_ROLL_OVER,
+        PROP_ON_SELECT,
+        PROP_ON_SET_FOCUS,
+        PROP_ON_SOUND_COMPLETE,
+        PROP_ON_STATUS,
+        PROP_ON_TIMER,
+        PROP_ON_UNLOAD,
+        PROP_ON_XML,
+        PROP_PARSE_XML,
+        PROP_REMOVE_LISTENER,
+        PROP_RIGHT_MARGIN,
+        PROP_SCALE_MODE,
+        PROP_TEXT_COLOR,
+        PROP_TEXT_HEIGHT,
+        PROP_TEXT_WIDTH,
+        PROP_TO_LOWER_CASE,
+        PROP_TO_STRING,
+        PROP_uCUSTOM_HEADERS,
+        PROP_USEHANDCURSOR,
+        PROP_VALUE_OF,
+        PROP_ON_SYNC,
+        CLASS_ACCESSIBILITY,
         CLASS_ANTIALIASTYPE,
         CLASS_ARRAY,
         CLASS_AS_BROADCASTER,
@@ -126,139 +262,6 @@ enum NamedStrings {
         NS_FLASH_UI,
         NS_FLASH_UTILS,
         NS_FLASH_XML,
-        PROP_A,
-        PROP_ADD_LISTENER,
-        PROP_ALIGN,
-        PROP_AS_NATIVE,
-        PROP_AS_SET_PROP_FLAGS,
-        PROP_B,
-        PROP_BLOCK_INDENT,
-        PROP_BOLD,
-        PROP_BROADCAST_MESSAGE,
-        PROP_BULLET,
-        PROP_uBYTES_TOTAL,
-        PROP_uBYTES_LOADED,
-        PROP_C,
-        PROP_CALLEE,
-        PROP_CALLER,
-        PROP_COLOR,
-        PROP_CONCAT,
-        PROP_CONSTRUCTOR,
-        PROP_CONTENT_TYPE,
-        PROP_D,
-        PROP_DATA,
-        PROP_DECODE,
-        PROP_E,
-        PROP_ENABLED,
-        PROP_ESCAPE,
-        PROP_FOCUS_ENABLED,
-        PROP_G,
-        PROP_H,
-        PROP_HEIGHT,
-        PROP_HTML_TEXT,
-        PROP_INDENT,
-        PROP_ITALIC,
-        PROP_LEADING,
-        PROP_LEFT_MARGIN,
-        PROP_LENGTH,
-        PROP_LOADED,
-        PROP_MATRIX_TYPE,
-        PROP_METH,
-        PROP_ON_CLOSE,
-        PROP_ON_CONNECT,
-        PROP_ON_CONSTRUCT,
-        PROP_ON_DATA,
-        PROP_ON_DRAG_OUT,
-        PROP_ON_DRAG_OVER,
-        PROP_ON_ENTER_FRAME,
-        PROP_ON_FULLSCREEN,
-        PROP_ON_INITIALIZE,
-        PROP_ON_KEY_DOWN,
-        PROP_ON_KEY_PRESS,
-        PROP_ON_KEY_UP,
-        PROP_ON_KILL_FOCUS,
-        PROP_ON_LOAD,
-        PROP_ON_LOAD_ERROR,
-        PROP_ON_LOAD_INIT,
-        PROP_ON_LOAD_PROGRESS,
-        PROP_ON_LOAD_START,
-        PROP_ON_META_DATA,
-        PROP_ON_MOUSE_DOWN,
-        PROP_ON_MOUSE_MOVE,
-        PROP_ON_MOUSE_UP,
-        PROP_ON_PRESS,
-        PROP_ON_RELEASE,
-        PROP_ON_RELEASE_OUTSIDE,
-        PROP_ON_RESIZE,
-        PROP_ON_RESULT,
-        PROP_ON_ROLL_OUT,
-        PROP_ON_ROLL_OVER,
-        PROP_ON_SELECT,
-        PROP_ON_SET_FOCUS,
-        PROP_ON_SOUND_COMPLETE,
-        PROP_ON_STATUS,
-        PROP_ON_TIMER,
-        PROP_ON_UNLOAD,
-        PROP_ON_XML,
-        PROP_PARSE_XML,
-        PROP_PROTOTYPE,
-        PROP_PUSH,
-        PROP_R,
-        PROP_REMOVE_LISTENER,
-        PROP_RIGHT_MARGIN,
-        PROP_SCALE_MODE,
-        PROP_SIZE,
-        PROP_SPLICE,
-        PROP_STATUS,
-        PROP_SUPER,
-        PROP_TARGET,
-        PROP_TEXT,
-        PROP_TEXT_COLOR,
-        PROP_TEXT_HEIGHT,
-        PROP_TEXT_WIDTH,
-        PROP_THIS,
-        PROP_TO_LOWER_CASE,
-        PROP_TO_STRING,
-        PROP_TX,
-        PROP_TY,
-        PROP_uALPHA,
-        PROP_uCURRENTFRAME,
-        PROP_uCUSTOM_HEADERS,
-        PROP_uDROPTARGET,
-        PROP_uFOCUSRECT,
-        PROP_uFRAMESLOADED,
-        PROP_uGLOBAL,
-        PROP_uHEIGHT,
-        PROP_uHIGHQUALITY,
-        PROP_uQUALITY,
-        PROP_uLISTENERS,
-        PROP_uNAME,
-        PROP_UNDERLINE,
-        PROP_uPARENT,
-        PROP_uROOT,
-        PROP_uROTATION,
-        PROP_USEHANDCURSOR,
-        PROP_uSOUNDBUFTIME,
-        PROP_uTARGET,
-        PROP_uTOTALFRAMES,
-        PROP_uuCONSTRUCTORuu,
-        PROP_uuPROTOuu,
-        PROP_uuRESOLVE,
-        PROP_uURL,
-        PROP_uVISIBLE,
-        PROP_uWIDTH,
-        PROP_uX,
-        PROP_uXMOUSE,
-        PROP_uXSCALE,
-        PROP_uY,
-        PROP_uYMOUSE,
-        PROP_uYSCALE,
-        PROP_VALUE_OF,
-        PROP_W,
-        PROP_WIDTH,
-        PROP_X,
-        PROP_Y,
-        PROP_ON_SYNC,
         INTERNAL_INTERFACES,
         INTERNAL_STACK_PARENT, // Any public property is unsafe
         INTERNAL_TYPE // The type name

http://git.savannah.gnu.org/cgit//commit/?id=b87b9b35e3ab9722d8c93cc94c854f135258d3a5


commit b87b9b35e3ab9722d8c93cc94c854f135258d3a5
Author: Sandro Santilli <address@hidden>
Date:   Fri Sep 10 05:42:12 2010 +0200

    Add the concept of 'highest known lowercase key' to string_table to reduce 
cost of ::noCase calls.

diff --git a/libbase/string_table.cpp b/libbase/string_table.cpp
index 2014fb9..cb6690e 100644
--- a/libbase/string_table.cpp
+++ b/libbase/string_table.cpp
@@ -21,6 +21,7 @@
 #include <boost/algorithm/string/case_conv.hpp>
 
 //#define DEBUG_STRING_TABLE 1
+//#define GNASH_PARANOIA_LEVEL 3
 
 #ifdef DEBUG_STRING_TABLE
 # include <iostream>
@@ -161,19 +162,40 @@ string_table::already_locked_insert(const std::string& 
to_insert)
     return ret;
 }
 
+void
+string_table::setHighestKnownLowercase(key k)
+{
+    _highestKnownLowercase = k;
+}
+
 string_table::key
 string_table::noCase(key a) const
 {
 #ifdef DEBUG_STRING_TABLE
     static KeyCaseLookup kcl(this);
-    kcl.check(a);
 #endif // DEBUG_STRING_TABLE
 
-    // The empty string (key 0) is equal to its lowercase version..
-    if ( ! a ) return a;
+    // Avoid checking keys known to be lowercase
+    if ( a <= _highestKnownLowercase ) {
+#if GNASH_PARANOIA_LEVEL > 2
+        assert(_caseTable.find(a) == _caseTable.end());
+#endif
+        return a;
+    }
+
+// MOVE this block around for special needs
+#ifdef DEBUG_STRING_TABLE
+    kcl.check(a);
+#endif 
+
+    // TODO: an even/odd based rule to tell what's lowercase already
+    //       would speed things up even for unknown 
+    //       strings.
 
     std::map<key, key>::const_iterator i = _caseTable.find(a);
-    return i == _caseTable.end() ? a : i->second;
+    if ( i != _caseTable.end() ) return i->second;
+
+    return a;
 }
 
 bool
diff --git a/libbase/string_table.h b/libbase/string_table.h
index df4d766..da23e2f 100644
--- a/libbase/string_table.h
+++ b/libbase/string_table.h
@@ -130,7 +130,8 @@ public:
        /// Construct the empty string_table
        string_table()
         :
-               _highestKey(0)
+               _highestKey(0),
+               _highestKnownLowercase(0)
        {}
 
     /// Return a caseless equivalent of the passed key.
@@ -140,6 +141,10 @@ public:
     ///             same key will be returned.
     key noCase(key a) const;
 
+    /// Set the highest key value known to correspond to a lowercase name
+    //
+    void setHighestKnownLowercase(std::size_t k);
+
 private:
 
        table _table;
@@ -148,6 +153,7 @@ private:
        std::size_t _highestKey;
 
     std::map<key, key> _caseTable;
+    key _highestKnownLowercase;
 };
 
 /// Check whether two keys are equivalent

-----------------------------------------------------------------------

Summary of changes:
 libbase/string_table.cpp |   30 +++++-
 libbase/string_table.h   |    8 +-
 libcore/Function.cpp     |    3 +-
 libcore/Function2.cpp    |    3 +-
 libcore/namedStrings.cpp |    5 +-
 libcore/namedStrings.h   |  278 ++++++++++++++++++++++++----------------------
 6 files changed, 183 insertions(+), 144 deletions(-)


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]