| Index: src/arm64/lithium-codegen-arm64.cc
|
| diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc
|
| index 969af2b06da77b0645b32e5f3310a78d249b3d23..46e038537869493fcbd70cc6fd104b445273819d 100644
|
| --- a/src/arm64/lithium-codegen-arm64.cc
|
| +++ b/src/arm64/lithium-codegen-arm64.cc
|
| @@ -430,7 +430,7 @@ void LCodeGen::DoCallFunction(LCallFunction* instr) {
|
| ASSERT(ToRegister(instr->result()).Is(x0));
|
|
|
| int arity = instr->arity();
|
| - CallFunctionStub stub(arity, instr->hydrogen()->function_flags());
|
| + CallFunctionStub stub(isolate(), arity, instr->hydrogen()->function_flags());
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| }
|
|
|
| @@ -444,7 +444,7 @@ void LCodeGen::DoCallNew(LCallNew* instr) {
|
| // No cell in x2 for construct type feedback in optimized code.
|
| __ LoadRoot(x2, Heap::kUndefinedValueRootIndex);
|
|
|
| - CallConstructStub stub(NO_CALL_FUNCTION_FLAGS);
|
| + CallConstructStub stub(isolate(), NO_CALL_FUNCTION_FLAGS);
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
|
|
|
| ASSERT(ToRegister(instr->result()).is(x0));
|
| @@ -466,7 +466,7 @@ void LCodeGen::DoCallNewArray(LCallNewArray* instr) {
|
| : DONT_OVERRIDE;
|
|
|
| if (instr->arity() == 0) {
|
| - ArrayNoArgumentConstructorStub stub(kind, override_mode);
|
| + ArrayNoArgumentConstructorStub stub(isolate(), kind, override_mode);
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
|
| } else if (instr->arity() == 1) {
|
| Label done;
|
| @@ -478,17 +478,19 @@ void LCodeGen::DoCallNewArray(LCallNewArray* instr) {
|
| __ Cbz(x10, &packed_case);
|
|
|
| ElementsKind holey_kind = GetHoleyElementsKind(kind);
|
| - ArraySingleArgumentConstructorStub stub(holey_kind, override_mode);
|
| + ArraySingleArgumentConstructorStub stub(isolate(),
|
| + holey_kind,
|
| + override_mode);
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
|
| __ B(&done);
|
| __ Bind(&packed_case);
|
| }
|
|
|
| - ArraySingleArgumentConstructorStub stub(kind, override_mode);
|
| + ArraySingleArgumentConstructorStub stub(isolate(), kind, override_mode);
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
|
| __ Bind(&done);
|
| } else {
|
| - ArrayNArgumentsConstructorStub stub(kind, override_mode);
|
| + ArrayNArgumentsConstructorStub stub(isolate(), kind, override_mode);
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr);
|
| }
|
|
|
| @@ -710,7 +712,7 @@ bool LCodeGen::GeneratePrologue() {
|
| Comment(";;; Allocate local context");
|
| // Argument to NewContext is the function, which is in x1.
|
| if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
| - FastNewContextStub stub(heap_slots);
|
| + FastNewContextStub stub(isolate(), heap_slots);
|
| __ CallStub(&stub);
|
| } else {
|
| __ Push(x1);
|
| @@ -1738,7 +1740,7 @@ void LCodeGen::DoArithmeticT(LArithmeticT* instr) {
|
| ASSERT(ToRegister(instr->right()).is(x0));
|
| ASSERT(ToRegister(instr->result()).is(x0));
|
|
|
| - BinaryOpICStub stub(instr->op(), NO_OVERWRITE);
|
| + BinaryOpICStub stub(isolate(), instr->op(), NO_OVERWRITE);
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| }
|
|
|
| @@ -2049,17 +2051,17 @@ void LCodeGen::DoCallStub(LCallStub* instr) {
|
| ASSERT(ToRegister(instr->result()).is(x0));
|
| switch (instr->hydrogen()->major_key()) {
|
| case CodeStub::RegExpExec: {
|
| - RegExpExecStub stub;
|
| + RegExpExecStub stub(isolate());
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| break;
|
| }
|
| case CodeStub::SubString: {
|
| - SubStringStub stub;
|
| + SubStringStub stub(isolate());
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| break;
|
| }
|
| case CodeStub::StringCompare: {
|
| - StringCompareStub stub;
|
| + StringCompareStub stub(isolate());
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| break;
|
| }
|
| @@ -2788,7 +2790,8 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
|
| // space for nested functions that don't need literals cloning.
|
| bool pretenure = instr->hydrogen()->pretenure();
|
| if (!pretenure && instr->hydrogen()->has_no_literals()) {
|
| - FastNewClosureStub stub(instr->hydrogen()->strict_mode(),
|
| + FastNewClosureStub stub(isolate(),
|
| + instr->hydrogen()->strict_mode(),
|
| instr->hydrogen()->is_generator());
|
| __ Mov(x2, Operand(instr->hydrogen()->shared_info()));
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| @@ -2963,7 +2966,7 @@ void LCodeGen::DoInstanceOf(LInstanceOf* instr) {
|
| ASSERT(ToRegister(instr->left()).Is(InstanceofStub::left()));
|
| ASSERT(ToRegister(instr->right()).Is(InstanceofStub::right()));
|
|
|
| - InstanceofStub stub(InstanceofStub::kArgsInRegisters);
|
| + InstanceofStub stub(isolate(), InstanceofStub::kArgsInRegisters);
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
|
|
| // InstanceofStub returns a result in x0:
|
| @@ -3078,7 +3081,7 @@ void LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) {
|
| ASSERT(ToRegister(instr->value()).Is(InstanceofStub::left()));
|
| __ LoadObject(InstanceofStub::right(), instr->function());
|
|
|
| - InstanceofStub stub(flags);
|
| + InstanceofStub stub(isolate(), flags);
|
| CallCodeGeneric(stub.GetCode(isolate()),
|
| RelocInfo::CODE_TARGET,
|
| instr,
|
| @@ -3990,7 +3993,7 @@ void LCodeGen::DoPower(LPower* instr) {
|
| ASSERT(ToDoubleRegister(instr->result()).is(d0));
|
|
|
| if (exponent_type.IsSmi()) {
|
| - MathPowStub stub(MathPowStub::TAGGED);
|
| + MathPowStub stub(isolate(), MathPowStub::TAGGED);
|
| __ CallStub(&stub);
|
| } else if (exponent_type.IsTagged()) {
|
| Label no_deopt;
|
| @@ -3999,18 +4002,18 @@ void LCodeGen::DoPower(LPower* instr) {
|
| DeoptimizeIfNotRoot(x0, Heap::kHeapNumberMapRootIndex,
|
| instr->environment());
|
| __ Bind(&no_deopt);
|
| - MathPowStub stub(MathPowStub::TAGGED);
|
| + MathPowStub stub(isolate(), MathPowStub::TAGGED);
|
| __ CallStub(&stub);
|
| } else if (exponent_type.IsInteger32()) {
|
| // Ensure integer exponent has no garbage in top 32-bits, as MathPowStub
|
| // supports large integer exponents.
|
| Register exponent = ToRegister(instr->right());
|
| __ Sxtw(exponent, exponent);
|
| - MathPowStub stub(MathPowStub::INTEGER);
|
| + MathPowStub stub(isolate(), MathPowStub::INTEGER);
|
| __ CallStub(&stub);
|
| } else {
|
| ASSERT(exponent_type.IsDouble());
|
| - MathPowStub stub(MathPowStub::DOUBLE);
|
| + MathPowStub stub(isolate(), MathPowStub::DOUBLE);
|
| __ CallStub(&stub);
|
| }
|
| }
|
| @@ -5312,7 +5315,8 @@ void LCodeGen::DoStringAdd(LStringAdd* instr) {
|
| ASSERT(ToRegister(instr->context()).is(cp));
|
| ASSERT(ToRegister(instr->left()).Is(x1));
|
| ASSERT(ToRegister(instr->right()).Is(x0));
|
| - StringAddStub stub(instr->hydrogen()->flags(),
|
| + StringAddStub stub(isolate(),
|
| + instr->hydrogen()->flags(),
|
| instr->hydrogen()->pretenure_flag());
|
| CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| }
|
| @@ -5637,7 +5641,7 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) {
|
| this, Safepoint::kWithRegistersAndDoubles);
|
| __ Mov(x1, Operand(to_map));
|
| bool is_js_array = from_map->instance_type() == JS_ARRAY_TYPE;
|
| - TransitionElementsKindStub stub(from_kind, to_kind, is_js_array);
|
| + TransitionElementsKindStub stub(isolate(), from_kind, to_kind, is_js_array);
|
| __ CallStub(&stub);
|
| RecordSafepointWithRegistersAndDoubles(
|
| instr->pointer_map(), 0, Safepoint::kLazyDeopt);
|
|
|