Reviewers: Mads Ager, Description: Improve property access with keys that can always be converted into a symbol string.
Please review this at http://codereview.chromium.org/6670115/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/heap.h M src/ic.cc Index: src/heap.h =================================================================== --- src/heap.h (revision 7451) +++ src/heap.h (working copy) @@ -155,6 +155,7 @@ V(name_symbol, "name") \ V(number_symbol, "number") \ V(Number_symbol, "Number") \ + V(nan_symbol, "NaN") \ V(RegExp_symbol, "RegExp") \ V(source_symbol, "source") \ V(global_symbol, "global") \ Index: src/ic.cc =================================================================== --- src/ic.cc (revision 7451) +++ src/ic.cc (working copy) @@ -1143,6 +1143,15 @@ MaybeObject* KeyedLoadIC::Load(State state, Handle<Object> object, Handle<Object> key) { + // Check for values that can be converted into a symbol. + HandleScope scope(isolate()); + if (key->IsHeapNumber() && + isnan(HeapNumber::cast(*key)->value())) { + key = isolate()->factory()->nan_symbol(); + } else if (key->IsUndefined()) { + key = isolate()->factory()->undefined_symbol(); + } + if (key->IsSymbol()) { Handle<String> name = Handle<String>::cast(key); -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
