Merge V8 5.3.332.45. DO NOT MERGE
Test: Manual
FPIIM-449
Change-Id: Id3254828b068abdea3cb10442e0172a8c9a98e03
(cherry picked from commit 13e2dadd00298019ed862f2b2fc5068bba730bcf)
diff --git a/src/compiler/effect-control-linearizer.h b/src/compiler/effect-control-linearizer.h
index 7d7f938..280b4b7 100644
--- a/src/compiler/effect-control-linearizer.h
+++ b/src/compiler/effect-control-linearizer.h
@@ -30,7 +30,8 @@
void Run();
private:
- void ProcessNode(Node* node, Node** current_effect, Node** control);
+ void ProcessNode(Node* node, Node** frame_state, Node** effect,
+ Node** control);
struct ValueEffectControl {
Node* value;
@@ -40,7 +41,8 @@
: value(value), effect(effect), control(control) {}
};
- bool TryWireInStateEffect(Node* node, Node** effect, Node** control);
+ bool TryWireInStateEffect(Node* node, Node* frame_state, Node** effect,
+ Node** control);
ValueEffectControl LowerTypeGuard(Node* node, Node* effect, Node* control);
ValueEffectControl LowerChangeBitToTagged(Node* node, Node* effect,
Node* control);
@@ -60,8 +62,28 @@
Node* control);
ValueEffectControl LowerChangeTaggedToUint32(Node* node, Node* effect,
Node* control);
+ ValueEffectControl LowerCheckBounds(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckTaggedPointer(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckTaggedSigned(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckedInt32Add(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckedInt32Sub(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckedUint32ToInt32(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckedFloat64ToInt32(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckedTaggedToInt32(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckedTaggedToFloat64(Node* node, Node* frame_state,
+ Node* effect, Node* control);
ValueEffectControl LowerChangeTaggedToFloat64(Node* node, Node* effect,
Node* control);
+ ValueEffectControl LowerTruncateTaggedToFloat64(Node* node, Node* effect,
+ Node* control);
ValueEffectControl LowerTruncateTaggedToWord32(Node* node, Node* effect,
Node* control);
ValueEffectControl LowerObjectIsCallable(Node* node, Node* effect,
@@ -75,8 +97,27 @@
Node* control);
ValueEffectControl LowerObjectIsUndetectable(Node* node, Node* effect,
Node* control);
+ ValueEffectControl LowerStringFromCharCode(Node* node, Node* effect,
+ Node* control);
+ ValueEffectControl LowerCheckFloat64Hole(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerCheckTaggedHole(Node* node, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl LowerPlainPrimitiveToNumber(Node* node, Node* effect,
+ Node* control);
+ ValueEffectControl LowerPlainPrimitiveToWord32(Node* node, Node* effect,
+ Node* control);
+ ValueEffectControl LowerPlainPrimitiveToFloat64(Node* node, Node* effect,
+ Node* control);
+
ValueEffectControl AllocateHeapNumberWithValue(Node* node, Node* effect,
Node* control);
+ ValueEffectControl BuildCheckedFloat64ToInt32(Node* value, Node* frame_state,
+ Node* effect, Node* control);
+ ValueEffectControl BuildCheckedHeapNumberOrOddballToFloat64(Node* value,
+ Node* frame_state,
+ Node* effect,
+ Node* control);
Node* ChangeInt32ToSmi(Node* value);
Node* ChangeUint32ToSmi(Node* value);
@@ -88,6 +129,8 @@
Node* SmiMaxValueConstant();
Node* SmiShiftBitsConstant();
+ Factory* factory() const;
+ Isolate* isolate() const;
JSGraph* jsgraph() const { return js_graph_; }
Graph* graph() const;
Schedule* schedule() const { return schedule_; }
@@ -96,9 +139,14 @@
SimplifiedOperatorBuilder* simplified() const;
MachineOperatorBuilder* machine() const;
+ Operator const* ToNumberOperator();
+
JSGraph* js_graph_;
Schedule* schedule_;
Zone* temp_zone_;
+ RegionObservability region_observability_ = RegionObservability::kObservable;
+
+ SetOncePointer<Operator const> to_number_operator_;
};
} // namespace compiler