diff options
Diffstat (limited to 'deps/v8/src/interpreter/interpreter.h')
-rw-r--r-- | deps/v8/src/interpreter/interpreter.h | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/deps/v8/src/interpreter/interpreter.h b/deps/v8/src/interpreter/interpreter.h index bbd0102999..b646bf8313 100644 --- a/deps/v8/src/interpreter/interpreter.h +++ b/deps/v8/src/interpreter/interpreter.h @@ -22,6 +22,7 @@ namespace internal { class Isolate; class Callable; class CompilationInfo; +class CompilationJob; namespace compiler { class Node; @@ -42,8 +43,8 @@ class Interpreter { // Returns the interrupt budget which should be used for the profiler counter. static int InterruptBudget(); - // Generate bytecode for |info|. - static bool MakeBytecode(CompilationInfo* info); + // Creates a compilation job which will generate bytecode for |info|. + static CompilationJob* NewCompilationJob(CompilationInfo* info); // Return bytecode handler for |bytecode|. Code* GetBytecodeHandler(Bytecode bytecode, OperandScale operand_scale); @@ -55,7 +56,7 @@ class Interpreter { void TraceCodegen(Handle<Code> code); const char* LookupNameOfBytecodeHandler(Code* code); - Local<v8::Object> GetDispatchCountersObject(); + V8_EXPORT_PRIVATE Local<v8::Object> GetDispatchCountersObject(); Address dispatch_table_address() { return reinterpret_cast<Address>(&dispatch_table_[0]); @@ -83,6 +84,11 @@ class Interpreter { template <class Generator> void DoBinaryOpWithFeedback(InterpreterAssembler* assembler); + // Generates code to perform the comparison via |Generator| while gathering + // type feedback. + template <class Generator> + void DoCompareOpWithFeedback(InterpreterAssembler* assembler); + // Generates code to perform the bitwise binary operation corresponding to // |bitwise_op| while gathering type feedback. void DoBitwiseBinaryOp(Token::Value bitwise_op, @@ -118,18 +124,6 @@ class Interpreter { // Generates code to perform a JS call that collects type feedback. void DoJSCall(InterpreterAssembler* assembler, TailCallMode tail_call_mode); - // Generates code to perform a runtime call. - void DoCallRuntimeCommon(InterpreterAssembler* assembler); - - // Generates code to perform a runtime call returning a pair. - void DoCallRuntimeForPairCommon(InterpreterAssembler* assembler); - - // Generates code to perform a JS runtime call. - void DoCallJSRuntimeCommon(InterpreterAssembler* assembler); - - // Generates code to perform a constructor call. - void DoCallConstruct(InterpreterAssembler* assembler); - // Generates code to perform delete via function_id. void DoDelete(Runtime::FunctionId function_id, InterpreterAssembler* assembler); @@ -138,18 +132,28 @@ class Interpreter { void DoLdaLookupSlot(Runtime::FunctionId function_id, InterpreterAssembler* assembler); - // Generates code to perform a lookup slot store depending on |language_mode|. + // 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 a node with the undefined constant. - compiler::Node* BuildLoadUndefined(InterpreterAssembler* assembler); - // Generates code to load a context slot. compiler::Node* BuildLoadContextSlot(InterpreterAssembler* assembler); // Generates code to load a global. - compiler::Node* BuildLoadGlobal(Callable ic, InterpreterAssembler* assembler); + compiler::Node* BuildLoadGlobal(Callable ic, compiler::Node* context, + compiler::Node* feedback_slot, + InterpreterAssembler* assembler); // Generates code to load a named property. compiler::Node* BuildLoadNamedProperty(Callable ic, |