[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] [SCM] Gnash branch, master, updated. bd098819ba1eb9e4649488b7b40a89e903996e57,
Sandro Santilli <=