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

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

Issue 430503007: Rename ASSERT* to DCHECK*. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE and fixes Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/arm/assembler-arm-inl.h ('k') | src/arm/code-stubs-arm.h » ('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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_ARM 7 #if V8_TARGET_ARCH_ARM
8 8
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/debug.h" 10 #include "src/debug.h"
(...skipping 22 matching lines...) Expand all
33 // -- sp[4 * (argc - 1)] : first argument (argc == r0) 33 // -- sp[4 * (argc - 1)] : first argument (argc == r0)
34 // -- sp[4 * argc] : receiver 34 // -- sp[4 * argc] : receiver
35 // ----------------------------------- 35 // -----------------------------------
36 36
37 // Insert extra arguments. 37 // Insert extra arguments.
38 int num_extra_args = 0; 38 int num_extra_args = 0;
39 if (extra_args == NEEDS_CALLED_FUNCTION) { 39 if (extra_args == NEEDS_CALLED_FUNCTION) {
40 num_extra_args = 1; 40 num_extra_args = 1;
41 __ push(r1); 41 __ push(r1);
42 } else { 42 } else {
43 ASSERT(extra_args == NO_EXTRA_ARGUMENTS); 43 DCHECK(extra_args == NO_EXTRA_ARGUMENTS);
44 } 44 }
45 45
46 // JumpToExternalReference expects r0 to contain the number of arguments 46 // JumpToExternalReference expects r0 to contain the number of arguments
47 // including the receiver and the extra arguments. 47 // including the receiver and the extra arguments.
48 __ add(r0, r0, Operand(num_extra_args + 1)); 48 __ add(r0, r0, Operand(num_extra_args + 1));
49 __ JumpToExternalReference(ExternalReference(id, masm->isolate())); 49 __ JumpToExternalReference(ExternalReference(id, masm->isolate()));
50 } 50 }
51 51
52 52
53 // Load the built-in InternalArray function from the current context. 53 // Load the built-in InternalArray function from the current context.
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 bool create_memento) { 316 bool create_memento) {
317 // ----------- S t a t e ------------- 317 // ----------- S t a t e -------------
318 // -- r0 : number of arguments 318 // -- r0 : number of arguments
319 // -- r1 : constructor function 319 // -- r1 : constructor function
320 // -- r2 : allocation site or undefined 320 // -- r2 : allocation site or undefined
321 // -- lr : return address 321 // -- lr : return address
322 // -- sp[...]: constructor arguments 322 // -- sp[...]: constructor arguments
323 // ----------------------------------- 323 // -----------------------------------
324 324
325 // Should never create mementos for api functions. 325 // Should never create mementos for api functions.
326 ASSERT(!is_api_function || !create_memento); 326 DCHECK(!is_api_function || !create_memento);
327 327
328 Isolate* isolate = masm->isolate(); 328 Isolate* isolate = masm->isolate();
329 329
330 // Enter a construct frame. 330 // Enter a construct frame.
331 { 331 {
332 FrameAndConstantPoolScope scope(masm, StackFrame::CONSTRUCT); 332 FrameAndConstantPoolScope scope(masm, StackFrame::CONSTRUCT);
333 333
334 if (create_memento) { 334 if (create_memento) {
335 __ AssertUndefinedOrAllocationSite(r2, r3); 335 __ AssertUndefinedOrAllocationSite(r2, r3);
336 __ push(r2); 336 __ push(r2);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 __ Allocate(r3, r4, r5, r6, &rt_call, SIZE_IN_WORDS); 404 __ Allocate(r3, r4, r5, r6, &rt_call, SIZE_IN_WORDS);
405 405
406 // Allocated the JSObject, now initialize the fields. Map is set to 406 // Allocated the JSObject, now initialize the fields. Map is set to
407 // initial map and properties and elements are set to empty fixed array. 407 // initial map and properties and elements are set to empty fixed array.
408 // r1: constructor function 408 // r1: constructor function
409 // r2: initial map 409 // r2: initial map
410 // r3: object size (not including memento if create_memento) 410 // r3: object size (not including memento if create_memento)
411 // r4: JSObject (not tagged) 411 // r4: JSObject (not tagged)
412 __ LoadRoot(r6, Heap::kEmptyFixedArrayRootIndex); 412 __ LoadRoot(r6, Heap::kEmptyFixedArrayRootIndex);
413 __ mov(r5, r4); 413 __ mov(r5, r4);
414 ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset); 414 DCHECK_EQ(0 * kPointerSize, JSObject::kMapOffset);
415 __ str(r2, MemOperand(r5, kPointerSize, PostIndex)); 415 __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
416 ASSERT_EQ(1 * kPointerSize, JSObject::kPropertiesOffset); 416 DCHECK_EQ(1 * kPointerSize, JSObject::kPropertiesOffset);
417 __ str(r6, MemOperand(r5, kPointerSize, PostIndex)); 417 __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
418 ASSERT_EQ(2 * kPointerSize, JSObject::kElementsOffset); 418 DCHECK_EQ(2 * kPointerSize, JSObject::kElementsOffset);
419 __ str(r6, MemOperand(r5, kPointerSize, PostIndex)); 419 __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
420 420
421 // Fill all the in-object properties with the appropriate filler. 421 // Fill all the in-object properties with the appropriate filler.
422 // r1: constructor function 422 // r1: constructor function
423 // r2: initial map 423 // r2: initial map
424 // r3: object size (in words, including memento if create_memento) 424 // r3: object size (in words, including memento if create_memento)
425 // r4: JSObject (not tagged) 425 // r4: JSObject (not tagged)
426 // r5: First in-object property of JSObject (not tagged) 426 // r5: First in-object property of JSObject (not tagged)
427 ASSERT_EQ(3 * kPointerSize, JSObject::kHeaderSize); 427 DCHECK_EQ(3 * kPointerSize, JSObject::kHeaderSize);
428 __ LoadRoot(r6, Heap::kUndefinedValueRootIndex); 428 __ LoadRoot(r6, Heap::kUndefinedValueRootIndex);
429 429
430 if (!is_api_function) { 430 if (!is_api_function) {
431 Label no_inobject_slack_tracking; 431 Label no_inobject_slack_tracking;
432 432
433 // Check if slack tracking is enabled. 433 // Check if slack tracking is enabled.
434 __ ldr(ip, FieldMemOperand(r2, Map::kBitField3Offset)); 434 __ ldr(ip, FieldMemOperand(r2, Map::kBitField3Offset));
435 __ DecodeField<Map::ConstructionCount>(ip); 435 __ DecodeField<Map::ConstructionCount>(ip);
436 __ cmp(ip, Operand(JSFunction::kNoSlackTracking)); 436 __ cmp(ip, Operand(JSFunction::kNoSlackTracking));
437 __ b(eq, &no_inobject_slack_tracking); 437 __ b(eq, &no_inobject_slack_tracking);
(...skipping 18 matching lines...) Expand all
456 } 456 }
457 457
458 if (create_memento) { 458 if (create_memento) {
459 __ sub(ip, r3, Operand(AllocationMemento::kSize / kPointerSize)); 459 __ sub(ip, r3, Operand(AllocationMemento::kSize / kPointerSize));
460 __ add(r0, r4, Operand(ip, LSL, kPointerSizeLog2)); // End of object. 460 __ add(r0, r4, Operand(ip, LSL, kPointerSizeLog2)); // End of object.
461 __ InitializeFieldsWithFiller(r5, r0, r6); 461 __ InitializeFieldsWithFiller(r5, r0, r6);
462 462
463 // Fill in memento fields. 463 // Fill in memento fields.
464 // r5: points to the allocated but uninitialized memento. 464 // r5: points to the allocated but uninitialized memento.
465 __ LoadRoot(r6, Heap::kAllocationMementoMapRootIndex); 465 __ LoadRoot(r6, Heap::kAllocationMementoMapRootIndex);
466 ASSERT_EQ(0 * kPointerSize, AllocationMemento::kMapOffset); 466 DCHECK_EQ(0 * kPointerSize, AllocationMemento::kMapOffset);
467 __ str(r6, MemOperand(r5, kPointerSize, PostIndex)); 467 __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
468 // Load the AllocationSite 468 // Load the AllocationSite
469 __ ldr(r6, MemOperand(sp, 2 * kPointerSize)); 469 __ ldr(r6, MemOperand(sp, 2 * kPointerSize));
470 ASSERT_EQ(1 * kPointerSize, AllocationMemento::kAllocationSiteOffset); 470 DCHECK_EQ(1 * kPointerSize, AllocationMemento::kAllocationSiteOffset);
471 __ str(r6, MemOperand(r5, kPointerSize, PostIndex)); 471 __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
472 } else { 472 } else {
473 __ add(r0, r4, Operand(r3, LSL, kPointerSizeLog2)); // End of object. 473 __ add(r0, r4, Operand(r3, LSL, kPointerSizeLog2)); // End of object.
474 __ InitializeFieldsWithFiller(r5, r0, r6); 474 __ InitializeFieldsWithFiller(r5, r0, r6);
475 } 475 }
476 476
477 // Add the object tag to make the JSObject real, so that we can continue 477 // Add the object tag to make the JSObject real, so that we can continue
478 // and jump into the continuation code at any time from now on. Any 478 // and jump into the continuation code at any time from now on. Any
479 // failures need to undo the allocation, so that the heap is in a 479 // failures need to undo the allocation, so that the heap is in a
480 // consistent state and verifiable. 480 // consistent state and verifiable.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 &undo_allocation, 515 &undo_allocation,
516 static_cast<AllocationFlags>(RESULT_CONTAINS_TOP | SIZE_IN_WORDS)); 516 static_cast<AllocationFlags>(RESULT_CONTAINS_TOP | SIZE_IN_WORDS));
517 517
518 // Initialize the FixedArray. 518 // Initialize the FixedArray.
519 // r1: constructor 519 // r1: constructor
520 // r3: number of elements in properties array 520 // r3: number of elements in properties array
521 // r4: JSObject 521 // r4: JSObject
522 // r5: FixedArray (not tagged) 522 // r5: FixedArray (not tagged)
523 __ LoadRoot(r6, Heap::kFixedArrayMapRootIndex); 523 __ LoadRoot(r6, Heap::kFixedArrayMapRootIndex);
524 __ mov(r2, r5); 524 __ mov(r2, r5);
525 ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset); 525 DCHECK_EQ(0 * kPointerSize, JSObject::kMapOffset);
526 __ str(r6, MemOperand(r2, kPointerSize, PostIndex)); 526 __ str(r6, MemOperand(r2, kPointerSize, PostIndex));
527 ASSERT_EQ(1 * kPointerSize, FixedArray::kLengthOffset); 527 DCHECK_EQ(1 * kPointerSize, FixedArray::kLengthOffset);
528 __ SmiTag(r0, r3); 528 __ SmiTag(r0, r3);
529 __ str(r0, MemOperand(r2, kPointerSize, PostIndex)); 529 __ str(r0, MemOperand(r2, kPointerSize, PostIndex));
530 530
531 // Initialize the fields to undefined. 531 // Initialize the fields to undefined.
532 // r1: constructor function 532 // r1: constructor function
533 // r2: First element of FixedArray (not tagged) 533 // r2: First element of FixedArray (not tagged)
534 // r3: number of elements in properties array 534 // r3: number of elements in properties array
535 // r4: JSObject 535 // r4: JSObject
536 // r5: FixedArray (not tagged) 536 // r5: FixedArray (not tagged)
537 __ add(r6, r2, Operand(r3, LSL, kPointerSizeLog2)); // End of object. 537 __ add(r6, r2, Operand(r3, LSL, kPointerSizeLog2)); // End of object.
538 ASSERT_EQ(2 * kPointerSize, FixedArray::kHeaderSize); 538 DCHECK_EQ(2 * kPointerSize, FixedArray::kHeaderSize);
539 { Label loop, entry; 539 { Label loop, entry;
540 __ LoadRoot(r0, Heap::kUndefinedValueRootIndex); 540 __ LoadRoot(r0, Heap::kUndefinedValueRootIndex);
541 __ b(&entry); 541 __ b(&entry);
542 __ bind(&loop); 542 __ bind(&loop);
543 __ str(r0, MemOperand(r2, kPointerSize, PostIndex)); 543 __ str(r0, MemOperand(r2, kPointerSize, PostIndex));
544 __ bind(&entry); 544 __ bind(&entry);
545 __ cmp(r2, r6); 545 __ cmp(r2, r6);
546 __ b(lt, &loop); 546 __ b(lt, &loop);
547 } 547 }
548 548
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 __ bkpt(0); 1551 __ bkpt(0);
1552 } 1552 }
1553 } 1553 }
1554 1554
1555 1555
1556 #undef __ 1556 #undef __
1557 1557
1558 } } // namespace v8::internal 1558 } } // namespace v8::internal
1559 1559
1560 #endif // V8_TARGET_ARCH_ARM 1560 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/arm/assembler-arm-inl.h ('k') | src/arm/code-stubs-arm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698