| Index: src/code-stubs.h
|
| ===================================================================
|
| --- src/code-stubs.h (revision 9957)
|
| +++ src/code-stubs.h (working copy)
|
| @@ -193,6 +193,17 @@
|
| return UNINITIALIZED;
|
| }
|
|
|
| + // Add the code to a specialized cache, specific to an individual
|
| + // stub type. Please note, this method must add the code object to a
|
| + // roots object, otherwise we will remove the code during GC.
|
| + virtual void AddToSpecialCache(Handle<Code> new_object) { }
|
| +
|
| + // Find code in a specialized cache, work is delegated to the specific stub.
|
| + virtual bool FindCodeInSpecialCache(Code** code_out) { return false; }
|
| +
|
| + // If a stub uses a special cache override this.
|
| + virtual bool UseSpecialCache() { return false; }
|
| +
|
| // Returns a name for logging/debugging purposes.
|
| SmartArrayPointer<const char> GetName();
|
| virtual void PrintName(StringStream* stream);
|
| @@ -437,6 +448,8 @@
|
|
|
| virtual void Generate(MacroAssembler* masm);
|
|
|
| + void set_known_map(Handle<Map> map) { known_map_ = map; }
|
| +
|
| private:
|
| class OpField: public BitField<int, 0, 3> { };
|
| class StateField: public BitField<int, 3, 5> { };
|
| @@ -454,12 +467,18 @@
|
| void GenerateStrings(MacroAssembler* masm);
|
| void GenerateObjects(MacroAssembler* masm);
|
| void GenerateMiss(MacroAssembler* masm);
|
| + void GenerateKnownObjects(MacroAssembler* masm);
|
|
|
| bool strict() const { return op_ == Token::EQ_STRICT; }
|
| Condition GetCondition() const { return CompareIC::ComputeCondition(op_); }
|
|
|
| + virtual void AddToSpecialCache(Handle<Code> new_object);
|
| + virtual bool FindCodeInSpecialCache(Code** code_out);
|
| + virtual bool UseSpecialCache() { return state_ == CompareIC::KNOWN_OBJECTS; }
|
| +
|
| Token::Value op_;
|
| CompareIC::State state_;
|
| + Handle<Map> known_map_;
|
| };
|
|
|
|
|
|
|