LGTM
On Tue, Sep 9, 2008 at 9:55 AM, <[EMAIL PROTECTED]> wrote:
>
> Author: [EMAIL PROTECTED]
> Date: Tue Sep 9 00:54:30 2008
> New Revision: 225
>
> Added:
> changes/[EMAIL PROTECTED]/internal-object-fields/
>
> changes/[EMAIL PROTECTED]/internal-object-fields/bleeding_edge/
> - copied from r224, /branches/bleeding_edge/
> Modified:
>
> changes/[EMAIL PROTECTED]/internal-object-fields/bleeding_edge/src/api.cc
>
> changes/[EMAIL
> PROTECTED]/internal-object-fields/bleeding_edge/test/cctest/test-api.cc
>
> Log:
> Fixed issue 54, under some circumstances internal field count set on
> object templates did not take effect.
>
>
>
> Modified:
> changes/[EMAIL PROTECTED]/internal-object-fields/bleeding_edge/src/api.cc
> ==============================================================================
> --- /branches/bleeding_edge/src/api.cc (original)
> +++
> changes/[EMAIL PROTECTED]/internal-object-fields/bleeding_edge/src/api.cc
> Tue Sep 9 00:54:30 2008
> @@ -979,6 +979,12 @@
> "Invalid internal field count")) {
> return;
> }
> + if (value > 0) {
> + // The internal field count is set by the constructor function's
> + // construct code, so we ensure that there is a constructor
> + // function to do the setting.
> + EnsureConstructor(this);
> + }
>
> Utils::OpenHandle(this)->set_internal_field_count(i::Smi::FromInt(value));
> }
>
>
> Modified:
> changes/[EMAIL
> PROTECTED]/internal-object-fields/bleeding_edge/test/cctest/test-api.cc
> ==============================================================================
> --- /branches/bleeding_edge/test/cctest/test-api.cc (original)
> +++
> changes/[EMAIL
> PROTECTED]/internal-object-fields/bleeding_edge/test/cctest/test-api.cc
> Tue Sep 9 00:54:30 2008
> @@ -4825,3 +4825,21 @@
> inner->Exit();
> }
> }
> +
> +
> +// Regression test for issue 54, object templates with internal fields
> +// but no accessors or interceptors did not get their internal field
> +// count set on instances.
> +THREADED_TEST(Regress54) {
> + v8::HandleScope outer;
> + LocalContext context;
> + static v8::Persistent<v8::ObjectTemplate> templ;
> + if (templ.IsEmpty()) {
> + v8::HandleScope inner;
> + v8::Handle<v8::ObjectTemplate> local = v8::ObjectTemplate::New();
> + local->SetInternalFieldCount(1);
> + templ = v8::Persistent<v8::ObjectTemplate>::New(inner.Close(local));
> + }
> + v8::Handle<v8::Object> result = templ->NewInstance();
> + CHECK_EQ(1, result->InternalFieldCount());
> +}
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---