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/compiler/linkage.h b/src/compiler/linkage.h
index 252f044..3012f56 100644
--- a/src/compiler/linkage.h
+++ b/src/compiler/linkage.h
@@ -76,6 +76,12 @@
kPointerSize);
}
+ static LinkageLocation ForSavedCallerMarker() {
+ return ForCalleeFrameSlot((StandardFrameConstants::kCallerPCOffset -
+ StandardFrameConstants::kMarkerOffset) /
+ kPointerSize);
+ }
+
static LinkageLocation ConvertToTailCallerLocation(
LinkageLocation caller_location, int stack_param_delta) {
if (!caller_location.IsRegister()) {
@@ -140,8 +146,7 @@
enum Kind {
kCallCodeObject, // target is a Code object
kCallJSFunction, // target is a JSFunction object
- kCallAddress, // target is a machine pointer
- kLazyBailout // the call is no-op, only used for lazy bailout
+ kCallAddress // target is a machine pointer
};
enum Flag {
@@ -153,9 +158,12 @@
kHasLocalCatchHandler = 1u << 4,
kSupportsTailCalls = 1u << 5,
kCanUseRoots = 1u << 6,
- // Indicates that the native stack should be used for a code object. This
- // information is important for native calls on arm64.
+ // (arm64 only) native stack should be used for arguments.
kUseNativeStack = 1u << 7,
+ // (arm64 only) call instruction has to restore JSSP.
+ kRestoreJSSP = 1u << 8,
+ // Causes the code generator to initialize the root register.
+ kInitializeRootRegister = 1u << 9,
kPatchableCallSiteWithNop = kPatchableCallSite | kNeedsNopAfterCall
};
typedef base::Flags<Flag> Flags;
@@ -222,6 +230,9 @@
bool NeedsFrameState() const { return flags() & kNeedsFrameState; }
bool SupportsTailCalls() const { return flags() & kSupportsTailCalls; }
bool UseNativeStack() const { return flags() & kUseNativeStack; }
+ bool InitializeRootRegister() const {
+ return flags() & kInitializeRootRegister;
+ }
LinkageLocation GetReturnLocation(size_t index) const {
return location_sig_->GetReturn(index);
@@ -313,8 +324,6 @@
Zone* zone, Runtime::FunctionId function, int parameter_count,
Operator::Properties properties, CallDescriptor::Flags flags);
- static CallDescriptor* GetLazyBailoutDescriptor(Zone* zone);
-
static CallDescriptor* GetStubCallDescriptor(
Isolate* isolate, Zone* zone, const CallInterfaceDescriptor& descriptor,
int stack_parameter_count, CallDescriptor::Flags flags,
@@ -326,13 +335,9 @@
// for the host platform. This simplified calling convention only supports
// integers and pointers of one word size each, i.e. no floating point,
// structs, pointers to members, etc.
- static CallDescriptor* GetSimplifiedCDescriptor(Zone* zone,
- const MachineSignature* sig);
-
- // Creates a call descriptor for interpreter handler code stubs. These are not
- // intended to be called directly but are instead dispatched to by the
- // interpreter.
- static CallDescriptor* GetInterpreterDispatchDescriptor(Zone* zone);
+ static CallDescriptor* GetSimplifiedCDescriptor(
+ Zone* zone, const MachineSignature* sig,
+ bool set_initialize_root_flag = false);
// Get the location of an (incoming) parameter to this function.
LinkageLocation GetParameterLocation(int index) const {
@@ -383,15 +388,6 @@
// A special {OsrValue} index to indicate the context spill slot.
static const int kOsrContextSpillSlotIndex = -1;
- // Special parameter indices used to pass fixed register data through
- // interpreter dispatches.
- static const int kInterpreterAccumulatorParameter = 0;
- static const int kInterpreterRegisterFileParameter = 1;
- static const int kInterpreterBytecodeOffsetParameter = 2;
- static const int kInterpreterBytecodeArrayParameter = 3;
- static const int kInterpreterDispatchTableParameter = 4;
- static const int kInterpreterContextParameter = 5;
-
private:
CallDescriptor* const incoming_;