| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #if V8_TARGET_ARCH_MIPS64 | 5 #if V8_TARGET_ARCH_MIPS64 |
| 6 | 6 |
| 7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
| 8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
| 9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
| 10 #include "src/full-codegen/full-codegen.h" | 10 #include "src/full-codegen/full-codegen.h" |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 __ Branch(&new_object, ne, a1, Operand(a3)); | 332 __ Branch(&new_object, ne, a1, Operand(a3)); |
| 333 | 333 |
| 334 // 5. Allocate a JSValue wrapper for the number. | 334 // 5. Allocate a JSValue wrapper for the number. |
| 335 __ AllocateJSValue(v0, a1, a0, a2, t1, &new_object); | 335 __ AllocateJSValue(v0, a1, a0, a2, t1, &new_object); |
| 336 __ jmp(&drop_frame_and_ret); | 336 __ jmp(&drop_frame_and_ret); |
| 337 | 337 |
| 338 // 6. Fallback to the runtime to create new object. | 338 // 6. Fallback to the runtime to create new object. |
| 339 __ bind(&new_object); | 339 __ bind(&new_object); |
| 340 { | 340 { |
| 341 FrameScope scope(masm, StackFrame::MANUAL); | 341 FrameScope scope(masm, StackFrame::MANUAL); |
| 342 FastNewObjectStub stub(masm->isolate()); | |
| 343 __ SmiTag(t0); | 342 __ SmiTag(t0); |
| 344 __ EnterBuiltinFrame(cp, a1, t0); | 343 __ EnterBuiltinFrame(cp, a1, t0); |
| 345 __ Push(a0); | 344 __ Push(a0); |
| 346 __ CallStub(&stub); | 345 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(), |
| 346 RelocInfo::CODE_TARGET); |
| 347 __ Pop(a0); | 347 __ Pop(a0); |
| 348 __ LeaveBuiltinFrame(cp, a1, t0); | 348 __ LeaveBuiltinFrame(cp, a1, t0); |
| 349 __ SmiUntag(t0); | 349 __ SmiUntag(t0); |
| 350 } | 350 } |
| 351 __ sd(a0, FieldMemOperand(v0, JSValue::kValueOffset)); | 351 __ sd(a0, FieldMemOperand(v0, JSValue::kValueOffset)); |
| 352 | 352 |
| 353 __ bind(&drop_frame_and_ret); | 353 __ bind(&drop_frame_and_ret); |
| 354 { | 354 { |
| 355 __ Dlsa(sp, sp, t0, kPointerSizeLog2); | 355 __ Dlsa(sp, sp, t0, kPointerSizeLog2); |
| 356 __ DropAndRet(1); | 356 __ DropAndRet(1); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 __ Branch(&new_object, ne, a1, Operand(a3)); | 484 __ Branch(&new_object, ne, a1, Operand(a3)); |
| 485 | 485 |
| 486 // 5. Allocate a JSValue wrapper for the string. | 486 // 5. Allocate a JSValue wrapper for the string. |
| 487 __ AllocateJSValue(v0, a1, a0, a2, t1, &new_object); | 487 __ AllocateJSValue(v0, a1, a0, a2, t1, &new_object); |
| 488 __ jmp(&drop_frame_and_ret); | 488 __ jmp(&drop_frame_and_ret); |
| 489 | 489 |
| 490 // 6. Fallback to the runtime to create new object. | 490 // 6. Fallback to the runtime to create new object. |
| 491 __ bind(&new_object); | 491 __ bind(&new_object); |
| 492 { | 492 { |
| 493 FrameScope scope(masm, StackFrame::MANUAL); | 493 FrameScope scope(masm, StackFrame::MANUAL); |
| 494 FastNewObjectStub stub(masm->isolate()); | |
| 495 __ SmiTag(t0); | 494 __ SmiTag(t0); |
| 496 __ EnterBuiltinFrame(cp, a1, t0); | 495 __ EnterBuiltinFrame(cp, a1, t0); |
| 497 __ Push(a0); | 496 __ Push(a0); |
| 498 __ CallStub(&stub); | 497 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(), |
| 498 RelocInfo::CODE_TARGET); |
| 499 __ Pop(a0); | 499 __ Pop(a0); |
| 500 __ LeaveBuiltinFrame(cp, a1, t0); | 500 __ LeaveBuiltinFrame(cp, a1, t0); |
| 501 __ SmiUntag(t0); | 501 __ SmiUntag(t0); |
| 502 } | 502 } |
| 503 __ sd(a0, FieldMemOperand(v0, JSValue::kValueOffset)); | 503 __ sd(a0, FieldMemOperand(v0, JSValue::kValueOffset)); |
| 504 | 504 |
| 505 __ bind(&drop_frame_and_ret); | 505 __ bind(&drop_frame_and_ret); |
| 506 { | 506 { |
| 507 __ Dlsa(sp, sp, t0, kPointerSizeLog2); | 507 __ Dlsa(sp, sp, t0, kPointerSizeLog2); |
| 508 __ DropAndRet(1); | 508 __ DropAndRet(1); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 // Enter a construct frame. | 575 // Enter a construct frame. |
| 576 { | 576 { |
| 577 FrameScope scope(masm, StackFrame::CONSTRUCT); | 577 FrameScope scope(masm, StackFrame::CONSTRUCT); |
| 578 | 578 |
| 579 // Preserve the incoming parameters on the stack. | 579 // Preserve the incoming parameters on the stack. |
| 580 __ SmiTag(a0); | 580 __ SmiTag(a0); |
| 581 __ Push(cp, a0); | 581 __ Push(cp, a0); |
| 582 | 582 |
| 583 if (create_implicit_receiver) { | 583 if (create_implicit_receiver) { |
| 584 __ Push(a1, a3); | 584 __ Push(a1, a3); |
| 585 FastNewObjectStub stub(masm->isolate()); | 585 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(), |
| 586 __ CallStub(&stub); | 586 RelocInfo::CODE_TARGET); |
| 587 __ mov(t0, v0); | 587 __ mov(t0, v0); |
| 588 __ Pop(a1, a3); | 588 __ Pop(a1, a3); |
| 589 | 589 |
| 590 // ----------- S t a t e ------------- | 590 // ----------- S t a t e ------------- |
| 591 // -- a1: constructor function | 591 // -- a1: constructor function |
| 592 // -- a3: new target | 592 // -- a3: new target |
| 593 // -- t0: newly allocated object | 593 // -- t0: newly allocated object |
| 594 // ----------------------------------- | 594 // ----------------------------------- |
| 595 __ ld(a0, MemOperand(sp)); | 595 __ ld(a0, MemOperand(sp)); |
| 596 } | 596 } |
| (...skipping 2400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2997 __ break_(0xCC); | 2997 __ break_(0xCC); |
| 2998 } | 2998 } |
| 2999 } | 2999 } |
| 3000 | 3000 |
| 3001 #undef __ | 3001 #undef __ |
| 3002 | 3002 |
| 3003 } // namespace internal | 3003 } // namespace internal |
| 3004 } // namespace v8 | 3004 } // namespace v8 |
| 3005 | 3005 |
| 3006 #endif // V8_TARGET_ARCH_MIPS64 | 3006 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |