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

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

Issue 1442643009: Rename original constructor to new target (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 5 years, 1 month 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 | « no previous file | src/arm/code-stubs-arm.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 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 __ TailCallRuntime(Runtime::kSymbolDescriptiveString, 1, 1); 204 __ TailCallRuntime(Runtime::kSymbolDescriptiveString, 1, 1);
205 } 205 }
206 } 206 }
207 207
208 208
209 // static 209 // static
210 void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) { 210 void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
211 // ----------- S t a t e ------------- 211 // ----------- S t a t e -------------
212 // -- r0 : number of arguments 212 // -- r0 : number of arguments
213 // -- r1 : constructor function 213 // -- r1 : constructor function
214 // -- r3 : original constructor 214 // -- r3 : new target
215 // -- lr : return address 215 // -- lr : return address
216 // -- sp[(argc - n - 1) * 4] : arg[n] (zero based) 216 // -- sp[(argc - n - 1) * 4] : arg[n] (zero based)
217 // -- sp[argc * 4] : receiver 217 // -- sp[argc * 4] : receiver
218 // ----------------------------------- 218 // -----------------------------------
219 219
220 // 1. Load the first argument into r2 and get rid of the rest (including the 220 // 1. Load the first argument into r2 and get rid of the rest (including the
221 // receiver). 221 // receiver).
222 { 222 {
223 Label no_arguments, done; 223 Label no_arguments, done;
224 __ sub(r0, r0, Operand(1), SetCC); 224 __ sub(r0, r0, Operand(1), SetCC);
(...skipping 19 matching lines...) Expand all
244 ToStringStub stub(masm->isolate()); 244 ToStringStub stub(masm->isolate());
245 __ Push(r1, r3); 245 __ Push(r1, r3);
246 __ Move(r0, r2); 246 __ Move(r0, r2);
247 __ CallStub(&stub); 247 __ CallStub(&stub);
248 __ Move(r2, r0); 248 __ Move(r2, r0);
249 __ Pop(r1, r3); 249 __ Pop(r1, r3);
250 } 250 }
251 __ bind(&done_convert); 251 __ bind(&done_convert);
252 } 252 }
253 253
254 // 3. Check if original constructor and constructor differ. 254 // 3. Check if new target and constructor differ.
255 Label new_object; 255 Label new_object;
256 __ cmp(r1, r3); 256 __ cmp(r1, r3);
257 __ b(ne, &new_object); 257 __ b(ne, &new_object);
258 258
259 // 4. Allocate a JSValue wrapper for the string. 259 // 4. Allocate a JSValue wrapper for the string.
260 { 260 {
261 // ----------- S t a t e ------------- 261 // ----------- S t a t e -------------
262 // -- r2 : the first argument 262 // -- r2 : the first argument
263 // -- r1 : constructor function 263 // -- r1 : constructor function
264 // -- r3 : original constructor 264 // -- r3 : new target
265 // -- lr : return address 265 // -- lr : return address
266 // ----------------------------------- 266 // -----------------------------------
267 __ Allocate(JSValue::kSize, r0, r4, r5, &new_object, TAG_OBJECT); 267 __ Allocate(JSValue::kSize, r0, r4, r5, &new_object, TAG_OBJECT);
268 268
269 // Initialize the JSValue in r0. 269 // Initialize the JSValue in r0.
270 __ LoadGlobalFunctionInitialMap(r1, r3, r4); 270 __ LoadGlobalFunctionInitialMap(r1, r3, r4);
271 __ str(r3, FieldMemOperand(r0, HeapObject::kMapOffset)); 271 __ str(r3, FieldMemOperand(r0, HeapObject::kMapOffset));
272 __ LoadRoot(r3, Heap::kEmptyFixedArrayRootIndex); 272 __ LoadRoot(r3, Heap::kEmptyFixedArrayRootIndex);
273 __ str(r3, FieldMemOperand(r0, JSObject::kPropertiesOffset)); 273 __ str(r3, FieldMemOperand(r0, JSObject::kPropertiesOffset));
274 __ str(r3, FieldMemOperand(r0, JSObject::kElementsOffset)); 274 __ str(r3, FieldMemOperand(r0, JSObject::kElementsOffset));
275 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset)); 275 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset));
276 STATIC_ASSERT(JSValue::kSize == 4 * kPointerSize); 276 STATIC_ASSERT(JSValue::kSize == 4 * kPointerSize);
277 __ Ret(); 277 __ Ret();
278 } 278 }
279 279
280 // 5. Fallback to the runtime to create new object. 280 // 5. Fallback to the runtime to create new object.
281 __ bind(&new_object); 281 __ bind(&new_object);
282 { 282 {
283 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); 283 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
284 __ Push(r2, r1, r3); // first argument, constructor, original constructor 284 __ Push(r2, r1, r3); // first argument, constructor, new target
285 __ CallRuntime(Runtime::kNewObject, 2); 285 __ CallRuntime(Runtime::kNewObject, 2);
286 __ Pop(r2); 286 __ Pop(r2);
287 } 287 }
288 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset)); 288 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset));
289 __ Ret(); 289 __ Ret();
290 } 290 }
291 291
292 292
293 static void CallRuntimePassFunction( 293 static void CallRuntimePassFunction(
294 MacroAssembler* masm, Runtime::FunctionId function_id) { 294 MacroAssembler* masm, Runtime::FunctionId function_id) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 GenerateTailCallToSharedCode(masm); 336 GenerateTailCallToSharedCode(masm);
337 } 337 }
338 338
339 339
340 static void Generate_JSConstructStubHelper(MacroAssembler* masm, 340 static void Generate_JSConstructStubHelper(MacroAssembler* masm,
341 bool is_api_function) { 341 bool is_api_function) {
342 // ----------- S t a t e ------------- 342 // ----------- S t a t e -------------
343 // -- r0 : number of arguments 343 // -- r0 : number of arguments
344 // -- r1 : constructor function 344 // -- r1 : constructor function
345 // -- r2 : allocation site or undefined 345 // -- r2 : allocation site or undefined
346 // -- r3 : original constructor 346 // -- r3 : new target
347 // -- lr : return address 347 // -- lr : return address
348 // -- sp[...]: constructor arguments 348 // -- sp[...]: constructor arguments
349 // ----------------------------------- 349 // -----------------------------------
350 350
351 Isolate* isolate = masm->isolate(); 351 Isolate* isolate = masm->isolate();
352 352
353 // Enter a construct frame. 353 // Enter a construct frame.
354 { 354 {
355 FrameAndConstantPoolScope scope(masm, StackFrame::CONSTRUCT); 355 FrameAndConstantPoolScope scope(masm, StackFrame::CONSTRUCT);
356 356
357 // Preserve the incoming parameters on the stack. 357 // Preserve the incoming parameters on the stack.
358 __ AssertUndefinedOrAllocationSite(r2, r4); 358 __ AssertUndefinedOrAllocationSite(r2, r4);
359 __ push(r2); 359 __ push(r2);
360 __ SmiTag(r0); 360 __ SmiTag(r0);
361 __ push(r0); 361 __ push(r0);
362 __ push(r1); 362 __ push(r1);
363 __ push(r3); 363 __ push(r3);
364 364
365 // Try to allocate the object without transitioning into C code. If any of 365 // Try to allocate the object without transitioning into C code. If any of
366 // the preconditions is not met, the code bails out to the runtime call. 366 // the preconditions is not met, the code bails out to the runtime call.
367 Label rt_call, allocated; 367 Label rt_call, allocated;
368 if (FLAG_inline_new) { 368 if (FLAG_inline_new) {
369 ExternalReference debug_step_in_fp = 369 ExternalReference debug_step_in_fp =
370 ExternalReference::debug_step_in_fp_address(isolate); 370 ExternalReference::debug_step_in_fp_address(isolate);
371 __ mov(r2, Operand(debug_step_in_fp)); 371 __ mov(r2, Operand(debug_step_in_fp));
372 __ ldr(r2, MemOperand(r2)); 372 __ ldr(r2, MemOperand(r2));
373 __ tst(r2, r2); 373 __ tst(r2, r2);
374 __ b(ne, &rt_call); 374 __ b(ne, &rt_call);
375 375
376 // Verify that the original constructor is a JSFunction. 376 // Verify that the new target is a JSFunction.
377 __ CompareObjectType(r3, r5, r4, JS_FUNCTION_TYPE); 377 __ CompareObjectType(r3, r5, r4, JS_FUNCTION_TYPE);
378 __ b(ne, &rt_call); 378 __ b(ne, &rt_call);
379 379
380 // Load the initial map and verify that it is in fact a map. 380 // Load the initial map and verify that it is in fact a map.
381 // r3: original constructor 381 // r3: new target
382 __ ldr(r2, FieldMemOperand(r3, JSFunction::kPrototypeOrInitialMapOffset)); 382 __ ldr(r2, FieldMemOperand(r3, JSFunction::kPrototypeOrInitialMapOffset));
383 __ JumpIfSmi(r2, &rt_call); 383 __ JumpIfSmi(r2, &rt_call);
384 __ CompareObjectType(r2, r5, r4, MAP_TYPE); 384 __ CompareObjectType(r2, r5, r4, MAP_TYPE);
385 __ b(ne, &rt_call); 385 __ b(ne, &rt_call);
386 386
387 // Fall back to runtime if the expected base constructor and base 387 // Fall back to runtime if the expected base constructor and base
388 // constructor differ. 388 // constructor differ.
389 __ ldr(r5, FieldMemOperand(r2, Map::kConstructorOrBackPointerOffset)); 389 __ ldr(r5, FieldMemOperand(r2, Map::kConstructorOrBackPointerOffset));
390 __ cmp(r1, r5); 390 __ cmp(r1, r5);
391 __ b(ne, &rt_call); 391 __ b(ne, &rt_call);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 __ InitializeFieldsWithFiller(r5, r0, r6); 492 __ InitializeFieldsWithFiller(r5, r0, r6);
493 493
494 // Add the object tag to make the JSObject real, so that we can continue 494 // Add the object tag to make the JSObject real, so that we can continue
495 // and jump into the continuation code at any time from now on. 495 // and jump into the continuation code at any time from now on.
496 __ add(r4, r4, Operand(kHeapObjectTag)); 496 __ add(r4, r4, Operand(kHeapObjectTag));
497 497
498 // Continue with JSObject being successfully allocated 498 // Continue with JSObject being successfully allocated
499 // r4: JSObject 499 // r4: JSObject
500 __ jmp(&allocated); 500 __ jmp(&allocated);
501 501
502 // Reload the original constructor and fall-through. 502 // Reload the new target and fall-through.
503 __ bind(&rt_call_reload_new_target); 503 __ bind(&rt_call_reload_new_target);
504 __ ldr(r3, MemOperand(sp, 0 * kPointerSize)); 504 __ ldr(r3, MemOperand(sp, 0 * kPointerSize));
505 } 505 }
506 506
507 // Allocate the new receiver object using the runtime call. 507 // Allocate the new receiver object using the runtime call.
508 // r1: constructor function 508 // r1: constructor function
509 // r3: original constructor 509 // r3: new target
510 __ bind(&rt_call); 510 __ bind(&rt_call);
511 511
512 __ push(r1); // constructor function 512 __ push(r1); // constructor function
513 __ push(r3); // original constructor 513 __ push(r3); // new target
514 __ CallRuntime(Runtime::kNewObject, 2); 514 __ CallRuntime(Runtime::kNewObject, 2);
515 __ mov(r4, r0); 515 __ mov(r4, r0);
516 516
517 // Receiver for constructor call allocated. 517 // Receiver for constructor call allocated.
518 // r4: JSObject 518 // r4: JSObject
519 __ bind(&allocated); 519 __ bind(&allocated);
520 520
521 // Restore the parameters. 521 // Restore the parameters.
522 __ pop(r3); 522 __ pop(r3);
523 __ pop(r1); 523 __ pop(r1);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 // Throw away the result of the constructor invocation and use the 599 // Throw away the result of the constructor invocation and use the
600 // on-stack receiver as the result. 600 // on-stack receiver as the result.
601 __ bind(&use_receiver); 601 __ bind(&use_receiver);
602 __ ldr(r0, MemOperand(sp)); 602 __ ldr(r0, MemOperand(sp));
603 603
604 // Remove receiver from the stack, remove caller arguments, and 604 // Remove receiver from the stack, remove caller arguments, and
605 // return. 605 // return.
606 __ bind(&exit); 606 __ bind(&exit);
607 // r0: result 607 // r0: result
608 // sp[0]: receiver (newly allocated object) 608 // sp[0]: receiver (newly allocated object)
609 // sp[1]: new.target (original constructor) 609 // sp[1]: new target
610 // sp[2]: number of arguments (smi-tagged) 610 // sp[2]: number of arguments (smi-tagged)
611 __ ldr(r1, MemOperand(sp, 2 * kPointerSize)); 611 __ ldr(r1, MemOperand(sp, 2 * kPointerSize));
612 612
613 // Leave construct frame. 613 // Leave construct frame.
614 } 614 }
615 615
616 __ add(sp, sp, Operand(r1, LSL, kPointerSizeLog2 - 1)); 616 __ add(sp, sp, Operand(r1, LSL, kPointerSizeLog2 - 1));
617 __ add(sp, sp, Operand(kPointerSize)); 617 __ add(sp, sp, Operand(kPointerSize));
618 __ IncrementCounter(isolate->counters()->constructed_objects(), 1, r1, r2); 618 __ IncrementCounter(isolate->counters()->constructed_objects(), 1, r1, r2);
619 __ Jump(lr); 619 __ Jump(lr);
620 } 620 }
621 621
622 622
623 void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) { 623 void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
624 Generate_JSConstructStubHelper(masm, false); 624 Generate_JSConstructStubHelper(masm, false);
625 } 625 }
626 626
627 627
628 void Builtins::Generate_JSConstructStubApi(MacroAssembler* masm) { 628 void Builtins::Generate_JSConstructStubApi(MacroAssembler* masm) {
629 Generate_JSConstructStubHelper(masm, true); 629 Generate_JSConstructStubHelper(masm, true);
630 } 630 }
631 631
632 632
633 void Builtins::Generate_JSConstructStubForDerived(MacroAssembler* masm) { 633 void Builtins::Generate_JSConstructStubForDerived(MacroAssembler* masm) {
634 // ----------- S t a t e ------------- 634 // ----------- S t a t e -------------
635 // -- r0 : number of arguments 635 // -- r0 : number of arguments
636 // -- r1 : constructor function 636 // -- r1 : constructor function
637 // -- r2 : allocation site or undefined 637 // -- r2 : allocation site or undefined
638 // -- r3 : original constructor 638 // -- r3 : new target
639 // -- lr : return address 639 // -- lr : return address
640 // -- sp[...]: constructor arguments 640 // -- sp[...]: constructor arguments
641 // ----------------------------------- 641 // -----------------------------------
642 642
643 { 643 {
644 FrameScope frame_scope(masm, StackFrame::CONSTRUCT); 644 FrameScope frame_scope(masm, StackFrame::CONSTRUCT);
645 645
646 __ AssertUndefinedOrAllocationSite(r2, r4); 646 __ AssertUndefinedOrAllocationSite(r2, r4);
647 __ push(r2); 647 __ push(r2);
648 648
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 1006
1007 // Call the target. 1007 // Call the target.
1008 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); 1008 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET);
1009 } 1009 }
1010 1010
1011 1011
1012 // static 1012 // static
1013 void Builtins::Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm) { 1013 void Builtins::Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm) {
1014 // ----------- S t a t e ------------- 1014 // ----------- S t a t e -------------
1015 // -- r0 : argument count (not including receiver) 1015 // -- r0 : argument count (not including receiver)
1016 // -- r3 : original constructor 1016 // -- r3 : new target
1017 // -- r1 : constructor to call 1017 // -- r1 : constructor to call
1018 // -- r2 : address of the first argument 1018 // -- r2 : address of the first argument
1019 // ----------------------------------- 1019 // -----------------------------------
1020 1020
1021 // Find the address of the last argument. 1021 // Find the address of the last argument.
1022 __ mov(r4, Operand(r0, LSL, kPointerSizeLog2)); 1022 __ mov(r4, Operand(r0, LSL, kPointerSizeLog2));
1023 __ sub(r4, r2, r4); 1023 __ sub(r4, r2, r4);
1024 1024
1025 // Push a slot for the receiver to be constructed. 1025 // Push a slot for the receiver to be constructed.
1026 __ push(r0); 1026 __ push(r0);
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 __ CallRuntime(Runtime::kThrowCalledNonCallable, 1); 1699 __ CallRuntime(Runtime::kThrowCalledNonCallable, 1);
1700 } 1700 }
1701 } 1701 }
1702 1702
1703 1703
1704 // static 1704 // static
1705 void Builtins::Generate_ConstructFunction(MacroAssembler* masm) { 1705 void Builtins::Generate_ConstructFunction(MacroAssembler* masm) {
1706 // ----------- S t a t e ------------- 1706 // ----------- S t a t e -------------
1707 // -- r0 : the number of arguments (not including the receiver) 1707 // -- r0 : the number of arguments (not including the receiver)
1708 // -- r1 : the constructor to call (checked to be a JSFunction) 1708 // -- r1 : the constructor to call (checked to be a JSFunction)
1709 // -- r3 : the original constructor (checked to be a JSFunction) 1709 // -- r3 : the new target (checked to be a JSFunction)
1710 // ----------------------------------- 1710 // -----------------------------------
1711 __ AssertFunction(r1); 1711 __ AssertFunction(r1);
1712 __ AssertFunction(r3); 1712 __ AssertFunction(r3);
1713 1713
1714 // Calling convention for function specific ConstructStubs require 1714 // Calling convention for function specific ConstructStubs require
1715 // r2 to contain either an AllocationSite or undefined. 1715 // r2 to contain either an AllocationSite or undefined.
1716 __ LoadRoot(r2, Heap::kUndefinedValueRootIndex); 1716 __ LoadRoot(r2, Heap::kUndefinedValueRootIndex);
1717 1717
1718 // Tail call to the function-specific construct stub (still in the caller 1718 // Tail call to the function-specific construct stub (still in the caller
1719 // context at this point). 1719 // context at this point).
1720 __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); 1720 __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
1721 __ ldr(r4, FieldMemOperand(r4, SharedFunctionInfo::kConstructStubOffset)); 1721 __ ldr(r4, FieldMemOperand(r4, SharedFunctionInfo::kConstructStubOffset));
1722 __ add(pc, r4, Operand(Code::kHeaderSize - kHeapObjectTag)); 1722 __ add(pc, r4, Operand(Code::kHeaderSize - kHeapObjectTag));
1723 } 1723 }
1724 1724
1725 1725
1726 // static 1726 // static
1727 void Builtins::Generate_ConstructProxy(MacroAssembler* masm) { 1727 void Builtins::Generate_ConstructProxy(MacroAssembler* masm) {
1728 // ----------- S t a t e ------------- 1728 // ----------- S t a t e -------------
1729 // -- r0 : the number of arguments (not including the receiver) 1729 // -- r0 : the number of arguments (not including the receiver)
1730 // -- r1 : the constructor to call (checked to be a JSFunctionProxy) 1730 // -- r1 : the constructor to call (checked to be a JSFunctionProxy)
1731 // -- r3 : the original constructor (either the same as the constructor or 1731 // -- r3 : the new target (either the same as the constructor or
1732 // the JSFunction on which new was invoked initially) 1732 // the JSFunction on which new was invoked initially)
1733 // ----------------------------------- 1733 // -----------------------------------
1734 1734
1735 // TODO(neis): This doesn't match the ES6 spec for [[Construct]] on proxies. 1735 // TODO(neis): This doesn't match the ES6 spec for [[Construct]] on proxies.
1736 __ ldr(r1, FieldMemOperand(r1, JSFunctionProxy::kConstructTrapOffset)); 1736 __ ldr(r1, FieldMemOperand(r1, JSFunctionProxy::kConstructTrapOffset));
1737 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); 1737 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET);
1738 } 1738 }
1739 1739
1740 1740
1741 // static 1741 // static
1742 void Builtins::Generate_Construct(MacroAssembler* masm) { 1742 void Builtins::Generate_Construct(MacroAssembler* masm) {
1743 // ----------- S t a t e ------------- 1743 // ----------- S t a t e -------------
1744 // -- r0 : the number of arguments (not including the receiver) 1744 // -- r0 : the number of arguments (not including the receiver)
1745 // -- r1 : the constructor to call (can be any Object) 1745 // -- r1 : the constructor to call (can be any Object)
1746 // -- r3 : the original constructor (either the same as the constructor or 1746 // -- r3 : the new target (either the same as the constructor or
1747 // the JSFunction on which new was invoked initially) 1747 // the JSFunction on which new was invoked initially)
1748 // ----------------------------------- 1748 // -----------------------------------
1749 1749
1750 // Check if target has a [[Construct]] internal method. 1750 // Check if target has a [[Construct]] internal method.
1751 Label non_constructor; 1751 Label non_constructor;
1752 __ JumpIfSmi(r1, &non_constructor); 1752 __ JumpIfSmi(r1, &non_constructor);
1753 __ ldr(r4, FieldMemOperand(r1, HeapObject::kMapOffset)); 1753 __ ldr(r4, FieldMemOperand(r1, HeapObject::kMapOffset));
1754 __ ldrb(r2, FieldMemOperand(r4, Map::kBitFieldOffset)); 1754 __ ldrb(r2, FieldMemOperand(r4, Map::kBitFieldOffset));
1755 __ tst(r2, Operand(1 << Map::kIsConstructor)); 1755 __ tst(r2, Operand(1 << Map::kIsConstructor));
1756 __ b(eq, &non_constructor); 1756 __ b(eq, &non_constructor);
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1927 } 1927 }
1928 } 1928 }
1929 1929
1930 1930
1931 #undef __ 1931 #undef __
1932 1932
1933 } // namespace internal 1933 } // namespace internal
1934 } // namespace v8 1934 } // namespace v8
1935 1935
1936 #endif // V8_TARGET_ARCH_ARM 1936 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/arm/code-stubs-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698