Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Side by Side Diff: src/builtins/arm/builtins-arm.cc

Issue 2606733002: [stubs] Port FastNewObjectStub to TF (Closed)
Patch Set: Review feedback Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm64/interface-descriptors-arm64.cc ('k') | src/builtins/arm64/builtins-arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_ARM 5 #if V8_TARGET_ARCH_ARM
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 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 __ b(ne, &new_object); 319 __ b(ne, &new_object);
320 320
321 // 5. Allocate a JSValue wrapper for the number. 321 // 5. Allocate a JSValue wrapper for the number.
322 __ AllocateJSValue(r0, r1, r2, r4, r5, &new_object); 322 __ AllocateJSValue(r0, r1, r2, r4, r5, &new_object);
323 __ b(&drop_frame_and_ret); 323 __ b(&drop_frame_and_ret);
324 324
325 // 6. Fallback to the runtime to create new object. 325 // 6. Fallback to the runtime to create new object.
326 __ bind(&new_object); 326 __ bind(&new_object);
327 { 327 {
328 FrameScope scope(masm, StackFrame::MANUAL); 328 FrameScope scope(masm, StackFrame::MANUAL);
329 FastNewObjectStub stub(masm->isolate());
330 __ SmiTag(r6); 329 __ SmiTag(r6);
331 __ EnterBuiltinFrame(cp, r1, r6); 330 __ EnterBuiltinFrame(cp, r1, r6);
332 __ Push(r2); // first argument 331 __ Push(r2); // first argument
333 __ CallStub(&stub); 332 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(),
333 RelocInfo::CODE_TARGET);
334 __ Pop(r2); 334 __ Pop(r2);
335 __ LeaveBuiltinFrame(cp, r1, r6); 335 __ LeaveBuiltinFrame(cp, r1, r6);
336 __ SmiUntag(r6); 336 __ SmiUntag(r6);
337 } 337 }
338 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset)); 338 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset));
339 339
340 __ bind(&drop_frame_and_ret); 340 __ bind(&drop_frame_and_ret);
341 { 341 {
342 __ Drop(r6); 342 __ Drop(r6);
343 __ Ret(1); 343 __ Ret(1);
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 __ b(ne, &new_object); 467 __ b(ne, &new_object);
468 468
469 // 5. Allocate a JSValue wrapper for the string. 469 // 5. Allocate a JSValue wrapper for the string.
470 __ AllocateJSValue(r0, r1, r2, r4, r5, &new_object); 470 __ AllocateJSValue(r0, r1, r2, r4, r5, &new_object);
471 __ b(&drop_frame_and_ret); 471 __ b(&drop_frame_and_ret);
472 472
473 // 6. Fallback to the runtime to create new object. 473 // 6. Fallback to the runtime to create new object.
474 __ bind(&new_object); 474 __ bind(&new_object);
475 { 475 {
476 FrameScope scope(masm, StackFrame::MANUAL); 476 FrameScope scope(masm, StackFrame::MANUAL);
477 FastNewObjectStub stub(masm->isolate());
478 __ SmiTag(r6); 477 __ SmiTag(r6);
479 __ EnterBuiltinFrame(cp, r1, r6); 478 __ EnterBuiltinFrame(cp, r1, r6);
480 __ Push(r2); // first argument 479 __ Push(r2); // first argument
481 __ CallStub(&stub); 480 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(),
481 RelocInfo::CODE_TARGET);
482 __ Pop(r2); 482 __ Pop(r2);
483 __ LeaveBuiltinFrame(cp, r1, r6); 483 __ LeaveBuiltinFrame(cp, r1, r6);
484 __ SmiUntag(r6); 484 __ SmiUntag(r6);
485 } 485 }
486 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset)); 486 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset));
487 487
488 __ bind(&drop_frame_and_ret); 488 __ bind(&drop_frame_and_ret);
489 { 489 {
490 __ Drop(r6); 490 __ Drop(r6);
491 __ Ret(1); 491 __ Ret(1);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 { 567 {
568 FrameAndConstantPoolScope scope(masm, StackFrame::CONSTRUCT); 568 FrameAndConstantPoolScope scope(masm, StackFrame::CONSTRUCT);
569 569
570 // Preserve the incoming parameters on the stack. 570 // Preserve the incoming parameters on the stack.
571 __ SmiTag(r0); 571 __ SmiTag(r0);
572 __ Push(cp, r0); 572 __ Push(cp, r0);
573 573
574 if (create_implicit_receiver) { 574 if (create_implicit_receiver) {
575 // Allocate the new receiver object. 575 // Allocate the new receiver object.
576 __ Push(r1, r3); 576 __ Push(r1, r3);
577 FastNewObjectStub stub(masm->isolate()); 577 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(),
578 __ CallStub(&stub); 578 RelocInfo::CODE_TARGET);
579 __ mov(r4, r0); 579 __ mov(r4, r0);
580 __ Pop(r1, r3); 580 __ Pop(r1, r3);
581 581
582 // ----------- S t a t e ------------- 582 // ----------- S t a t e -------------
583 // -- r1: constructor function 583 // -- r1: constructor function
584 // -- r3: new target 584 // -- r3: new target
585 // -- r4: newly allocated object 585 // -- r4: newly allocated object
586 // ----------------------------------- 586 // -----------------------------------
587 587
588 // Retrieve smi-tagged arguments count from the stack. 588 // Retrieve smi-tagged arguments count from the stack.
(...skipping 2298 matching lines...) Expand 10 before | Expand all | Expand 10 after
2887 __ bkpt(0); 2887 __ bkpt(0);
2888 } 2888 }
2889 } 2889 }
2890 2890
2891 #undef __ 2891 #undef __
2892 2892
2893 } // namespace internal 2893 } // namespace internal
2894 } // namespace v8 2894 } // namespace v8
2895 2895
2896 #endif // V8_TARGET_ARCH_ARM 2896 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/arm64/interface-descriptors-arm64.cc ('k') | src/builtins/arm64/builtins-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698