Index: src/stub-cache.h |
diff --git a/src/stub-cache.h b/src/stub-cache.h |
index 3a98f544c755bed4441e3049768cfec3fb026b34..cf750d5140e61d6240286606bd96bd0956206b96 100644 |
--- a/src/stub-cache.h |
+++ b/src/stub-cache.h |
@@ -67,7 +67,7 @@ class SCTableReference { |
class StubCache { |
public: |
struct Entry { |
- String* key; |
+ Name* key; |
Code* value; |
Map* map; |
}; |
@@ -77,36 +77,36 @@ class StubCache { |
// Computes the right stub matching. Inserts the result in the |
// cache before returning. This might compile a stub if needed. |
- Handle<Code> ComputeLoadNonexistent(Handle<String> name, |
+ Handle<Code> ComputeLoadNonexistent(Handle<Name> name, |
Handle<JSObject> object); |
- Handle<Code> ComputeLoadField(Handle<String> name, |
+ Handle<Code> ComputeLoadField(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
PropertyIndex field_index); |
- Handle<Code> ComputeLoadCallback(Handle<String> name, |
+ Handle<Code> ComputeLoadCallback(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<AccessorInfo> callback); |
- Handle<Code> ComputeLoadViaGetter(Handle<String> name, |
+ Handle<Code> ComputeLoadViaGetter(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<JSFunction> getter); |
- Handle<Code> ComputeLoadConstant(Handle<String> name, |
+ Handle<Code> ComputeLoadConstant(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<JSFunction> value); |
- Handle<Code> ComputeLoadInterceptor(Handle<String> name, |
+ Handle<Code> ComputeLoadInterceptor(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder); |
Handle<Code> ComputeLoadNormal(); |
- Handle<Code> ComputeLoadGlobal(Handle<String> name, |
+ Handle<Code> ComputeLoadGlobal(Handle<Name> name, |
Handle<JSObject> object, |
Handle<GlobalObject> holder, |
Handle<JSGlobalPropertyCell> cell, |
@@ -114,28 +114,28 @@ class StubCache { |
// --- |
- Handle<Code> ComputeKeyedLoadField(Handle<String> name, |
+ Handle<Code> ComputeKeyedLoadField(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
PropertyIndex field_index); |
- Handle<Code> ComputeKeyedLoadCallback(Handle<String> name, |
+ Handle<Code> ComputeKeyedLoadCallback(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<AccessorInfo> callback); |
- Handle<Code> ComputeKeyedLoadConstant(Handle<String> name, |
+ Handle<Code> ComputeKeyedLoadConstant(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<JSFunction> value); |
- Handle<Code> ComputeKeyedLoadInterceptor(Handle<String> name, |
+ Handle<Code> ComputeKeyedLoadInterceptor(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder); |
// --- |
- Handle<Code> ComputeStoreField(Handle<String> name, |
+ Handle<Code> ComputeStoreField(Handle<Name> name, |
Handle<JSObject> object, |
int field_index, |
Handle<Map> transition, |
@@ -143,30 +143,30 @@ class StubCache { |
Handle<Code> ComputeStoreNormal(StrictModeFlag strict_mode); |
- Handle<Code> ComputeStoreGlobal(Handle<String> name, |
+ Handle<Code> ComputeStoreGlobal(Handle<Name> name, |
Handle<GlobalObject> object, |
Handle<JSGlobalPropertyCell> cell, |
StrictModeFlag strict_mode); |
- Handle<Code> ComputeStoreCallback(Handle<String> name, |
+ Handle<Code> ComputeStoreCallback(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<AccessorInfo> callback, |
StrictModeFlag strict_mode); |
- Handle<Code> ComputeStoreViaSetter(Handle<String> name, |
+ Handle<Code> ComputeStoreViaSetter(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<JSFunction> setter, |
StrictModeFlag strict_mode); |
- Handle<Code> ComputeStoreInterceptor(Handle<String> name, |
+ Handle<Code> ComputeStoreInterceptor(Handle<Name> name, |
Handle<JSObject> object, |
StrictModeFlag strict_mode); |
// --- |
- Handle<Code> ComputeKeyedStoreField(Handle<String> name, |
+ Handle<Code> ComputeKeyedStoreField(Handle<Name> name, |
Handle<JSObject> object, |
int field_index, |
Handle<Map> transition, |
@@ -184,7 +184,7 @@ class StubCache { |
Handle<Code> ComputeCallField(int argc, |
Code::Kind, |
Code::ExtraICState extra_state, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<Object> object, |
Handle<JSObject> holder, |
PropertyIndex index); |
@@ -192,7 +192,7 @@ class StubCache { |
Handle<Code> ComputeCallConstant(int argc, |
Code::Kind, |
Code::ExtraICState extra_state, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<Object> object, |
Handle<JSObject> holder, |
Handle<JSFunction> function); |
@@ -200,14 +200,14 @@ class StubCache { |
Handle<Code> ComputeCallInterceptor(int argc, |
Code::Kind, |
Code::ExtraICState extra_state, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<Object> object, |
Handle<JSObject> holder); |
Handle<Code> ComputeCallGlobal(int argc, |
Code::Kind, |
Code::ExtraICState extra_state, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<JSObject> object, |
Handle<GlobalObject> holder, |
Handle<JSGlobalPropertyCell> cell, |
@@ -254,14 +254,14 @@ class StubCache { |
#endif |
// Update cache for entry hash(name, map). |
- Code* Set(String* name, Map* map, Code* code); |
+ Code* Set(Name* name, Map* map, Code* code); |
// Clear the lookup table (@ mark compact collection). |
void Clear(); |
// Collect all maps that match the name and flags. |
void CollectMatchingMaps(SmallMapList* types, |
- String* name, |
+ Name* name, |
Code::Flags flags, |
Handle<Context> native_context, |
Zone* zone); |
@@ -332,12 +332,12 @@ class StubCache { |
// Hash algorithm for the primary table. This algorithm is replicated in |
// assembler for every architecture. Returns an index into the table that |
// is scaled by 1 << kHeapObjectTagSize. |
- static int PrimaryOffset(String* name, Code::Flags flags, Map* map) { |
+ static int PrimaryOffset(Name* name, Code::Flags flags, Map* map) { |
// This works well because the heap object tag size and the hash |
// shift are equal. Shifting down the length field to get the |
// hash code would effectively throw away two bits of the hash |
// code. |
- STATIC_ASSERT(kHeapObjectTagSize == String::kHashShift); |
+ STATIC_ASSERT(kHeapObjectTagSize == Name::kHashShift); |
// Compute the hash of the name (use entire hash field). |
ASSERT(name->HasHashCode()); |
uint32_t field = name->hash_field(); |
@@ -358,25 +358,25 @@ class StubCache { |
// Hash algorithm for the secondary table. This algorithm is replicated in |
// assembler for every architecture. Returns an index into the table that |
// is scaled by 1 << kHeapObjectTagSize. |
- static int SecondaryOffset(String* name, Code::Flags flags, int seed) { |
+ static int SecondaryOffset(Name* name, Code::Flags flags, int seed) { |
// Use the seed from the primary cache in the secondary cache. |
- uint32_t string_low32bits = |
+ uint32_t name_low32bits = |
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(name)); |
// We always set the in_loop bit to zero when generating the lookup code |
// so do it here too so the hash codes match. |
uint32_t iflags = |
(static_cast<uint32_t>(flags) & ~Code::kFlagsNotUsedInLookup); |
- uint32_t key = (seed - string_low32bits) + iflags; |
+ uint32_t key = (seed - name_low32bits) + iflags; |
return key & ((kSecondaryTableSize - 1) << kHeapObjectTagSize); |
} |
// Compute the entry for a given offset in exactly the same way as |
// we do in generated code. We generate an hash code that already |
- // ends in String::kHashShift 0s. Then we multiply it so it is a multiple |
+ // ends in Name::kHashShift 0s. Then we multiply it so it is a multiple |
// of sizeof(Entry). This makes it easier to avoid making mistakes |
// in the hashed offset computations. |
static Entry* entry(Entry* table, int offset) { |
- const int multiplier = sizeof(*table) >> String::kHashShift; |
+ const int multiplier = sizeof(*table) >> Name::kHashShift; |
return reinterpret_cast<Entry*>( |
reinterpret_cast<Address>(table) + offset * multiplier); |
} |
@@ -478,7 +478,7 @@ class StubCompiler BASE_EMBEDDED { |
Handle<JSObject> object, |
int index, |
Handle<Map> transition, |
- Handle<String> name, |
+ Handle<Name> name, |
Register receiver_reg, |
Register name_reg, |
Register scratch1, |
@@ -511,7 +511,7 @@ class StubCompiler BASE_EMBEDDED { |
Register holder_reg, |
Register scratch1, |
Register scratch2, |
- Handle<String> name, |
+ Handle<Name> name, |
Label* miss) { |
return CheckPrototypes(object, object_reg, holder, holder_reg, scratch1, |
scratch2, name, kInvalidProtoDepth, miss); |
@@ -523,14 +523,14 @@ class StubCompiler BASE_EMBEDDED { |
Register holder_reg, |
Register scratch1, |
Register scratch2, |
- Handle<String> name, |
+ Handle<Name> name, |
int save_at_depth, |
Label* miss); |
protected: |
Handle<Code> GetCodeWithFlags(Code::Flags flags, const char* name); |
- Handle<Code> GetCodeWithFlags(Code::Flags flags, Handle<String> name); |
+ Handle<Code> GetCodeWithFlags(Code::Flags flags, Handle<Name> name); |
MacroAssembler* masm() { return &masm_; } |
void set_failure(Failure* failure) { failure_ = failure; } |
@@ -542,7 +542,7 @@ class StubCompiler BASE_EMBEDDED { |
Register scratch2, |
Register scratch3, |
PropertyIndex index, |
- Handle<String> name, |
+ Handle<Name> name, |
Label* miss); |
void GenerateLoadCallback(Handle<JSObject> object, |
@@ -554,7 +554,7 @@ class StubCompiler BASE_EMBEDDED { |
Register scratch3, |
Register scratch4, |
Handle<AccessorInfo> callback, |
- Handle<String> name, |
+ Handle<Name> name, |
Label* miss); |
void GenerateDictionaryLoadCallback(Register receiver, |
@@ -563,7 +563,7 @@ class StubCompiler BASE_EMBEDDED { |
Register scratch2, |
Register scratch3, |
Handle<AccessorInfo> callback, |
- Handle<String> name, |
+ Handle<Name> name, |
Label* miss); |
void GenerateLoadConstant(Handle<JSObject> object, |
@@ -573,7 +573,7 @@ class StubCompiler BASE_EMBEDDED { |
Register scratch2, |
Register scratch3, |
Handle<JSFunction> value, |
- Handle<String> name, |
+ Handle<Name> name, |
Label* miss); |
void GenerateLoadInterceptor(Handle<JSObject> object, |
@@ -584,11 +584,11 @@ class StubCompiler BASE_EMBEDDED { |
Register scratch1, |
Register scratch2, |
Register scratch3, |
- Handle<String> name, |
+ Handle<Name> name, |
Label* miss); |
static void LookupPostInterceptor(Handle<JSObject> holder, |
- Handle<String> name, |
+ Handle<Name> name, |
LookupResult* lookup); |
Isolate* isolate() { return isolate_; } |
@@ -610,22 +610,22 @@ class BaseLoadStubCompiler: public StubCompiler { |
Handle<Code> CompileLoadField(Handle<JSObject> object, |
Handle<JSObject> holder, |
- Handle<String> name, |
+ Handle<Name> name, |
PropertyIndex index); |
Handle<Code> CompileLoadCallback(Handle<JSObject> object, |
Handle<JSObject> holder, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<AccessorInfo> callback); |
Handle<Code> CompileLoadConstant(Handle<JSObject> object, |
Handle<JSObject> holder, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<JSFunction> value); |
Handle<Code> CompileLoadInterceptor(Handle<JSObject> object, |
Handle<JSObject> holder, |
- Handle<String> name); |
+ Handle<Name> name); |
protected: |
Register receiver() { return registers_[0]; } |
@@ -637,11 +637,11 @@ class BaseLoadStubCompiler: public StubCompiler { |
private: |
virtual Code::Kind kind() = 0; |
- virtual void GenerateNameCheck(Handle<String> name, |
+ virtual void GenerateNameCheck(Handle<Name> name, |
Register name_reg, |
Label* miss) { } |
virtual Handle<Code> GetCode(Code::StubType type, |
- Handle<String> name, |
+ Handle<Name> name, |
InlineCacheState state = MONOMORPHIC) = 0; |
Register* registers_; |
}; |
@@ -654,7 +654,7 @@ class LoadStubCompiler: public BaseLoadStubCompiler { |
Handle<Code> CompileLoadNonexistent(Handle<JSObject> object, |
Handle<JSObject> last, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<GlobalObject> global); |
static void GenerateLoadViaGetter(MacroAssembler* masm, |
@@ -662,20 +662,20 @@ class LoadStubCompiler: public BaseLoadStubCompiler { |
Handle<Code> CompileLoadViaGetter(Handle<JSObject> object, |
Handle<JSObject> holder, |
- Handle<String> name, |
+ Handle<Name> name, |
Handle<JSFunction> getter); |
Handle<Code> CompileLoadGlobal(Handle<JSObject> object, |
Handle<GlobalObject> holder, |
Handle<JSGlobalPropertyCell> cell, |
- Handle<String> name, |
+ Handle<Name> name, |
bool is_dont_delete); |
private: |
Register* registers(); |
virtual Code::Kind kind() { return Code::LOAD_IC; } |
virtual Handle<Code> GetCode(Code::StubType type, |
- Handle<String> name, |
+ Handle<Name> name, |
InlineCacheState state = MONOMORPHIC); |
}; |
@@ -698,9 +698,9 @@ class KeyedLoadStubCompiler: public BaseLoadStubCompiler { |
Register* registers(); |
virtual Code::Kind kind() { return Code::KEYED_LOAD_IC; } |
virtual Handle<Code> GetCode(Code::StubType type, |
- Handle<String> name, |
+ Handle<Name> name, |
InlineCacheState state = MONOMORPHIC); |
- virtual void GenerateNameCheck(Handle<String> name, |
+ virtual void GenerateNameCheck(Handle<Name> name, |
Register name_reg, |
Label* miss); |
}; |
@@ -715,9 +715,9 @@ class StoreStubCompiler: public StubCompiler { |
Handle<Code> CompileStoreField(Handle<JSObject> object, |
int index, |
Handle<Map> transition, |
- Handle<String> name); |
+ Handle<Name> name); |
- Handle<Code> CompileStoreCallback(Handle<String> name, |
+ Handle<Code> CompileStoreCallback(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<AccessorInfo> callback); |
@@ -725,20 +725,20 @@ class StoreStubCompiler: public StubCompiler { |
static void GenerateStoreViaSetter(MacroAssembler* masm, |
Handle<JSFunction> setter); |
- Handle<Code> CompileStoreViaSetter(Handle<String> name, |
+ Handle<Code> CompileStoreViaSetter(Handle<Name> name, |
Handle<JSObject> object, |
Handle<JSObject> holder, |
Handle<JSFunction> setter); |
Handle<Code> CompileStoreInterceptor(Handle<JSObject> object, |
- Handle<String> name); |
+ Handle<Name> name); |
Handle<Code> CompileStoreGlobal(Handle<GlobalObject> object, |
Handle<JSGlobalPropertyCell> holder, |
- Handle<String> name); |
+ Handle<Name> name); |
private: |
- Handle<Code> GetCode(Code::StubType type, Handle<String> name); |
+ Handle<Code> GetCode(Code::StubType type, Handle<Name> name); |
StrictModeFlag strict_mode_; |
}; |
@@ -756,7 +756,7 @@ class KeyedStoreStubCompiler: public StubCompiler { |
Handle<Code> CompileStoreField(Handle<JSObject> object, |
int index, |
Handle<Map> transition, |
- Handle<String> name); |
+ Handle<Name> name); |
Handle<Code> CompileStoreElement(Handle<Map> receiver_map); |
@@ -782,7 +782,7 @@ class KeyedStoreStubCompiler: public StubCompiler { |
private: |
Handle<Code> GetCode(Code::StubType type, |
- Handle<String> name, |
+ Handle<Name> name, |
InlineCacheState state = MONOMORPHIC); |
StrictModeFlag strict_mode_; |
@@ -815,23 +815,23 @@ class CallStubCompiler: public StubCompiler { |
Handle<Code> CompileCallField(Handle<JSObject> object, |
Handle<JSObject> holder, |
PropertyIndex index, |
- Handle<String> name); |
+ Handle<Name> name); |
Handle<Code> CompileCallConstant(Handle<Object> object, |
Handle<JSObject> holder, |
Handle<JSFunction> function, |
- Handle<String> name, |
+ Handle<Name> name, |
CheckType check); |
Handle<Code> CompileCallInterceptor(Handle<JSObject> object, |
Handle<JSObject> holder, |
- Handle<String> name); |
+ Handle<Name> name); |
Handle<Code> CompileCallGlobal(Handle<JSObject> object, |
Handle<GlobalObject> holder, |
Handle<JSGlobalPropertyCell> cell, |
Handle<JSFunction> function, |
- Handle<String> name); |
+ Handle<Name> name); |
static bool HasCustomCallGenerator(Handle<JSFunction> function); |
@@ -861,16 +861,16 @@ class CallStubCompiler: public StubCompiler { |
Handle<JSFunction> function, |
Handle<String> name); |
- Handle<Code> GetCode(Code::StubType type, Handle<String> name); |
+ Handle<Code> GetCode(Code::StubType type, Handle<Name> name); |
Handle<Code> GetCode(Handle<JSFunction> function); |
const ParameterCount& arguments() { return arguments_; } |
- void GenerateNameCheck(Handle<String> name, Label* miss); |
+ void GenerateNameCheck(Handle<Name> name, Label* miss); |
void GenerateGlobalReceiverCheck(Handle<JSObject> object, |
Handle<JSObject> holder, |
- Handle<String> name, |
+ Handle<Name> name, |
Label* miss); |
// Generates code to load the function from the cell checking that |