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

Unified Diff: src/code-stubs.h

Issue 11498006: Revert 13157, 13145 and 13140: Crankshaft code stubs. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years 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 | « src/builtins.h ('k') | src/code-stubs.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/code-stubs.h
diff --git a/src/code-stubs.h b/src/code-stubs.h
index 527abde958843aa2bbaa255949b43c0a4316efb8..ae113f5729a58d26bcdfeffff0ee5011a2570954 100644
--- a/src/code-stubs.h
+++ b/src/code-stubs.h
@@ -162,29 +162,20 @@ class CodeStub BASE_EMBEDDED {
// Lookup the code in the (possibly custom) cache.
bool FindCodeInCache(Code** code_out, Isolate* isolate);
- // Returns information for computing the number key.
- virtual Major MajorKey() = 0;
- virtual int MinorKey() = 0;
-
protected:
static bool CanUseFPRegisters();
- // Generates the assembler code for the stub.
- virtual Handle<Code> GenerateCode() = 0;
-
- // BinaryOpStub needs to override this.
- virtual InlineCacheState GetICState() {
- return UNINITIALIZED;
- }
+ private:
+ // Nonvirtual wrapper around the stub-specific Generate function. Call
+ // this function to set up the macro assembler and generate the code.
+ void GenerateCode(MacroAssembler* masm);
- // Returns whether the code generated for this stub needs to be allocated as
- // a fixed (non-moveable) code object.
- virtual bool NeedsImmovableCode() { return false; }
+ // Generates the assembler code for the stub.
+ virtual void Generate(MacroAssembler* masm) = 0;
- private:
// Perform bookkeeping required after code generation when stub code is
// initially generated.
- void RecordCodeGeneration(Code* code, Isolate* isolate);
+ void RecordCodeGeneration(Code* code, MacroAssembler* masm);
// Finish the code object after it has been generated.
virtual void FinishCode(Handle<Code> code) { }
@@ -193,9 +184,18 @@ class CodeStub BASE_EMBEDDED {
// registering stub in the stub cache.
virtual void Activate(Code* code) { }
+ // Returns information for computing the number key.
+ virtual Major MajorKey() = 0;
+ virtual int MinorKey() = 0;
+
// BinaryOpStub needs to override this.
virtual int GetCodeKind();
+ // BinaryOpStub needs to override this.
+ virtual InlineCacheState GetICState() {
+ 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.
@@ -213,6 +213,10 @@ class CodeStub BASE_EMBEDDED {
SmartArrayPointer<const char> GetName();
virtual void PrintName(StringStream* stream);
+ // Returns whether the code generated for this stub needs to be allocated as
+ // a fixed (non-moveable) code object.
+ virtual bool NeedsImmovableCode() { return false; }
+
// Computes the key based on major and minor.
uint32_t GetKey() {
ASSERT(static_cast<int>(MajorKey()) < NUMBER_OF_IDS);
@@ -228,51 +232,6 @@ class CodeStub BASE_EMBEDDED {
};
-class PlatformCodeStub : public CodeStub {
- public:
- // Retrieve the code for the stub. Generate the code if needed.
- virtual Handle<Code> GenerateCode();
-
- virtual int GetCodeKind() { return Code::STUB; }
-
- protected:
- // Generates the assembler code for the stub.
- virtual void Generate(MacroAssembler* masm) = 0;
-};
-
-
-struct CodeStubInterfaceDescriptor {
- CodeStubInterfaceDescriptor()
- : register_param_count_(-1),
- register_params_(NULL) { }
- int register_param_count_;
- Register* register_params_;
- Handle<Code> deoptimization_handler_;
-};
-
-
-class HGraph;
-struct Register;
-class HydrogenCodeStub : public CodeStub {
- public:
- // Retrieve the code for the stub. Generate the code if needed.
- virtual Handle<Code> GenerateCode() = 0;
-
- virtual int GetCodeKind() { return Code::COMPILED_STUB; }
-
- CodeStubInterfaceDescriptor* GetInterfaceDescriptor(Isolate* isolate) {
- return isolate->code_stub_interface_descriptor(MajorKey());
- }
-
- virtual void InitializeInterfaceDescriptor(
- Isolate* isolate,
- CodeStubInterfaceDescriptor* descriptor) = 0;
-
- protected:
- Handle<Code> CodeFromGraph(HGraph* graph);
-};
-
-
// Helper interface to prepare to/restore after making runtime calls.
class RuntimeCallHelper {
public:
@@ -330,7 +289,7 @@ class NopRuntimeCallHelper : public RuntimeCallHelper {
};
-class StackCheckStub : public PlatformCodeStub {
+class StackCheckStub : public CodeStub {
public:
StackCheckStub() { }
@@ -342,7 +301,7 @@ class StackCheckStub : public PlatformCodeStub {
};
-class InterruptStub : public PlatformCodeStub {
+class InterruptStub : public CodeStub {
public:
InterruptStub() { }
@@ -354,7 +313,7 @@ class InterruptStub : public PlatformCodeStub {
};
-class ToNumberStub: public PlatformCodeStub {
+class ToNumberStub: public CodeStub {
public:
ToNumberStub() { }
@@ -366,7 +325,7 @@ class ToNumberStub: public PlatformCodeStub {
};
-class FastNewClosureStub : public PlatformCodeStub {
+class FastNewClosureStub : public CodeStub {
public:
explicit FastNewClosureStub(LanguageMode language_mode)
: language_mode_(language_mode) { }
@@ -382,7 +341,7 @@ class FastNewClosureStub : public PlatformCodeStub {
};
-class FastNewContextStub : public PlatformCodeStub {
+class FastNewContextStub : public CodeStub {
public:
static const int kMaximumSlots = 64;
@@ -400,7 +359,7 @@ class FastNewContextStub : public PlatformCodeStub {
};
-class FastNewBlockContextStub : public PlatformCodeStub {
+class FastNewBlockContextStub : public CodeStub {
public:
static const int kMaximumSlots = 64;
@@ -418,7 +377,7 @@ class FastNewBlockContextStub : public PlatformCodeStub {
};
-class FastCloneShallowArrayStub : public PlatformCodeStub {
+class FastCloneShallowArrayStub : public CodeStub {
public:
// Maximum length of copied elements array.
static const int kMaximumClonedLength = 8;
@@ -451,7 +410,7 @@ class FastCloneShallowArrayStub : public PlatformCodeStub {
};
-class FastCloneShallowObjectStub : public PlatformCodeStub {
+class FastCloneShallowObjectStub : public CodeStub {
public:
// Maximum number of properties in copied object.
static const int kMaximumClonedProperties = 6;
@@ -471,7 +430,7 @@ class FastCloneShallowObjectStub : public PlatformCodeStub {
};
-class InstanceofStub: public PlatformCodeStub {
+class InstanceofStub: public CodeStub {
public:
enum Flags {
kNoFlags = 0,
@@ -509,7 +468,7 @@ class InstanceofStub: public PlatformCodeStub {
};
-class MathPowStub: public PlatformCodeStub {
+class MathPowStub: public CodeStub {
public:
enum ExponentType { INTEGER, DOUBLE, TAGGED, ON_STACK};
@@ -525,7 +484,7 @@ class MathPowStub: public PlatformCodeStub {
};
-class BinaryOpStub: public PlatformCodeStub {
+class BinaryOpStub: public CodeStub {
public:
BinaryOpStub(Token::Value op, OverwriteMode mode)
: op_(op),
@@ -641,7 +600,7 @@ class BinaryOpStub: public PlatformCodeStub {
};
-class ICCompareStub: public PlatformCodeStub {
+class ICCompareStub: public CodeStub {
public:
ICCompareStub(Token::Value op,
CompareIC::State left,
@@ -707,7 +666,7 @@ class ICCompareStub: public PlatformCodeStub {
};
-class CEntryStub : public PlatformCodeStub {
+class CEntryStub : public CodeStub {
public:
explicit CEntryStub(int result_size,
SaveFPRegsMode save_doubles = kDontSaveFPRegs)
@@ -741,7 +700,7 @@ class CEntryStub : public PlatformCodeStub {
};
-class JSEntryStub : public PlatformCodeStub {
+class JSEntryStub : public CodeStub {
public:
JSEntryStub() { }
@@ -775,7 +734,7 @@ class JSConstructEntryStub : public JSEntryStub {
};
-class ArgumentsAccessStub: public PlatformCodeStub {
+class ArgumentsAccessStub: public CodeStub {
public:
enum Type {
READ_ELEMENT,
@@ -802,7 +761,7 @@ class ArgumentsAccessStub: public PlatformCodeStub {
};
-class RegExpExecStub: public PlatformCodeStub {
+class RegExpExecStub: public CodeStub {
public:
RegExpExecStub() { }
@@ -814,7 +773,7 @@ class RegExpExecStub: public PlatformCodeStub {
};
-class RegExpConstructResultStub: public PlatformCodeStub {
+class RegExpConstructResultStub: public CodeStub {
public:
RegExpConstructResultStub() { }
@@ -826,7 +785,7 @@ class RegExpConstructResultStub: public PlatformCodeStub {
};
-class CallFunctionStub: public PlatformCodeStub {
+class CallFunctionStub: public CodeStub {
public:
CallFunctionStub(int argc, CallFunctionFlags flags)
: argc_(argc), flags_(flags) { }
@@ -867,7 +826,7 @@ class CallFunctionStub: public PlatformCodeStub {
};
-class CallConstructStub: public PlatformCodeStub {
+class CallConstructStub: public CodeStub {
public:
explicit CallConstructStub(CallFunctionFlags flags) : flags_(flags) {}
@@ -1058,54 +1017,25 @@ class AllowStubCallsScope {
};
-class KeyedLoadDictionaryElementStub : public PlatformCodeStub {
+class KeyedLoadElementStub : public CodeStub {
public:
- KeyedLoadDictionaryElementStub() {}
+ explicit KeyedLoadElementStub(ElementsKind elements_kind)
+ : elements_kind_(elements_kind)
+ { }
Major MajorKey() { return KeyedLoadElement; }
- int MinorKey() { return DICTIONARY_ELEMENTS; }
+ int MinorKey() { return elements_kind_; }
void Generate(MacroAssembler* masm);
private:
- DISALLOW_COPY_AND_ASSIGN(KeyedLoadDictionaryElementStub);
-};
-
-
-class KeyedLoadFastElementStub : public HydrogenCodeStub {
- public:
- KeyedLoadFastElementStub(bool is_js_array, ElementsKind elements_kind) {
- bit_field_ = ElementsKindBits::encode(elements_kind) |
- IsJSArrayBits::encode(is_js_array);
- }
-
- Major MajorKey() { return KeyedLoadElement; }
- int MinorKey() { return bit_field_; }
-
- bool is_js_array() const {
- return IsJSArrayBits::decode(bit_field_);
- }
-
- ElementsKind elements_kind() const {
- return ElementsKindBits::decode(bit_field_);
- }
-
- virtual Handle<Code> GenerateCode();
-
- virtual void InitializeInterfaceDescriptor(
- Isolate* isolate,
- CodeStubInterfaceDescriptor* descriptor);
-
- private:
- class IsJSArrayBits: public BitField<bool, 8, 1> {};
- class ElementsKindBits: public BitField<ElementsKind, 0, 8> {};
- uint32_t bit_field_;
+ ElementsKind elements_kind_;
- DISALLOW_COPY_AND_ASSIGN(KeyedLoadFastElementStub);
+ DISALLOW_COPY_AND_ASSIGN(KeyedLoadElementStub);
};
-class KeyedStoreElementStub : public PlatformCodeStub {
+class KeyedStoreElementStub : public CodeStub {
public:
KeyedStoreElementStub(bool is_js_array,
ElementsKind elements_kind,
@@ -1140,7 +1070,7 @@ class KeyedStoreElementStub : public PlatformCodeStub {
};
-class ToBooleanStub: public PlatformCodeStub {
+class ToBooleanStub: public CodeStub {
public:
enum Type {
UNDEFINED,
@@ -1210,7 +1140,7 @@ class ToBooleanStub: public PlatformCodeStub {
};
-class ElementsTransitionAndStoreStub : public PlatformCodeStub {
+class ElementsTransitionAndStoreStub : public CodeStub {
public:
ElementsTransitionAndStoreStub(ElementsKind from,
ElementsKind to,
@@ -1251,7 +1181,7 @@ class ElementsTransitionAndStoreStub : public PlatformCodeStub {
};
-class StoreArrayLiteralElementStub : public PlatformCodeStub {
+class StoreArrayLiteralElementStub : public CodeStub {
public:
StoreArrayLiteralElementStub()
: fp_registers_(CanUseFPRegisters()) { }
@@ -1270,7 +1200,7 @@ class StoreArrayLiteralElementStub : public PlatformCodeStub {
};
-class ProfileEntryHookStub : public PlatformCodeStub {
+class ProfileEntryHookStub : public CodeStub {
public:
explicit ProfileEntryHookStub() {}
« no previous file with comments | « src/builtins.h ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698