summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/code-assembler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/code-assembler.cc')
-rw-r--r--deps/v8/src/compiler/code-assembler.cc39
1 files changed, 37 insertions, 2 deletions
diff --git a/deps/v8/src/compiler/code-assembler.cc b/deps/v8/src/compiler/code-assembler.cc
index 1bde4c6a4c..19bb76b125 100644
--- a/deps/v8/src/compiler/code-assembler.cc
+++ b/deps/v8/src/compiler/code-assembler.cc
@@ -639,7 +639,7 @@ Node* CodeAssembler::CallStubR(const CallInterfaceDescriptor& descriptor,
#define INSTANTIATE(...) \
template V8_EXPORT_PRIVATE Node* CodeAssembler::CallStubR( \
const CallInterfaceDescriptor& descriptor, size_t, Node*, __VA_ARGS__);
-REPEAT_1_TO_8(INSTANTIATE, Node*)
+REPEAT_1_TO_11(INSTANTIATE, Node*)
#undef INSTANTIATE
Node* CodeAssembler::CallStubN(const CallInterfaceDescriptor& descriptor,
@@ -709,6 +709,13 @@ Node* CodeAssembler::CallCFunctionN(Signature<MachineType>* signature,
return raw_assembler()->CallN(desc, input_count, inputs);
}
+Node* CodeAssembler::CallCFunction1(MachineType return_type,
+ MachineType arg0_type, Node* function,
+ Node* arg0) {
+ return raw_assembler()->CallCFunction1(return_type, arg0_type, function,
+ arg0);
+}
+
Node* CodeAssembler::CallCFunction2(MachineType return_type,
MachineType arg0_type,
MachineType arg1_type, Node* function,
@@ -726,6 +733,28 @@ Node* CodeAssembler::CallCFunction3(MachineType return_type,
arg2_type, function, arg0, arg1, arg2);
}
+Node* CodeAssembler::CallCFunction6(
+ MachineType return_type, MachineType arg0_type, MachineType arg1_type,
+ MachineType arg2_type, MachineType arg3_type, MachineType arg4_type,
+ MachineType arg5_type, Node* function, Node* arg0, Node* arg1, Node* arg2,
+ Node* arg3, Node* arg4, Node* arg5) {
+ return raw_assembler()->CallCFunction6(
+ return_type, arg0_type, arg1_type, arg2_type, arg3_type, arg4_type,
+ arg5_type, function, arg0, arg1, arg2, arg3, arg4, arg5);
+}
+
+Node* CodeAssembler::CallCFunction9(
+ MachineType return_type, MachineType arg0_type, MachineType arg1_type,
+ MachineType arg2_type, MachineType arg3_type, MachineType arg4_type,
+ MachineType arg5_type, MachineType arg6_type, MachineType arg7_type,
+ MachineType arg8_type, Node* function, Node* arg0, Node* arg1, Node* arg2,
+ Node* arg3, Node* arg4, Node* arg5, Node* arg6, Node* arg7, Node* arg8) {
+ return raw_assembler()->CallCFunction9(
+ return_type, arg0_type, arg1_type, arg2_type, arg3_type, arg4_type,
+ arg5_type, arg6_type, arg7_type, arg8_type, function, arg0, arg1, arg2,
+ arg3, arg4, arg5, arg6, arg7, arg8);
+}
+
void CodeAssembler::Goto(Label* label) {
label->MergeVariables();
raw_assembler()->Goto(label->label_);
@@ -967,7 +996,13 @@ void CodeAssemblerLabel::MergeVariables() {
#if DEBUG
void CodeAssemblerLabel::Bind(AssemblerDebugInfo debug_info) {
- DCHECK(!bound_);
+ if (bound_) {
+ std::stringstream str;
+ str << "Cannot bind the same label twice:"
+ << "\n# current: " << debug_info
+ << "\n# previous: " << *label_->block();
+ FATAL(str.str().c_str());
+ }
state_->raw_assembler_->Bind(label_, debug_info);
UpdateVariablesAfterBind();
}