OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; | 300 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; |
301 } else { | 301 } else { |
302 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; | 302 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; |
303 } | 303 } |
304 ArgumentsAccessStub stub(isolate(), type, has_new_target); | 304 ArgumentsAccessStub stub(isolate(), type, has_new_target); |
305 __ CallStub(&stub); | 305 __ CallStub(&stub); |
306 | 306 |
307 SetVar(arguments, x0, x1, x2); | 307 SetVar(arguments, x0, x1, x2); |
308 } | 308 } |
309 | 309 |
| 310 // Possibly set up a local binding to the [[HomeObject]]. |
| 311 Variable* home_object_var = scope()->home_object_var(); |
| 312 if (home_object_var != nullptr) { |
| 313 Comment cmnt(masm_, "[ Home object"); |
| 314 if (function_in_register_x1) { |
| 315 __ Mov(LoadDescriptor::ReceiverRegister(), x1); |
| 316 } else { |
| 317 __ ldr(LoadDescriptor::ReceiverRegister(), |
| 318 MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); |
| 319 } |
| 320 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol()); |
| 321 __ Mov(LoadDescriptor::NameRegister(), home_object_symbol); |
| 322 if (FLAG_vector_ics) { |
| 323 __ Mov(LoadDescriptor::SlotRegister(), |
| 324 SmiFromSlot(function()->HomeObjectFeedbackSlot())); |
| 325 } |
| 326 CallLoadIC(NOT_CONTEXTUAL); |
| 327 |
| 328 SetVar(home_object_var, x0, x1, x2); |
| 329 } |
| 330 |
310 if (FLAG_trace) { | 331 if (FLAG_trace) { |
311 __ CallRuntime(Runtime::kTraceEnter, 0); | 332 __ CallRuntime(Runtime::kTraceEnter, 0); |
312 } | 333 } |
313 | 334 |
314 | |
315 // Visit the declarations and body unless there is an illegal | 335 // Visit the declarations and body unless there is an illegal |
316 // redeclaration. | 336 // redeclaration. |
317 if (scope()->HasIllegalRedeclaration()) { | 337 if (scope()->HasIllegalRedeclaration()) { |
318 Comment cmnt(masm_, "[ Declarations"); | 338 Comment cmnt(masm_, "[ Declarations"); |
319 scope()->VisitIllegalRedeclaration(this); | 339 scope()->VisitIllegalRedeclaration(this); |
320 | 340 |
321 } else { | 341 } else { |
322 PrepareForBailoutForId(BailoutId::FunctionEntry(), NO_REGISTERS); | 342 PrepareForBailoutForId(BailoutId::FunctionEntry(), NO_REGISTERS); |
323 { Comment cmnt(masm_, "[ Declarations"); | 343 { Comment cmnt(masm_, "[ Declarations"); |
324 if (scope()->is_function_scope() && scope()->function() != NULL) { | 344 if (scope()->is_function_scope() && scope()->function() != NULL) { |
(...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1303 context()->Plug(x0); | 1323 context()->Plug(x0); |
1304 } | 1324 } |
1305 | 1325 |
1306 | 1326 |
1307 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { | 1327 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { |
1308 Comment cmnt(masm_, "[ VariableProxy"); | 1328 Comment cmnt(masm_, "[ VariableProxy"); |
1309 EmitVariableLoad(expr); | 1329 EmitVariableLoad(expr); |
1310 } | 1330 } |
1311 | 1331 |
1312 | 1332 |
1313 void FullCodeGenerator::EmitLoadHomeObject(SuperReference* expr) { | |
1314 Comment cnmt(masm_, "[ SuperReference "); | |
1315 | |
1316 __ ldr(LoadDescriptor::ReceiverRegister(), | |
1317 MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); | |
1318 | |
1319 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol()); | |
1320 __ Mov(LoadDescriptor::NameRegister(), Operand(home_object_symbol)); | |
1321 | |
1322 __ Mov(LoadDescriptor::SlotRegister(), | |
1323 SmiFromSlot(expr->HomeObjectFeedbackSlot())); | |
1324 CallLoadIC(NOT_CONTEXTUAL); | |
1325 | |
1326 __ Mov(x10, Operand(isolate()->factory()->undefined_value())); | |
1327 __ cmp(x0, x10); | |
1328 Label done; | |
1329 __ b(&done, ne); | |
1330 __ CallRuntime(Runtime::kThrowNonMethodError, 0); | |
1331 __ bind(&done); | |
1332 } | |
1333 | |
1334 | |
1335 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, | 1333 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, |
1336 int offset) { | 1334 int offset) { |
1337 if (NeedsHomeObject(initializer)) { | 1335 if (NeedsHomeObject(initializer)) { |
1338 __ Peek(StoreDescriptor::ReceiverRegister(), 0); | 1336 __ Peek(StoreDescriptor::ReceiverRegister(), 0); |
1339 __ Mov(StoreDescriptor::NameRegister(), | 1337 __ Mov(StoreDescriptor::NameRegister(), |
1340 Operand(isolate()->factory()->home_object_symbol())); | 1338 Operand(isolate()->factory()->home_object_symbol())); |
1341 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize); | 1339 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize); |
1342 CallStoreIC(); | 1340 CallStoreIC(); |
1343 } | 1341 } |
1344 } | 1342 } |
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1921 if (expr->is_compound()) { | 1919 if (expr->is_compound()) { |
1922 // We need the receiver both on the stack and in the register. | 1920 // We need the receiver both on the stack and in the register. |
1923 VisitForStackValue(property->obj()); | 1921 VisitForStackValue(property->obj()); |
1924 __ Peek(LoadDescriptor::ReceiverRegister(), 0); | 1922 __ Peek(LoadDescriptor::ReceiverRegister(), 0); |
1925 } else { | 1923 } else { |
1926 VisitForStackValue(property->obj()); | 1924 VisitForStackValue(property->obj()); |
1927 } | 1925 } |
1928 break; | 1926 break; |
1929 case NAMED_SUPER_PROPERTY: | 1927 case NAMED_SUPER_PROPERTY: |
1930 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); | 1928 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); |
1931 EmitLoadHomeObject(property->obj()->AsSuperReference()); | 1929 VisitForAccumulatorValue( |
| 1930 property->obj()->AsSuperReference()->home_object_var()); |
1932 __ Push(result_register()); | 1931 __ Push(result_register()); |
1933 if (expr->is_compound()) { | 1932 if (expr->is_compound()) { |
1934 const Register scratch = x10; | 1933 const Register scratch = x10; |
1935 __ Peek(scratch, kPointerSize); | 1934 __ Peek(scratch, kPointerSize); |
1936 __ Push(scratch, result_register()); | 1935 __ Push(scratch, result_register()); |
1937 } | 1936 } |
1938 break; | 1937 break; |
1939 case KEYED_SUPER_PROPERTY: | 1938 case KEYED_SUPER_PROPERTY: |
1940 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); | 1939 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); |
1941 EmitLoadHomeObject(property->obj()->AsSuperReference()); | 1940 VisitForStackValue( |
1942 __ Push(result_register()); | 1941 property->obj()->AsSuperReference()->home_object_var()); |
1943 VisitForAccumulatorValue(property->key()); | 1942 VisitForAccumulatorValue(property->key()); |
1944 __ Push(result_register()); | 1943 __ Push(result_register()); |
1945 if (expr->is_compound()) { | 1944 if (expr->is_compound()) { |
1946 const Register scratch1 = x10; | 1945 const Register scratch1 = x10; |
1947 const Register scratch2 = x11; | 1946 const Register scratch2 = x11; |
1948 __ Peek(scratch1, 2 * kPointerSize); | 1947 __ Peek(scratch1, 2 * kPointerSize); |
1949 __ Peek(scratch2, kPointerSize); | 1948 __ Peek(scratch2, kPointerSize); |
1950 __ Push(scratch1, scratch2, result_register()); | 1949 __ Push(scratch1, scratch2, result_register()); |
1951 } | 1950 } |
1952 break; | 1951 break; |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2288 __ Mov(StoreDescriptor::ReceiverRegister(), x0); | 2287 __ Mov(StoreDescriptor::ReceiverRegister(), x0); |
2289 __ Pop(StoreDescriptor::ValueRegister()); // Restore value. | 2288 __ Pop(StoreDescriptor::ValueRegister()); // Restore value. |
2290 __ Mov(StoreDescriptor::NameRegister(), | 2289 __ Mov(StoreDescriptor::NameRegister(), |
2291 Operand(prop->key()->AsLiteral()->value())); | 2290 Operand(prop->key()->AsLiteral()->value())); |
2292 CallStoreIC(); | 2291 CallStoreIC(); |
2293 break; | 2292 break; |
2294 } | 2293 } |
2295 case NAMED_SUPER_PROPERTY: { | 2294 case NAMED_SUPER_PROPERTY: { |
2296 __ Push(x0); | 2295 __ Push(x0); |
2297 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 2296 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
2298 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 2297 VisitForAccumulatorValue( |
| 2298 prop->obj()->AsSuperReference()->home_object_var()); |
2299 // stack: value, this; x0: home_object | 2299 // stack: value, this; x0: home_object |
2300 Register scratch = x10; | 2300 Register scratch = x10; |
2301 Register scratch2 = x11; | 2301 Register scratch2 = x11; |
2302 __ mov(scratch, result_register()); // home_object | 2302 __ mov(scratch, result_register()); // home_object |
2303 __ Peek(x0, kPointerSize); // value | 2303 __ Peek(x0, kPointerSize); // value |
2304 __ Peek(scratch2, 0); // this | 2304 __ Peek(scratch2, 0); // this |
2305 __ Poke(scratch2, kPointerSize); // this | 2305 __ Poke(scratch2, kPointerSize); // this |
2306 __ Poke(scratch, 0); // home_object | 2306 __ Poke(scratch, 0); // home_object |
2307 // stack: this, home_object; x0: value | 2307 // stack: this, home_object; x0: value |
2308 EmitNamedSuperPropertyStore(prop); | 2308 EmitNamedSuperPropertyStore(prop); |
2309 break; | 2309 break; |
2310 } | 2310 } |
2311 case KEYED_SUPER_PROPERTY: { | 2311 case KEYED_SUPER_PROPERTY: { |
2312 __ Push(x0); | 2312 __ Push(x0); |
2313 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 2313 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
2314 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 2314 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var()); |
2315 __ Push(result_register()); | |
2316 VisitForAccumulatorValue(prop->key()); | 2315 VisitForAccumulatorValue(prop->key()); |
2317 Register scratch = x10; | 2316 Register scratch = x10; |
2318 Register scratch2 = x11; | 2317 Register scratch2 = x11; |
2319 __ Peek(scratch2, 2 * kPointerSize); // value | 2318 __ Peek(scratch2, 2 * kPointerSize); // value |
2320 // stack: value, this, home_object; x0: key, x11: value | 2319 // stack: value, this, home_object; x0: key, x11: value |
2321 __ Peek(scratch, kPointerSize); // this | 2320 __ Peek(scratch, kPointerSize); // this |
2322 __ Poke(scratch, 2 * kPointerSize); | 2321 __ Poke(scratch, 2 * kPointerSize); |
2323 __ Peek(scratch, 0); // home_object | 2322 __ Peek(scratch, 0); // home_object |
2324 __ Poke(scratch, kPointerSize); | 2323 __ Poke(scratch, kPointerSize); |
2325 __ Poke(x0, 0); | 2324 __ Poke(x0, 0); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2520 Comment cmnt(masm_, "[ Property"); | 2519 Comment cmnt(masm_, "[ Property"); |
2521 Expression* key = expr->key(); | 2520 Expression* key = expr->key(); |
2522 | 2521 |
2523 if (key->IsPropertyName()) { | 2522 if (key->IsPropertyName()) { |
2524 if (!expr->IsSuperAccess()) { | 2523 if (!expr->IsSuperAccess()) { |
2525 VisitForAccumulatorValue(expr->obj()); | 2524 VisitForAccumulatorValue(expr->obj()); |
2526 __ Move(LoadDescriptor::ReceiverRegister(), x0); | 2525 __ Move(LoadDescriptor::ReceiverRegister(), x0); |
2527 EmitNamedPropertyLoad(expr); | 2526 EmitNamedPropertyLoad(expr); |
2528 } else { | 2527 } else { |
2529 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2528 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2530 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2529 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var()); |
2531 __ Push(result_register()); | |
2532 EmitNamedSuperPropertyLoad(expr); | 2530 EmitNamedSuperPropertyLoad(expr); |
2533 } | 2531 } |
2534 } else { | 2532 } else { |
2535 if (!expr->IsSuperAccess()) { | 2533 if (!expr->IsSuperAccess()) { |
2536 VisitForStackValue(expr->obj()); | 2534 VisitForStackValue(expr->obj()); |
2537 VisitForAccumulatorValue(expr->key()); | 2535 VisitForAccumulatorValue(expr->key()); |
2538 __ Move(LoadDescriptor::NameRegister(), x0); | 2536 __ Move(LoadDescriptor::NameRegister(), x0); |
2539 __ Pop(LoadDescriptor::ReceiverRegister()); | 2537 __ Pop(LoadDescriptor::ReceiverRegister()); |
2540 EmitKeyedPropertyLoad(expr); | 2538 EmitKeyedPropertyLoad(expr); |
2541 } else { | 2539 } else { |
2542 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2540 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2543 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2541 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var()); |
2544 __ Push(result_register()); | |
2545 VisitForStackValue(expr->key()); | 2542 VisitForStackValue(expr->key()); |
2546 EmitKeyedSuperPropertyLoad(expr); | 2543 EmitKeyedSuperPropertyLoad(expr); |
2547 } | 2544 } |
2548 } | 2545 } |
2549 PrepareForBailoutForId(expr->LoadId(), TOS_REG); | 2546 PrepareForBailoutForId(expr->LoadId(), TOS_REG); |
2550 context()->Plug(x0); | 2547 context()->Plug(x0); |
2551 } | 2548 } |
2552 | 2549 |
2553 | 2550 |
2554 void FullCodeGenerator::CallIC(Handle<Code> code, | 2551 void FullCodeGenerator::CallIC(Handle<Code> code, |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2603 Property* prop = callee->AsProperty(); | 2600 Property* prop = callee->AsProperty(); |
2604 DCHECK(prop->IsSuperAccess()); | 2601 DCHECK(prop->IsSuperAccess()); |
2605 | 2602 |
2606 SetSourcePosition(prop->position()); | 2603 SetSourcePosition(prop->position()); |
2607 Literal* key = prop->key()->AsLiteral(); | 2604 Literal* key = prop->key()->AsLiteral(); |
2608 DCHECK(!key->value()->IsSmi()); | 2605 DCHECK(!key->value()->IsSmi()); |
2609 | 2606 |
2610 // Load the function from the receiver. | 2607 // Load the function from the receiver. |
2611 const Register scratch = x10; | 2608 const Register scratch = x10; |
2612 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); | 2609 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); |
2613 EmitLoadHomeObject(super_ref); | 2610 VisitForStackValue(super_ref->home_object_var()); |
2614 __ Push(x0); | |
2615 VisitForAccumulatorValue(super_ref->this_var()); | 2611 VisitForAccumulatorValue(super_ref->this_var()); |
2616 __ Push(x0); | 2612 __ Push(x0); |
2617 __ Peek(scratch, kPointerSize); | 2613 __ Peek(scratch, kPointerSize); |
2618 __ Push(x0, scratch); | 2614 __ Push(x0, scratch); |
2619 __ Push(key->value()); | 2615 __ Push(key->value()); |
2620 | 2616 |
2621 // Stack here: | 2617 // Stack here: |
2622 // - home_object | 2618 // - home_object |
2623 // - this (receiver) | 2619 // - this (receiver) |
2624 // - this (receiver) <-- LoadFromSuper will pop here and below. | 2620 // - this (receiver) <-- LoadFromSuper will pop here and below. |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2663 Expression* callee = expr->expression(); | 2659 Expression* callee = expr->expression(); |
2664 DCHECK(callee->IsProperty()); | 2660 DCHECK(callee->IsProperty()); |
2665 Property* prop = callee->AsProperty(); | 2661 Property* prop = callee->AsProperty(); |
2666 DCHECK(prop->IsSuperAccess()); | 2662 DCHECK(prop->IsSuperAccess()); |
2667 | 2663 |
2668 SetSourcePosition(prop->position()); | 2664 SetSourcePosition(prop->position()); |
2669 | 2665 |
2670 // Load the function from the receiver. | 2666 // Load the function from the receiver. |
2671 const Register scratch = x10; | 2667 const Register scratch = x10; |
2672 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); | 2668 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); |
2673 EmitLoadHomeObject(super_ref); | 2669 VisitForStackValue(super_ref->home_object_var()); |
2674 __ Push(x0); | |
2675 VisitForAccumulatorValue(super_ref->this_var()); | 2670 VisitForAccumulatorValue(super_ref->this_var()); |
2676 __ Push(x0); | 2671 __ Push(x0); |
2677 __ Peek(scratch, kPointerSize); | 2672 __ Peek(scratch, kPointerSize); |
2678 __ Push(x0, scratch); | 2673 __ Push(x0, scratch); |
2679 VisitForStackValue(prop->key()); | 2674 VisitForStackValue(prop->key()); |
2680 | 2675 |
2681 // Stack here: | 2676 // Stack here: |
2682 // - home_object | 2677 // - home_object |
2683 // - this (receiver) | 2678 // - this (receiver) |
2684 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. | 2679 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. |
(...skipping 1815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4500 case NAMED_PROPERTY: { | 4495 case NAMED_PROPERTY: { |
4501 // Put the object both on the stack and in the register. | 4496 // Put the object both on the stack and in the register. |
4502 VisitForStackValue(prop->obj()); | 4497 VisitForStackValue(prop->obj()); |
4503 __ Peek(LoadDescriptor::ReceiverRegister(), 0); | 4498 __ Peek(LoadDescriptor::ReceiverRegister(), 0); |
4504 EmitNamedPropertyLoad(prop); | 4499 EmitNamedPropertyLoad(prop); |
4505 break; | 4500 break; |
4506 } | 4501 } |
4507 | 4502 |
4508 case NAMED_SUPER_PROPERTY: { | 4503 case NAMED_SUPER_PROPERTY: { |
4509 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 4504 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
4510 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 4505 VisitForAccumulatorValue( |
| 4506 prop->obj()->AsSuperReference()->home_object_var()); |
4511 __ Push(result_register()); | 4507 __ Push(result_register()); |
4512 const Register scratch = x10; | 4508 const Register scratch = x10; |
4513 __ Peek(scratch, kPointerSize); | 4509 __ Peek(scratch, kPointerSize); |
4514 __ Push(scratch, result_register()); | 4510 __ Push(scratch, result_register()); |
4515 EmitNamedSuperPropertyLoad(prop); | 4511 EmitNamedSuperPropertyLoad(prop); |
4516 break; | 4512 break; |
4517 } | 4513 } |
4518 | 4514 |
4519 case KEYED_SUPER_PROPERTY: { | 4515 case KEYED_SUPER_PROPERTY: { |
4520 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 4516 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
4521 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 4517 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var()); |
4522 __ Push(result_register()); | |
4523 VisitForAccumulatorValue(prop->key()); | 4518 VisitForAccumulatorValue(prop->key()); |
4524 __ Push(result_register()); | 4519 __ Push(result_register()); |
4525 const Register scratch1 = x10; | 4520 const Register scratch1 = x10; |
4526 const Register scratch2 = x11; | 4521 const Register scratch2 = x11; |
4527 __ Peek(scratch1, 2 * kPointerSize); | 4522 __ Peek(scratch1, 2 * kPointerSize); |
4528 __ Peek(scratch2, kPointerSize); | 4523 __ Peek(scratch2, kPointerSize); |
4529 __ Push(scratch1, scratch2, result_register()); | 4524 __ Push(scratch1, scratch2, result_register()); |
4530 EmitKeyedSuperPropertyLoad(prop); | 4525 EmitKeyedSuperPropertyLoad(prop); |
4531 break; | 4526 break; |
4532 } | 4527 } |
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5453 } | 5448 } |
5454 } | 5449 } |
5455 | 5450 |
5456 return INTERRUPT; | 5451 return INTERRUPT; |
5457 } | 5452 } |
5458 | 5453 |
5459 | 5454 |
5460 } } // namespace v8::internal | 5455 } } // namespace v8::internal |
5461 | 5456 |
5462 #endif // V8_TARGET_ARCH_ARM64 | 5457 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |