James Cook | 1 Dec 2011 01:08
Picon
Favicon

Re: Re: PSA: easy way to clean up your strings

The file browser strings appear to be set with a macro also, which is
probably why the tool can't find them:

#define SET_STRING(ns, id) \
  dict->SetString(#id, l10n_util::GetStringUTF16(ns##_##id))

SET_STRING(IDS_FILE_BROWSER, ROOT_DIRECTORY_LABEL);

http://codesearch.google.com/#OAMlx_jo-ck/src/chrome/browser/extensions/extension_file_browser_private_api.cc&exact_package=chromium&q=IDS_FILE_BROWSER&type=cs&l=1520

James

On Tue, Nov 29, 2011 at 9:56 PM, Yusuke Sato <yusukes <at> google.com> wrote:
> Yes. I think (most of the) IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_* are still
> in use. It seems that they are detected as unused since the IDs are
> generated by the following macro to make the IDs less than 80 chars:
>
>   #define IDS_MOZC(suffic) \
>     IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_##suffix
>
> I'll remove the macro if needed.
>
> Thanks,
> Yusuke
>
> On Wed, Nov 30, 2011 at 2:46 PM, Zelidrag Hornung <zelidrag <at> chromium.org>
> wrote:
>>
>> Yes, they are used for sure but I believe they are referenced via #define
>> macro instead of directly. I suspect IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_*
(Continue reading)

Peter Kasting | 1 Dec 2011 01:14

Re: Re: PSA: easy way to clean up your strings

On Wed, Nov 30, 2011 at 4:08 PM, James Cook <jamescook <at> google.com> wrote:
The file browser strings appear to be set with a macro also, which is
probably why the tool can't find them:

#define SET_STRING(ns, id) \
 dict->SetString(#id, l10n_util::GetStringUTF16(ns##_##id))

SET_STRING(IDS_FILE_BROWSER, ROOT_DIRECTORY_LABEL);

Tue, Nov 29, 2011 at 9:56 PM, Yusuke Sato <yusukes <at> google.com> wrote:
> Yes. I think (most of the) IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_* are still
> in use. It seems that they are detected as unused since the IDs are
> generated by the following macro to make the IDs less than 80 chars:
>
>   #define IDS_MOZC(suffic) \
>     IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_##suffix

FWIW, I'd prefer to remove the macros in both these cases.  Macros cause issues for a lot of tools -- this script is one, but various IDEs have issues with debugging or finding symbol references through macro chains -- and in these cases the gain in readability is honestly not that large.  My rule of thumb is to avoid macros except in the rare cases where they're truly critical.

Note that in the MOZC case we could probably find a way to shorten the string identifiers without creating name conflicts.

PK

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
Fady Samuel | 1 Dec 2011 01:41

Unable to link on Windows


Hi all,

I've been trying to diagnose this issue all day with no luck, why is Chromium failing to link on Windows? Am I doing something wrong or was the build broken all day?

Here's some of the error spew:

29>chrome_main_delegate.obj : error LNK2019: unresolved external symbol "public: static void __cdecl content::RenderProcessHost::set_run_renderer_in_process(bool)" (?set_run_renderer_in_process <at> RenderProcessHost <at> content <at> <at> SAX_N <at> Z) referenced in function "public: virtual void __thiscall ChromeMainDelegate::PreSandboxStartup(void)" (?PreSandboxStartup <at> ChromeMainDelegate <at> <at> UAEXXZ)
29>browser.lib(chrome_content_browser_client.obj) : error LNK2019: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ) referenced in function "public: virtual void __thiscall chrome::ChromeContentBrowserClient::SiteInstanceGotProcess(class SiteInstance *)" (?SiteInstanceGotProcess <at> ChromeContentBrowserClient <at> chrome <at> <at> UAEXPAVSiteInstance <at> <at> <at> Z)
29>browser.lib(render_view_host_delegate_helper.obj) : error LNK2001: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ)
29>browser.lib(extension_message_service.obj) : error LNK2001: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ)
29>browser.lib(tracking_synchronizer.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(visitedlink_event_listener.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(chrome_plugin_message_filter.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(prerender_manager.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(extension_message_service.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(web_cache_manager.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(chrome_content_browser_client.obj) : error LNK2019: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z) referenced in function "public: virtual void __thiscall chrome::ChromeContentBrowserClient::AppendExtraCommandLineSwitches(class CommandLine *,int)" (?AppendExtraCommandLineSwitches <at> ChromeContentBrowserClient <at> chrome <at> <at> UAEXPAVCommandLine <at> <at> H <at> Z)
29>browser.lib(spellcheck_message_filter.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)

Thanks,

Fady

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
John Abd-El-Malek | 1 Dec 2011 01:57

Re: Unable to link on Windows

have you tried a clean build?

On Wed, Nov 30, 2011 at 4:41 PM, Fady Samuel <fsamuel <at> chromium.org> wrote:

Hi all,

I've been trying to diagnose this issue all day with no luck, why is Chromium failing to link on Windows? Am I doing something wrong or was the build broken all day?

Here's some of the error spew:

29>chrome_main_delegate.obj : error LNK2019: unresolved external symbol "public: static void __cdecl content::RenderProcessHost::set_run_renderer_in_process(bool)" (?set_run_renderer_in_process <at> RenderProcessHost <at> content <at> <at> SAX_N <at> Z) referenced in function "public: virtual void __thiscall ChromeMainDelegate::PreSandboxStartup(void)" (?PreSandboxStartup <at> ChromeMainDelegate <at> <at> UAEXXZ)
29>browser.lib(chrome_content_browser_client.obj) : error LNK2019: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ) referenced in function "public: virtual void __thiscall chrome::ChromeContentBrowserClient::SiteInstanceGotProcess(class SiteInstance *)" (?SiteInstanceGotProcess <at> ChromeContentBrowserClient <at> chrome <at> <at> UAEXPAVSiteInstance <at> <at> <at> Z)
29>browser.lib(render_view_host_delegate_helper.obj) : error LNK2001: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ)
29>browser.lib(extension_message_service.obj) : error LNK2001: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ)
29>browser.lib(tracking_synchronizer.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(visitedlink_event_listener.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(chrome_plugin_message_filter.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(prerender_manager.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(extension_message_service.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(web_cache_manager.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(chrome_content_browser_client.obj) : error LNK2019: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z) referenced in function "public: virtual void __thiscall chrome::ChromeContentBrowserClient::AppendExtraCommandLineSwitches(class CommandLine *,int)" (?AppendExtraCommandLineSwitches <at> ChromeContentBrowserClient <at> chrome <at> <at> UAEXPAVCommandLine <at> <at> H <at> Z)
29>browser.lib(spellcheck_message_filter.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)

Thanks,

Fady

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
John Abd-El-Malek | 1 Dec 2011 01:58

Re: Unable to link on Windows

(and to be clear, clean on windows means deleting build\Debug, not clean through Visual Studio which doesn't remove everything)

On Wed, Nov 30, 2011 at 4:57 PM, John Abd-El-Malek <jam <at> chromium.org> wrote:
have you tried a clean build?


On Wed, Nov 30, 2011 at 4:41 PM, Fady Samuel <fsamuel <at> chromium.org> wrote:

Hi all,

I've been trying to diagnose this issue all day with no luck, why is Chromium failing to link on Windows? Am I doing something wrong or was the build broken all day?

Here's some of the error spew:

29>chrome_main_delegate.obj : error LNK2019: unresolved external symbol "public: static void __cdecl content::RenderProcessHost::set_run_renderer_in_process(bool)" (?set_run_renderer_in_process <at> RenderProcessHost <at> content <at> <at> SAX_N <at> Z) referenced in function "public: virtual void __thiscall ChromeMainDelegate::PreSandboxStartup(void)" (?PreSandboxStartup <at> ChromeMainDelegate <at> <at> UAEXXZ)
29>browser.lib(chrome_content_browser_client.obj) : error LNK2019: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ) referenced in function "public: virtual void __thiscall chrome::ChromeContentBrowserClient::SiteInstanceGotProcess(class SiteInstance *)" (?SiteInstanceGotProcess <at> ChromeContentBrowserClient <at> chrome <at> <at> UAEXPAVSiteInstance <at> <at> <at> Z)
29>browser.lib(render_view_host_delegate_helper.obj) : error LNK2001: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ)
29>browser.lib(extension_message_service.obj) : error LNK2001: unresolved external symbol "public: class content::RenderProcessHost * __thiscall SiteInstance::GetProcess(void)" (?GetProcess <at> SiteInstance <at> <at> QAEPAVRenderProcessHost <at> content <at> <at> XZ)
29>browser.lib(tracking_synchronizer.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(visitedlink_event_listener.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(chrome_plugin_message_filter.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(prerender_manager.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(extension_message_service.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(web_cache_manager.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)
29>browser.lib(chrome_content_browser_client.obj) : error LNK2019: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z) referenced in function "public: virtual void __thiscall chrome::ChromeContentBrowserClient::AppendExtraCommandLineSwitches(class CommandLine *,int)" (?AppendExtraCommandLineSwitches <at> ChromeContentBrowserClient <at> chrome <at> <at> UAEXPAVCommandLine <at> <at> H <at> Z)
29>browser.lib(spellcheck_message_filter.obj) : error LNK2001: unresolved external symbol "public: static class content::RenderProcessHost * __cdecl content::RenderProcessHost::FromID(int)" (?FromID <at> RenderProcessHost <at> content <at> <at> SAPAV12 <at> H <at> Z)

Thanks,

Fady

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev


--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
Marc-Antoine Ruel | 1 Dec 2011 02:25
Gravatar

Re: Re: PSA: easy way to clean up your strings

I agree with Peter otherwise it makes grepping much harder.


Also note that the 80 cols rule is somewhat flexible. If you look at CheckLongLine() in depot_tools/presubmit_canned_checks.py, you'll see that it has a hard line limit of 50% more (120 cols) and it will enforce only the hard limit (instead of the soft limit of 80 cols) in these cases:

- Absurdly long symbol 66% of soft limit: 53 chars.
- Many # lines like #include, #define, etc.
- Lines with urls

M-A

Le 30 novembre 2011 19:14, Peter Kasting <pkasting <at> chromium.org> a écrit :
On Wed, Nov 30, 2011 at 4:08 PM, James Cook <jamescook <at> google.com> wrote:
The file browser strings appear to be set with a macro also, which is
probably why the tool can't find them:

#define SET_STRING(ns, id) \
 dict->SetString(#id, l10n_util::GetStringUTF16(ns##_##id))

SET_STRING(IDS_FILE_BROWSER, ROOT_DIRECTORY_LABEL);

Tue, Nov 29, 2011 at 9:56 PM, Yusuke Sato <yusukes <at> google.com> wrote:
> Yes. I think (most of the) IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_* are still
> in use. It seems that they are detected as unused since the IDs are
> generated by the following macro to make the IDs less than 80 chars:
>
>   #define IDS_MOZC(suffic) \
>     IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_##suffix

FWIW, I'd prefer to remove the macros in both these cases.  Macros cause issues for a lot of tools -- this script is one, but various IDEs have issues with debugging or finding symbol references through macro chains -- and in these cases the gain in readability is honestly not that large.  My rule of thumb is to avoid macros except in the rare cases where they're truly critical.

Note that in the MOZC case we could probably find a way to shorten the string identifiers without creating name conflicts.

PK

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
Denis Lagno | 1 Dec 2011 04:06

Re: Re: PSA: easy way to clean up your strings


On Nov 30, 2011 4:15 PM, "Peter Kasting" <pkasting <at> chromium.org> wrote:
> FWIW, I'd prefer to remove the macros in both these cases.  Macros cause issues for a lot of tools -- this script is one, but various IDEs have issues with debugging or finding symbol references through macro chains -- and in these cases the gain in readability is honestly not that large.  My rule of thumb is to avoid macros except in the rare cases where they're truly critical.

There is number of places in chromium where x-macros technique is used (for example net_errors_list).  It has the same problem that resulting identifiers are not greppable, though this technique is quite convenient and widely used.

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
Marc-Antoine Ruel | 1 Dec 2011 15:21
Gravatar

Single Writer Multiple Readers lock

During a code review, I was considering proposing to use a shared cache of immutable data and guarding the cache with a SWMR lock. Surprisingly, I haven't seen an implementation inside src/base/synchronization. Did I miss it?


SWMR locks are useful for shared data where the ratio between writes/reads is below 10% like for caches. In my particular case, the data is immutable so the ratio is even better than that since it's append-only. Using a standard lock increases the contention significantly without any benefit. Using a pure append-only structure is tricky in C++, the STL doesn't provide anything near that with a fast lookup.

Any pointers? There is an implementation in third_party/tcmalloc/chromium/src/base/simple_mutex.h but it's only partial, e.g. it's falling back to a standard CriticalSection on windows (!). It's especially surprising from a memory heap implementation.

M-A

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
Dmitry Vyukov | 1 Dec 2011 15:31
Picon
Favicon

Re: Single Writer Multiple Readers lock

On Thu, Dec 1, 2011 at 6:21 PM, Marc-Antoine Ruel <maruel <at> chromium.org> wrote:
During a code review, I was considering proposing to use a shared cache of immutable data and guarding the cache with a SWMR lock. Surprisingly, I haven't seen an implementation inside src/base/synchronization. Did I miss it?

SWMR locks are useful for shared data where the ratio between writes/reads is below 10% like for caches. In my particular case, the data is immutable so the ratio is even better than that since it's append-only. Using a standard lock increases the contention significantly without any benefit.

Have you benchmarked it? Reader-writer locks are frequently slower than simple spin locks.

 
Using a pure append-only structure is tricky in C++, the STL doesn't provide anything near that with a fast lookup.

Any pointers? There is an implementation in third_party/tcmalloc/chromium/src/base/simple_mutex.h but it's only partial, e.g. it's falling back to a standard CriticalSection on windows (!). It's especially surprising from a memory heap implementation.

M-A

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
Marc-Antoine Ruel | 1 Dec 2011 15:37
Picon
Favicon
Gravatar

Re: Single Writer Multiple Readers lock

Le 1 décembre 2011 09:31, Dmitry Vyukov <dvyukov <at> google.com> a écrit :
On Thu, Dec 1, 2011 at 6:21 PM, Marc-Antoine Ruel <maruel <at> chromium.org> wrote:
During a code review, I was considering proposing to use a shared cache of immutable data and guarding the cache with a SWMR lock. Surprisingly, I haven't seen an implementation inside src/base/synchronization. Did I miss it?

SWMR locks are useful for shared data where the ratio between writes/reads is below 10% like for caches. In my particular case, the data is immutable so the ratio is even better than that since it's append-only. Using a standard lock increases the contention significantly without any benefit.

Have you benchmarked it? Reader-writer locks are frequently slower than simple spin locks.

It's hard to benchmark a non-implementation. :)

M-A
 
  
Using a pure append-only structure is tricky in C++, the STL doesn't provide anything near that with a fast lookup.

Any pointers? There is an implementation in third_party/tcmalloc/chromium/src/base/simple_mutex.h but it's only partial, e.g. it's falling back to a standard CriticalSection on windows (!). It's especially surprising from a memory heap implementation.

M-A

--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev


--
Chromium Developers mailing list: chromium-dev <at> chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev

Gmane