Revert "Revert "Upgrade to 5.0.71.48"" DO NOT MERGE
This reverts commit f2e3994fa5148cc3d9946666f0b0596290192b0e,
and updates the x64 makefile properly so it doesn't break that
build.
FPIIM-449
Change-Id: Ib83e35bfbae6af627451c926a9650ec57c045605
(cherry picked from commit 109988c7ccb6f3fd1a58574fa3dfb88beaef6632)
diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h
index 1aa2c74..9c0b796 100644
--- a/src/x64/macro-assembler-x64.h
+++ b/src/x64/macro-assembler-x64.h
@@ -18,6 +18,7 @@
// Give alias names to registers for calling conventions.
const Register kReturnRegister0 = {Register::kCode_rax};
const Register kReturnRegister1 = {Register::kCode_rdx};
+const Register kReturnRegister2 = {Register::kCode_r8};
const Register kJSFunctionRegister = {Register::kCode_rdi};
const Register kContextRegister = {Register::kCode_rsi};
const Register kInterpreterAccumulatorRegister = {Register::kCode_rax};
@@ -217,7 +218,7 @@
Register scratch,
Label* branch,
Label::Distance distance = Label::kFar) {
- InNewSpace(object, scratch, not_equal, branch, distance);
+ InNewSpace(object, scratch, zero, branch, distance);
}
// Check if object is in new space. Jumps if the object is in new space.
@@ -226,7 +227,7 @@
Register scratch,
Label* branch,
Label::Distance distance = Label::kFar) {
- InNewSpace(object, scratch, equal, branch, distance);
+ InNewSpace(object, scratch, not_zero, branch, distance);
}
// Check if an object has the black incremental marking color. Also uses rcx!
@@ -293,6 +294,11 @@
PointersToHereCheck pointers_to_here_check_for_value =
kPointersToHereMaybeInteresting);
+ // Notify the garbage collector that we wrote a code entry into a
+ // JSFunction. Only scratch is clobbered by the operation.
+ void RecordWriteCodeEntryField(Register js_function, Register code_entry,
+ Register scratch);
+
void RecordWriteForMap(
Register object,
Register map,
@@ -395,10 +401,6 @@
InvokeFlag flag,
const CallWrapper& call_wrapper);
- // Invoke specified builtin JavaScript function.
- void InvokeBuiltin(int native_context_index, InvokeFlag flag,
- const CallWrapper& call_wrapper = NullCallWrapper());
-
// ---------------------------------------------------------------------------
// Smi tagging, untagging and operations on tagged smis.
@@ -430,6 +432,12 @@
void SmiToInteger64(Register dst, Register src);
void SmiToInteger64(Register dst, const Operand& src);
+ // Convert smi to double.
+ void SmiToDouble(XMMRegister dst, Register src) {
+ SmiToInteger32(kScratchRegister, src);
+ Cvtlsi2sd(dst, kScratchRegister);
+ }
+
// Multiply a positive smi's integer value by a power of two.
// Provides result as 64-bit integer value.
void PositiveSmiTimesPowerOfTwoToInteger64(Register dst,
@@ -811,6 +819,8 @@
void Cvtlsi2sd(XMMRegister dst, Register src);
void Cvtlsi2sd(XMMRegister dst, const Operand& src);
+ void Cvtlsi2ss(XMMRegister dst, Register src);
+ void Cvtlsi2ss(XMMRegister dst, const Operand& src);
void Cvtqsi2ss(XMMRegister dst, Register src);
void Cvtqsi2ss(XMMRegister dst, const Operand& src);
@@ -822,6 +832,8 @@
void Cvtsd2si(Register dst, XMMRegister src);
+ void Cvttss2si(Register dst, XMMRegister src);
+ void Cvttss2si(Register dst, const Operand& src);
void Cvttsd2si(Register dst, XMMRegister src);
void Cvttsd2si(Register dst, const Operand& src);
void Cvttss2siq(Register dst, XMMRegister src);
@@ -1204,6 +1216,9 @@
// enabled via --debug-code.
void AssertBoundFunction(Register object);
+ // Abort execution if argument is not a JSReceiver, enabled via --debug-code.
+ void AssertReceiver(Register object);
+
// Abort execution if argument is not undefined or an AllocationSite, enabled
// via --debug-code.
void AssertUndefinedOrAllocationSite(Register object);
@@ -1540,8 +1555,7 @@
// Expects object in rax and returns map with validated enum cache
// in rax. Assumes that any other register can be used as a scratch.
- void CheckEnumCache(Register null_value,
- Label* call_runtime);
+ void CheckEnumCache(Label* call_runtime);
// AllocationMemento support. Arrays may have an associated
// AllocationMemento object that can be checked for in order to pretransition