Upgrade V8 to 5.1.281.57 DO NOT MERGE
FPIIM-449
Change-Id: Id981b686b4d587ac31697662eb98bb34be42ad90
(cherry picked from commit 3b9bc31999c9787eb726ecdbfd5796bfdec32a18)
diff --git a/src/compiler/raw-machine-assembler.h b/src/compiler/raw-machine-assembler.h
index a0cb7a0..f3445ac 100644
--- a/src/compiler/raw-machine-assembler.h
+++ b/src/compiler/raw-machine-assembler.h
@@ -324,6 +324,24 @@
Node* Uint64Mod(Node* a, Node* b) {
return AddNode(machine()->Uint64Mod(), a, b);
}
+ Node* Int32PairAdd(Node* a_low, Node* a_high, Node* b_low, Node* b_high) {
+ return AddNode(machine()->Int32PairAdd(), a_low, a_high, b_low, b_high);
+ }
+ Node* Int32PairSub(Node* a_low, Node* a_high, Node* b_low, Node* b_high) {
+ return AddNode(machine()->Int32PairSub(), a_low, a_high, b_low, b_high);
+ }
+ Node* Int32PairMul(Node* a_low, Node* a_high, Node* b_low, Node* b_high) {
+ return AddNode(machine()->Int32PairMul(), a_low, a_high, b_low, b_high);
+ }
+ Node* Word32PairShl(Node* low_word, Node* high_word, Node* shift) {
+ return AddNode(machine()->Word32PairShl(), low_word, high_word, shift);
+ }
+ Node* Word32PairShr(Node* low_word, Node* high_word, Node* shift) {
+ return AddNode(machine()->Word32PairShr(), low_word, high_word, shift);
+ }
+ Node* Word32PairSar(Node* low_word, Node* high_word, Node* shift) {
+ return AddNode(machine()->Word32PairSar(), low_word, high_word, shift);
+ }
#define INTPTR_BINOP(prefix, name) \
Node* IntPtr##name(Node* a, Node* b) { \
@@ -332,7 +350,9 @@
}
INTPTR_BINOP(Int, Add);
+ INTPTR_BINOP(Int, AddWithOverflow);
INTPTR_BINOP(Int, Sub);
+ INTPTR_BINOP(Int, SubWithOverflow);
INTPTR_BINOP(Int, LessThan);
INTPTR_BINOP(Int, LessThanOrEqual);
INTPTR_BINOP(Word, Equal);
@@ -374,6 +394,7 @@
return AddNode(machine()->Float32Min().op(), a, b);
}
Node* Float32Abs(Node* a) { return AddNode(machine()->Float32Abs(), a); }
+ Node* Float32Neg(Node* a) { return Float32Sub(Float32Constant(-0.0f), a); }
Node* Float32Sqrt(Node* a) { return AddNode(machine()->Float32Sqrt(), a); }
Node* Float32Equal(Node* a, Node* b) {
return AddNode(machine()->Float32Equal(), a, b);
@@ -414,6 +435,7 @@
return AddNode(machine()->Float64Min().op(), a, b);
}
Node* Float64Abs(Node* a) { return AddNode(machine()->Float64Abs(), a); }
+ Node* Float64Neg(Node* a) { return Float64Sub(Float64Constant(-0.0), a); }
Node* Float64Sqrt(Node* a) { return AddNode(machine()->Float64Sqrt(), a); }
Node* Float64Equal(Node* a, Node* b) {
return AddNode(machine()->Float64Equal(), a, b);
@@ -448,6 +470,9 @@
Node* ChangeFloat64ToUint32(Node* a) {
return AddNode(machine()->ChangeFloat64ToUint32(), a);
}
+ Node* TruncateFloat64ToUint32(Node* a) {
+ return AddNode(machine()->TruncateFloat64ToUint32(), a);
+ }
Node* TruncateFloat32ToInt32(Node* a) {
return AddNode(machine()->TruncateFloat32ToInt32(), a);
}
@@ -457,22 +482,12 @@
Node* TryTruncateFloat32ToInt64(Node* a) {
return AddNode(machine()->TryTruncateFloat32ToInt64(), a);
}
- Node* TruncateFloat64ToInt64(Node* a) {
- // TODO(ahaas): Remove this function as soon as it is not used anymore in
- // WebAssembly.
- return AddNode(machine()->TryTruncateFloat64ToInt64(), a);
- }
Node* TryTruncateFloat64ToInt64(Node* a) {
return AddNode(machine()->TryTruncateFloat64ToInt64(), a);
}
Node* TryTruncateFloat32ToUint64(Node* a) {
return AddNode(machine()->TryTruncateFloat32ToUint64(), a);
}
- Node* TruncateFloat64ToUint64(Node* a) {
- // TODO(ahaas): Remove this function as soon as it is not used anymore in
- // WebAssembly.
- return AddNode(machine()->TryTruncateFloat64ToUint64(), a);
- }
Node* TryTruncateFloat64ToUint64(Node* a) {
return AddNode(machine()->TryTruncateFloat64ToUint64(), a);
}
@@ -622,6 +637,8 @@
// Tail call the given call descriptor and the given arguments.
Node* TailCallN(CallDescriptor* call_descriptor, Node* function, Node** args);
+ // Tail call to a runtime function with zero arguments.
+ Node* TailCallRuntime0(Runtime::FunctionId function, Node* context);
// Tail call to a runtime function with one argument.
Node* TailCallRuntime1(Runtime::FunctionId function, Node* arg0,
Node* context);
@@ -708,13 +725,17 @@
class RawMachineLabel final {
public:
- RawMachineLabel();
+ enum Type { kDeferred, kNonDeferred };
+
+ explicit RawMachineLabel(Type type = kNonDeferred)
+ : deferred_(type == kDeferred) {}
~RawMachineLabel();
private:
- BasicBlock* block_;
- bool used_;
- bool bound_;
+ BasicBlock* block_ = nullptr;
+ bool used_ = false;
+ bool bound_ = false;
+ bool deferred_;
friend class RawMachineAssembler;
DISALLOW_COPY_AND_ASSIGN(RawMachineLabel);
};