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/code-assembler.h b/src/compiler/code-assembler.h
index 39af56d..c33605c 100644
--- a/src/compiler/code-assembler.h
+++ b/src/compiler/code-assembler.h
@@ -72,6 +72,7 @@
V(Float64Mul) \
V(Float64Div) \
V(Float64Mod) \
+ V(Float64Atan2) \
V(Float64InsertLowWord32) \
V(Float64InsertHighWord32) \
V(IntPtrAdd) \
@@ -106,8 +107,20 @@
V(Word64Ror)
#define CODE_ASSEMBLER_UNARY_OP_LIST(V) \
+ V(Float64Atan) \
+ V(Float64Atanh) \
+ V(Float64Cos) \
+ V(Float64Exp) \
+ V(Float64Expm1) \
+ V(Float64Log) \
+ V(Float64Log1p) \
+ V(Float64Log2) \
+ V(Float64Log10) \
+ V(Float64Cbrt) \
V(Float64Neg) \
+ V(Float64Sin) \
V(Float64Sqrt) \
+ V(Float64Tan) \
V(Float64ExtractLowWord32) \
V(Float64ExtractHighWord32) \
V(BitcastWordToTagged) \
@@ -166,6 +179,7 @@
class Variable {
public:
explicit Variable(CodeAssembler* assembler, MachineRepresentation rep);
+ ~Variable();
void Bind(Node* value);
Node* value() const;
MachineRepresentation rep() const;
@@ -175,6 +189,7 @@
friend class CodeAssembler;
class Impl;
Impl* impl_;
+ CodeAssembler* assembler_;
};
enum AllocationFlag : uint8_t {
@@ -208,6 +223,9 @@
Node* Parameter(int value);
void Return(Node* value);
+ void DebugBreak();
+ void Comment(const char* format, ...);
+
void Bind(Label* label);
void Goto(Label* label);
void GotoIf(Node* condition, Label* true_label);
@@ -293,6 +311,8 @@
Node* arg2, size_t result_size = 1);
Node* CallStub(Callable const& callable, Node* context, Node* arg1,
Node* arg2, Node* arg3, size_t result_size = 1);
+ Node* CallStubN(Callable const& callable, Node** args,
+ size_t result_size = 1);
Node* CallStub(const CallInterfaceDescriptor& descriptor, Node* target,
Node* context, Node* arg1, size_t result_size = 1);
@@ -307,6 +327,8 @@
Node* CallStub(const CallInterfaceDescriptor& descriptor, Node* target,
Node* context, Node* arg1, Node* arg2, Node* arg3, Node* arg4,
Node* arg5, size_t result_size = 1);
+ Node* CallStubN(const CallInterfaceDescriptor& descriptor, Node* target,
+ Node** args, size_t result_size = 1);
Node* TailCallStub(Callable const& callable, Node* context, Node* arg1,
Node* arg2, size_t result_size = 1);
@@ -318,10 +340,20 @@
Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target,
Node* context, Node* arg1, Node* arg2, Node* arg3,
size_t result_size = 1);
+ Node* TailCallStub(const CallInterfaceDescriptor& descriptor, Node* target,
+ Node* context, Node* arg1, Node* arg2, Node* arg3,
+ Node* arg4, size_t result_size = 1);
Node* TailCallBytecodeDispatch(const CallInterfaceDescriptor& descriptor,
Node* code_target_address, Node** args);
+ Node* CallJS(Callable const& callable, Node* context, Node* function,
+ Node* receiver, size_t result_size = 1);
+ Node* CallJS(Callable const& callable, Node* context, Node* function,
+ Node* receiver, Node* arg1, size_t result_size = 1);
+ Node* CallJS(Callable const& callable, Node* context, Node* function,
+ Node* receiver, Node* arg1, Node* arg2, size_t result_size = 1);
+
// Branching helpers.
void BranchIf(Node* condition, Label* if_true, Label* if_false);
@@ -348,8 +380,6 @@
virtual void CallEpilogue();
private:
- friend class CodeAssemblerTester;
-
CodeAssembler(Isolate* isolate, Zone* zone, CallDescriptor* call_descriptor,
Code::Flags flags, const char* name);
@@ -360,7 +390,7 @@
Code::Flags flags_;
const char* name_;
bool code_generated_;
- ZoneVector<Variable::Impl*> variables_;
+ ZoneSet<Variable::Impl*> variables_;
DISALLOW_COPY_AND_ASSIGN(CodeAssembler);
};