| Index: src/stub-cache.h
|
| diff --git a/src/stub-cache.h b/src/stub-cache.h
|
| index 63cb42b46e5d4402c49732db130d0698343c0829..12d4fc5266a355f09cb093efb35627799b2b7976 100644
|
| --- a/src/stub-cache.h
|
| +++ b/src/stub-cache.h
|
| @@ -545,6 +545,18 @@ class StubCompiler BASE_EMBEDDED {
|
| int index,
|
| Register prototype);
|
|
|
| + // Helper function used to check that the dictionary doesn't contain
|
| + // the property. This function may return false negatives, so miss_label
|
| + // must always call a backup property check that is complete.
|
| + // This function is safe to call if the receiver has fast properties.
|
| + // Name must be unique and receiver must be a heap object.
|
| + static void GenerateDictionaryNegativeLookup(MacroAssembler* masm,
|
| + Label* miss_label,
|
| + Register receiver,
|
| + Handle<Name> name,
|
| + Register r0,
|
| + Register r1);
|
| +
|
| // Generates prototype loading code that uses the objects from the
|
| // context we were in when this function was called. If the context
|
| // has changed, a jump to miss is performed. This ties the generated
|
| @@ -581,6 +593,24 @@ class StubCompiler BASE_EMBEDDED {
|
| Register scratch2,
|
| Label* miss_label);
|
|
|
| + // Generate code to check that a global property cell is empty. Create
|
| + // the property cell at compilation time if no cell exists for the
|
| + // property.
|
| + static void GenerateCheckPropertyCell(MacroAssembler* masm,
|
| + Handle<JSGlobalObject> global,
|
| + Handle<Name> name,
|
| + Register scratch,
|
| + Label* miss);
|
| +
|
| + // Calls GenerateCheckPropertyCell for each global object in the prototype
|
| + // chain from object to (but not including) holder.
|
| + static void GenerateCheckPropertyCells(MacroAssembler* masm,
|
| + Handle<JSObject> object,
|
| + Handle<JSObject> holder,
|
| + Handle<Name> name,
|
| + Register scratch,
|
| + Label* miss);
|
| +
|
| static void TailCallBuiltin(MacroAssembler* masm, Builtins::Name name);
|
|
|
| // Generates code that verifies that the property holder has not changed
|
| @@ -769,7 +799,7 @@ class BaseLoadStubCompiler: public BaseLoadStoreStubCompiler {
|
| Handle<JSObject> last,
|
| Handle<Name> name,
|
| Label* success,
|
| - Handle<GlobalObject> global);
|
| + Handle<JSGlobalObject> global);
|
|
|
| void GenerateLoadField(Register reg,
|
| Handle<JSObject> holder,
|
| @@ -810,7 +840,7 @@ class LoadStubCompiler: public BaseLoadStubCompiler {
|
| Handle<Code> CompileLoadNonexistent(Handle<JSObject> object,
|
| Handle<JSObject> last,
|
| Handle<Name> name,
|
| - Handle<GlobalObject> global);
|
| + Handle<JSGlobalObject> global);
|
|
|
| static void GenerateLoadViaGetter(MacroAssembler* masm,
|
| Handle<JSFunction> getter);
|
|
|