Commit c0630818 authored by bjaideep's avatar bjaideep Committed by Commit bot

PPC/s390: [builtins] Use BUILTIN frame in DatePrototype_GetField

Port 198e09de

Original commit message:

    Construct a BUILTIN frame before throwing an exception from runtime.

R=jgruber@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/2083523004
Cr-Commit-Position: refs/heads/master@{#37118}
parent 97ae43ac
...@@ -1723,6 +1723,9 @@ void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) { ...@@ -1723,6 +1723,9 @@ void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm, void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm,
int field_index) { int field_index) {
// ----------- S t a t e ------------- // ----------- S t a t e -------------
// -- r3 : number of arguments
// -- r4 : function
// -- cp : context
// -- lr : return address // -- lr : return address
// -- sp[0] : receiver // -- sp[0] : receiver
// ----------------------------------- // -----------------------------------
...@@ -1732,7 +1735,7 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm, ...@@ -1732,7 +1735,7 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm,
{ {
__ Pop(r3); __ Pop(r3);
__ JumpIfSmi(r3, &receiver_not_date); __ JumpIfSmi(r3, &receiver_not_date);
__ CompareObjectType(r3, r4, r5, JS_DATE_TYPE); __ CompareObjectType(r3, r5, r6, JS_DATE_TYPE);
__ bne(&receiver_not_date); __ bne(&receiver_not_date);
} }
...@@ -1762,7 +1765,14 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm, ...@@ -1762,7 +1765,14 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm,
// 3. Raise a TypeError if the receiver is not a date. // 3. Raise a TypeError if the receiver is not a date.
__ bind(&receiver_not_date); __ bind(&receiver_not_date);
__ TailCallRuntime(Runtime::kThrowNotDateError); {
FrameScope scope(masm, StackFrame::MANUAL);
__ push(r3);
__ PushStandardFrame(r4);
__ LoadSmiLiteral(r7, Smi::FromInt(0));
__ push(r7);
__ CallRuntime(Runtime::kThrowNotDateError);
}
} }
// static // static
......
...@@ -1693,6 +1693,10 @@ void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) { ...@@ -1693,6 +1693,10 @@ void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm, void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm,
int field_index) { int field_index) {
// ----------- S t a t e ------------- // ----------- S t a t e -------------
// -- r2 : number of arguments
// -- r3 : function
// -- cp : context
// -- lr : return address // -- lr : return address
// -- sp[0] : receiver // -- sp[0] : receiver
// ----------------------------------- // -----------------------------------
...@@ -1702,7 +1706,7 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm, ...@@ -1702,7 +1706,7 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm,
{ {
__ Pop(r2); __ Pop(r2);
__ JumpIfSmi(r2, &receiver_not_date); __ JumpIfSmi(r2, &receiver_not_date);
__ CompareObjectType(r2, r3, r4, JS_DATE_TYPE); __ CompareObjectType(r2, r4, r5, JS_DATE_TYPE);
__ bne(&receiver_not_date); __ bne(&receiver_not_date);
} }
...@@ -1732,7 +1736,14 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm, ...@@ -1732,7 +1736,14 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm,
// 3. Raise a TypeError if the receiver is not a date. // 3. Raise a TypeError if the receiver is not a date.
__ bind(&receiver_not_date); __ bind(&receiver_not_date);
__ TailCallRuntime(Runtime::kThrowNotDateError); {
FrameScope scope(masm, StackFrame::MANUAL);
__ push(r2);
__ PushStandardFrame(r3);
__ LoadSmiLiteral(r6, Smi::FromInt(0));
__ push(r6);
__ CallRuntime(Runtime::kThrowNotDateError);
}
} }
// static // static
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment