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

Unified Diff: src/interpreter/interpreter.h

Issue 2765433003: [interpreter] Split bytecode generation out of interpreter.cc (Closed)
Patch Set: addressed nits Created 3 years, 9 months 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 | « BUILD.gn ('k') | src/interpreter/interpreter.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/interpreter/interpreter.h
diff --git a/src/interpreter/interpreter.h b/src/interpreter/interpreter.h
index 3a92df40378ea0fe22f511a75e76152265699dff..6ece88132f2810685ca9ae5afa395675a2487dac 100644
--- a/src/interpreter/interpreter.h
+++ b/src/interpreter/interpreter.h
@@ -24,10 +24,6 @@ class Callable;
class CompilationInfo;
class CompilationJob;
-namespace compiler {
-class Node;
-} // namespace compiler
-
namespace interpreter {
class InterpreterAssembler;
@@ -53,7 +49,6 @@ class Interpreter {
void IterateDispatchTable(ObjectVisitor* v);
// Disassembler support (only useful with ENABLE_DISASSEMBLER defined).
- void TraceCodegen(Handle<Code> code);
const char* LookupNameOfBytecodeHandler(Code* code);
V8_EXPORT_PRIVATE Local<v8::Object> GetDispatchCountersObject();
@@ -70,112 +65,14 @@ class Interpreter {
static const int kCodeSizeMultiplier = 32;
private:
-// Bytecode handler generator functions.
-#define DECLARE_BYTECODE_HANDLER_GENERATOR(Name, ...) \
- void Do##Name(InterpreterAssembler* assembler);
- BYTECODE_LIST(DECLARE_BYTECODE_HANDLER_GENERATOR)
-#undef DECLARE_BYTECODE_HANDLER_GENERATOR
-
- typedef void (Interpreter::*BytecodeGeneratorFunc)(InterpreterAssembler*);
-
// In the case of bytecodes that share handler implementations, copy the code
// into the bytecode's dispatcher table entry and return true.
bool ReuseExistingHandler(Bytecode bytecode, OperandScale operand_scale);
- // Generates handler for given |bytecode| and |operand_scale| using
- // |generator| and installs it into the dispatch table.
- void InstallBytecodeHandler(Zone* zone, Bytecode bytecode,
- OperandScale operand_scale,
- BytecodeGeneratorFunc generator);
-
- // Generates code to perform the binary operation via |Generator|.
- template <class Generator>
- void DoBinaryOpWithFeedback(InterpreterAssembler* assembler);
-
- // Generates code to perform the comparison via |Generator| while gathering
- // type feedback.
- void DoCompareOpWithFeedback(Token::Value compare_op,
- InterpreterAssembler* assembler);
-
- // Generates code to perform the bitwise binary operation corresponding to
- // |bitwise_op| while gathering type feedback.
- void DoBitwiseBinaryOp(Token::Value bitwise_op,
- InterpreterAssembler* assembler);
-
- // Generates code to perform the binary operation via |Generator| using
- // an immediate value rather the accumulator as the rhs operand.
- template <class Generator>
- void DoBinaryOpWithImmediate(InterpreterAssembler* assembler);
-
- // Generates code to perform the unary operation via |Generator| while
- // gatering type feedback.
- template <class Generator>
- void DoUnaryOpWithFeedback(InterpreterAssembler* assembler);
-
- // Generates code to perform the comparison operation associated with
- // |compare_op|.
- void DoCompareOp(Token::Value compare_op, InterpreterAssembler* assembler);
-
- // Generates code to perform a global store via |ic|.
- void DoStaGlobal(Callable ic, InterpreterAssembler* assembler);
-
- // Generates code to perform a named property store via |ic|.
- void DoStoreIC(Callable ic, InterpreterAssembler* assembler);
-
- // Generates code to perform a keyed property store via |ic|.
- void DoKeyedStoreIC(Callable ic, InterpreterAssembler* assembler);
-
- // Generates code to perform a JS call that collects type feedback.
- void DoJSCall(InterpreterAssembler* assembler, TailCallMode tail_call_mode);
-
- // Generates code to perform a JS call with a known number of arguments that
- // collects type feedback.
- void DoJSCallN(InterpreterAssembler* assembler, int n);
-
- // Generates code to perform delete via function_id.
- void DoDelete(Runtime::FunctionId function_id,
- InterpreterAssembler* assembler);
-
- // Generates code to perform a lookup slot load via |function_id|.
- void DoLdaLookupSlot(Runtime::FunctionId function_id,
- InterpreterAssembler* assembler);
-
- // Generates code to perform a lookup slot load via |function_id| that can
- // fast path to a context slot load.
- void DoLdaLookupContextSlot(Runtime::FunctionId function_id,
- InterpreterAssembler* assembler);
-
- // Generates code to perform a lookup slot load via |function_id| that can
- // fast path to a global load.
- void DoLdaLookupGlobalSlot(Runtime::FunctionId function_id,
- InterpreterAssembler* assembler);
-
- // Generates code to perform a lookup slot store depending on
- // |language_mode|.
- void DoStaLookupSlot(LanguageMode language_mode,
- InterpreterAssembler* assembler);
-
- // Generates code to load a global property.
- void BuildLoadGlobalIC(int slot_operand_index, int name_operand_index,
- TypeofMode typeof_mode,
- InterpreterAssembler* assembler);
-
- // Generates code to load a property.
- void BuildLoadIC(int recv_operand_index, int slot_operand_index,
- int name_operand_index, InterpreterAssembler* assembler);
-
- // Generates code to prepare the result for ForInPrepare. Cache data
- // are placed into the consecutive series of registers starting at
- // |output_register|.
- void BuildForInPrepareResult(compiler::Node* output_register,
- compiler::Node* cache_type,
- compiler::Node* cache_array,
- compiler::Node* cache_length,
- InterpreterAssembler* assembler);
-
- // Generates code to perform the unary operation via |callable|.
- compiler::Node* BuildUnaryOp(Callable callable,
- InterpreterAssembler* assembler);
+ // Generates handler for given |bytecode| and |operand_scale|
+ // and installs it into the dispatch table.
+ void InstallBytecodeHandler(Isolate* isolate, Bytecode bytecode,
+ OperandScale operand_scale);
uintptr_t GetDispatchCounter(Bytecode from, Bytecode to) const;
« no previous file with comments | « BUILD.gn ('k') | src/interpreter/interpreter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698