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); |