Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(931)

Unified Diff: src/code-stubs.h

Issue 8520006: Optimize the equality check case of ICCompare stubs. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/code-stubs.cc » ('j') | src/code-stubs.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/code-stubs.h
===================================================================
--- src/code-stubs.h (revision 9957)
+++ src/code-stubs.h (working copy)
@@ -116,7 +116,7 @@
};
// Retrieve the code for the stub. Generate the code if needed.
- Handle<Code> GetCode();
+ Handle<Code> GetCode(bool use_special_cache = false);
static Major MajorKeyFromKey(uint32_t key) {
return static_cast<Major>(MajorKeyBits::decode(key));
@@ -193,6 +193,14 @@
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 bool AddToSpecialCache(Handle<Code> new_object) { return false; }
+
+ // Find code in a specialized cache, work is delegated to the specific stub.
+ virtual bool FindCodeInSpecialCache(Code** code_out) { return false; }
+
// Returns a name for logging/debugging purposes.
SmartArrayPointer<const char> GetName();
virtual void PrintName(StringStream* stream);
@@ -436,7 +444,10 @@
}
virtual void Generate(MacroAssembler* masm);
+ static void GenerateKnownObjects(MacroAssembler* masm, Map* map);
Kevin Millikin (Chromium) 2011/11/10 19:08:42 Put this down in the private section with the othe
Rico 2011/11/11 08:49:11 Done.
+ void set_known_map(Map* map) { known_map_ = map; }
Kevin Millikin (Chromium) 2011/11/10 19:08:42 Make map a Handle<Map>. There's a risk that a GC
Rico 2011/11/11 08:49:11 OK, will do, but maps don't move right, and we alr
+
private:
class OpField: public BitField<int, 0, 3> { };
class StateField: public BitField<int, 3, 5> { };
@@ -457,9 +468,12 @@
bool strict() const { return op_ == Token::EQ_STRICT; }
Condition GetCondition() const { return CompareIC::ComputeCondition(op_); }
+ bool AddToSpecialCache(Handle<Code> new_object);
+ bool FindCodeInSpecialCache(Code** code_out);
Token::Value op_;
CompareIC::State state_;
+ Map* known_map_;
Kevin Millikin (Chromium) 2011/11/10 19:08:42 Handle<Map>.
Rico 2011/11/11 08:49:11 Done.
};
« no previous file with comments | « no previous file | src/code-stubs.cc » ('j') | src/code-stubs.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698