| Index: src/code-stub-assembler.h
|
| diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h
|
| index 19b798216f6fe881be4d032cb77e6a55fceb006d..db730121e2cf4772299cd666b05740d7d4c85647 100644
|
| --- a/src/code-stub-assembler.h
|
| +++ b/src/code-stub-assembler.h
|
| @@ -38,6 +38,8 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* NoContextConstant();
|
| compiler::Node* NullConstant();
|
| compiler::Node* UndefinedConstant();
|
| + compiler::Node* TheHoleConstant();
|
| + compiler::Node* HashSeed();
|
| compiler::Node* StaleRegisterConstant();
|
|
|
| // Float64 operations.
|
| @@ -107,6 +109,8 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* LoadMap(compiler::Node* object);
|
| // Load the instance type of an HeapObject.
|
| compiler::Node* LoadInstanceType(compiler::Node* object);
|
| + // Load the properties backing store of a JSObject.
|
| + compiler::Node* LoadProperties(compiler::Node* object);
|
| // Load the elements backing store of a JSObject.
|
| compiler::Node* LoadElements(compiler::Node* object);
|
| // Load the length of a fixed array base instance.
|
| @@ -125,7 +129,11 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* LoadMapPrototype(compiler::Node* map);
|
|
|
| // Load the hash field of a name.
|
| - compiler::Node* LoadNameHash(compiler::Node* name);
|
| + compiler::Node* LoadNameHashField(compiler::Node* name);
|
| + // Load the hash value of a name. If {if_hash_not_computed} label
|
| + // is specified then it also checks if hash is actually computed.
|
| + compiler::Node* LoadNameHash(compiler::Node* name,
|
| + Label* if_hash_not_computed = nullptr);
|
| // Load the instance size of a Map.
|
| compiler::Node* LoadMapInstanceSize(compiler::Node* map);
|
|
|
| @@ -140,6 +148,12 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| int additional_offset = 0);
|
| compiler::Node* LoadFixedArrayElementConstantIndex(compiler::Node* object,
|
| int index);
|
| + // Load an array element from a FixedDoubleArray.
|
| + compiler::Node* OffsetOfFixedDoubleArrayElementInt32Index(
|
| + compiler::Node* int32_index, int additional_offset = 0);
|
| + compiler::Node* LoadFixedDoubleArrayElementInt32Index(
|
| + compiler::Node* object, compiler::Node* int32_index,
|
| + MachineType machine_type, int additional_offset = 0);
|
|
|
| // Context manipulation
|
| compiler::Node* LoadNativeContext(compiler::Node* context);
|
| @@ -235,10 +249,24 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| void TryToName(compiler::Node* key, Label* if_keyisindex, Variable* var_index,
|
| Label* if_keyisunique, Label* call_runtime);
|
|
|
| + static const int kInlinedDictionaryProbes = 4;
|
| + template <typename Dictionary>
|
| + void NameDictionaryLookup(compiler::Node* dictionary,
|
| + compiler::Node* unique_name, Label* if_found,
|
| + Label* if_not_found, Label* call_runtime,
|
| + int inlined_probes = kInlinedDictionaryProbes);
|
| +
|
| + compiler::Node* ComputeIntegerHash(compiler::Node* key, compiler::Node* seed);
|
| +
|
| + template <typename Dictionary>
|
| + void NumberDictionaryLookup(compiler::Node* dictionary, compiler::Node* key,
|
| + Label* if_found, Label* if_not_found,
|
| + Label* call_runtime);
|
| +
|
| void TryLookupProperty(compiler::Node* object, compiler::Node* map,
|
| - compiler::Node* instance_type, compiler::Node* name,
|
| - Label* if_found, Label* if_not_found,
|
| - Label* call_runtime);
|
| + compiler::Node* instance_type,
|
| + compiler::Node* unique_name, Label* if_found,
|
| + Label* if_not_found, Label* call_runtime);
|
|
|
| void TryLookupElement(compiler::Node* object, compiler::Node* map,
|
| compiler::Node* instance_type, compiler::Node* index,
|
|
|