Revision: 7454
Author: [email protected]
Date: Thu Mar 31 03:33:45 2011
Log: Improve property access with keys that can always be converted
into a symbol string.
Review URL: http://codereview.chromium.org/6670115
http://code.google.com/p/v8/source/detail?r=7454
Modified:
/branches/bleeding_edge/src/heap.h
/branches/bleeding_edge/src/ic.cc
=======================================
--- /branches/bleeding_edge/src/heap.h Wed Mar 30 08:17:10 2011
+++ /branches/bleeding_edge/src/heap.h Thu Mar 31 03:33:45 2011
@@ -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") \
=======================================
--- /branches/bleeding_edge/src/ic.cc Wed Mar 30 07:17:39 2011
+++ /branches/bleeding_edge/src/ic.cc Thu Mar 31 03:33:45 2011
@@ -1143,6 +1143,16 @@
MaybeObject* KeyedLoadIC::Load(State state,
Handle<Object> object,
Handle<Object> key) {
+ // Check for values that can be converted into a symbol.
+ // TODO(1295): Remove this code.
+ 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