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

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

Issue 2152923003: [builtins] remove redundant list of generator declarations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@initbuiltins
Patch Set: rebase Created 4 years, 5 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/builtins/builtins.h ('k') | no next file » | 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/builtins/builtins.h" 5 #include "src/builtins/builtins.h"
6 6
7 #include "src/api-arguments.h" 7 #include "src/api-arguments.h"
8 #include "src/api-natives.h" 8 #include "src/api-natives.h"
9 #include "src/base/ieee754.h" 9 #include "src/base/ieee754.h"
10 #include "src/base/once.h" 10 #include "src/base/once.h"
(...skipping 6211 matching lines...) Expand 10 before | Expand all | Expand 10 after
6222 BUILTIN(HandleApiCallAsFunction) { 6222 BUILTIN(HandleApiCallAsFunction) {
6223 return HandleApiCallAsFunctionOrConstructor(isolate, false, args); 6223 return HandleApiCallAsFunctionOrConstructor(isolate, false, args);
6224 } 6224 }
6225 6225
6226 // Handle calls to non-function objects created through the API. This delegate 6226 // Handle calls to non-function objects created through the API. This delegate
6227 // function is used when the call is a construct call. 6227 // function is used when the call is a construct call.
6228 BUILTIN(HandleApiCallAsConstructor) { 6228 BUILTIN(HandleApiCallAsConstructor) {
6229 return HandleApiCallAsFunctionOrConstructor(isolate, true, args); 6229 return HandleApiCallAsFunctionOrConstructor(isolate, true, args);
6230 } 6230 }
6231 6231
6232 namespace { 6232 void Builtins::Generate_LoadIC_Miss(CodeStubAssembler* assembler) {
6233
6234 void Generate_LoadIC_Miss(CodeStubAssembler* assembler) {
6235 typedef compiler::Node Node; 6233 typedef compiler::Node Node;
6236 6234
6237 Node* receiver = assembler->Parameter(0); 6235 Node* receiver = assembler->Parameter(0);
6238 Node* name = assembler->Parameter(1); 6236 Node* name = assembler->Parameter(1);
6239 Node* slot = assembler->Parameter(2); 6237 Node* slot = assembler->Parameter(2);
6240 Node* vector = assembler->Parameter(3); 6238 Node* vector = assembler->Parameter(3);
6241 Node* context = assembler->Parameter(4); 6239 Node* context = assembler->Parameter(4);
6242 6240
6243 assembler->TailCallRuntime(Runtime::kLoadIC_Miss, context, receiver, name, 6241 assembler->TailCallRuntime(Runtime::kLoadIC_Miss, context, receiver, name,
6244 slot, vector); 6242 slot, vector);
6245 } 6243 }
6246 6244
6247 void Generate_LoadGlobalIC_Miss(CodeStubAssembler* assembler) { 6245 void Builtins::Generate_LoadGlobalIC_Miss(CodeStubAssembler* assembler) {
6248 typedef compiler::Node Node; 6246 typedef compiler::Node Node;
6249 6247
6250 Node* slot = assembler->Parameter(0); 6248 Node* slot = assembler->Parameter(0);
6251 Node* vector = assembler->Parameter(1); 6249 Node* vector = assembler->Parameter(1);
6252 Node* context = assembler->Parameter(2); 6250 Node* context = assembler->Parameter(2);
6253 6251
6254 assembler->TailCallRuntime(Runtime::kLoadGlobalIC_Miss, context, slot, 6252 assembler->TailCallRuntime(Runtime::kLoadGlobalIC_Miss, context, slot,
6255 vector); 6253 vector);
6256 } 6254 }
6257 6255
6258 void Generate_LoadIC_Normal(MacroAssembler* masm) { 6256 void Builtins::Generate_LoadIC_Normal(MacroAssembler* masm) {
6259 LoadIC::GenerateNormal(masm); 6257 LoadIC::GenerateNormal(masm);
6260 } 6258 }
6261 6259
6262 void Generate_LoadIC_Getter_ForDeopt(MacroAssembler* masm) { 6260 void Builtins::Generate_LoadIC_Getter_ForDeopt(MacroAssembler* masm) {
6263 NamedLoadHandlerCompiler::GenerateLoadViaGetterForDeopt(masm); 6261 NamedLoadHandlerCompiler::GenerateLoadViaGetterForDeopt(masm);
6264 } 6262 }
6265 6263
6266 void Generate_LoadIC_Slow(CodeStubAssembler* assembler) { 6264 void Builtins::Generate_LoadIC_Slow(CodeStubAssembler* assembler) {
6267 typedef compiler::Node Node; 6265 typedef compiler::Node Node;
6268 6266
6269 Node* receiver = assembler->Parameter(0); 6267 Node* receiver = assembler->Parameter(0);
6270 Node* name = assembler->Parameter(1); 6268 Node* name = assembler->Parameter(1);
6271 // Node* slot = assembler->Parameter(2); 6269 // Node* slot = assembler->Parameter(2);
6272 // Node* vector = assembler->Parameter(3); 6270 // Node* vector = assembler->Parameter(3);
6273 Node* context = assembler->Parameter(4); 6271 Node* context = assembler->Parameter(4);
6274 6272
6275 assembler->TailCallRuntime(Runtime::kGetProperty, context, receiver, name); 6273 assembler->TailCallRuntime(Runtime::kGetProperty, context, receiver, name);
6276 } 6274 }
6277 6275
6276 namespace {
6278 void Generate_LoadGlobalIC_Slow(CodeStubAssembler* assembler, TypeofMode mode) { 6277 void Generate_LoadGlobalIC_Slow(CodeStubAssembler* assembler, TypeofMode mode) {
6279 typedef compiler::Node Node; 6278 typedef compiler::Node Node;
6280 6279
6281 Node* slot = assembler->Parameter(0); 6280 Node* slot = assembler->Parameter(0);
6282 Node* vector = assembler->Parameter(1); 6281 Node* vector = assembler->Parameter(1);
6283 Node* context = assembler->Parameter(2); 6282 Node* context = assembler->Parameter(2);
6284 Node* typeof_mode = assembler->SmiConstant(Smi::FromInt(mode)); 6283 Node* typeof_mode = assembler->SmiConstant(Smi::FromInt(mode));
6285 6284
6286 assembler->TailCallRuntime(Runtime::kGetGlobal, context, slot, vector, 6285 assembler->TailCallRuntime(Runtime::kGetGlobal, context, slot, vector,
6287 typeof_mode); 6286 typeof_mode);
6288 } 6287 }
6288 } // anonymous namespace
6289 6289
6290 void Generate_LoadGlobalIC_SlowInsideTypeof(CodeStubAssembler* assembler) { 6290 void Builtins::Generate_LoadGlobalIC_SlowInsideTypeof(
6291 CodeStubAssembler* assembler) {
6291 Generate_LoadGlobalIC_Slow(assembler, INSIDE_TYPEOF); 6292 Generate_LoadGlobalIC_Slow(assembler, INSIDE_TYPEOF);
6292 } 6293 }
6293 6294
6294 void Generate_LoadGlobalIC_SlowNotInsideTypeof(CodeStubAssembler* assembler) { 6295 void Builtins::Generate_LoadGlobalIC_SlowNotInsideTypeof(
6296 CodeStubAssembler* assembler) {
6295 Generate_LoadGlobalIC_Slow(assembler, NOT_INSIDE_TYPEOF); 6297 Generate_LoadGlobalIC_Slow(assembler, NOT_INSIDE_TYPEOF);
6296 } 6298 }
6297 6299
6298 void Generate_KeyedLoadIC_Slow(MacroAssembler* masm) { 6300 void Builtins::Generate_KeyedLoadIC_Slow(MacroAssembler* masm) {
6299 KeyedLoadIC::GenerateRuntimeGetProperty(masm); 6301 KeyedLoadIC::GenerateRuntimeGetProperty(masm);
6300 } 6302 }
6301 6303
6302 void Generate_KeyedLoadIC_Miss(MacroAssembler* masm) { 6304 void Builtins::Generate_KeyedLoadIC_Miss(MacroAssembler* masm) {
6303 KeyedLoadIC::GenerateMiss(masm); 6305 KeyedLoadIC::GenerateMiss(masm);
6304 } 6306 }
6305 6307
6306 void Generate_KeyedLoadIC_Megamorphic(MacroAssembler* masm) { 6308 void Builtins::Generate_KeyedLoadIC_Megamorphic(MacroAssembler* masm) {
6307 KeyedLoadIC::GenerateMegamorphic(masm); 6309 KeyedLoadIC::GenerateMegamorphic(masm);
6308 } 6310 }
6309 6311
6310 void Generate_StoreIC_Miss(CodeStubAssembler* assembler) { 6312 void Builtins::Generate_StoreIC_Miss(CodeStubAssembler* assembler) {
6311 typedef compiler::Node Node; 6313 typedef compiler::Node Node;
6312 6314
6313 Node* receiver = assembler->Parameter(0); 6315 Node* receiver = assembler->Parameter(0);
6314 Node* name = assembler->Parameter(1); 6316 Node* name = assembler->Parameter(1);
6315 Node* value = assembler->Parameter(2); 6317 Node* value = assembler->Parameter(2);
6316 Node* slot = assembler->Parameter(3); 6318 Node* slot = assembler->Parameter(3);
6317 Node* vector = assembler->Parameter(4); 6319 Node* vector = assembler->Parameter(4);
6318 Node* context = assembler->Parameter(5); 6320 Node* context = assembler->Parameter(5);
6319 6321
6320 assembler->TailCallRuntime(Runtime::kStoreIC_Miss, context, receiver, name, 6322 assembler->TailCallRuntime(Runtime::kStoreIC_Miss, context, receiver, name,
6321 value, slot, vector); 6323 value, slot, vector);
6322 } 6324 }
6323 6325
6324 void Generate_StoreIC_Normal(MacroAssembler* masm) { 6326 void Builtins::Generate_StoreIC_Normal(MacroAssembler* masm) {
6325 StoreIC::GenerateNormal(masm); 6327 StoreIC::GenerateNormal(masm);
6326 } 6328 }
6327 6329
6330 namespace {
6328 void Generate_StoreIC_Slow(CodeStubAssembler* assembler, 6331 void Generate_StoreIC_Slow(CodeStubAssembler* assembler,
6329 LanguageMode language_mode) { 6332 LanguageMode language_mode) {
6330 typedef compiler::Node Node; 6333 typedef compiler::Node Node;
6331 6334
6332 Node* receiver = assembler->Parameter(0); 6335 Node* receiver = assembler->Parameter(0);
6333 Node* name = assembler->Parameter(1); 6336 Node* name = assembler->Parameter(1);
6334 Node* value = assembler->Parameter(2); 6337 Node* value = assembler->Parameter(2);
6335 // Node* slot = assembler->Parameter(3); 6338 // Node* slot = assembler->Parameter(3);
6336 // Node* vector = assembler->Parameter(4); 6339 // Node* vector = assembler->Parameter(4);
6337 Node* context = assembler->Parameter(5); 6340 Node* context = assembler->Parameter(5);
6338 Node* lang_mode = assembler->SmiConstant(Smi::FromInt(language_mode)); 6341 Node* lang_mode = assembler->SmiConstant(Smi::FromInt(language_mode));
6339 6342
6340 // The slow case calls into the runtime to complete the store without causing 6343 // The slow case calls into the runtime to complete the store without causing
6341 // an IC miss that would otherwise cause a transition to the generic stub. 6344 // an IC miss that would otherwise cause a transition to the generic stub.
6342 assembler->TailCallRuntime(Runtime::kSetProperty, context, receiver, name, 6345 assembler->TailCallRuntime(Runtime::kSetProperty, context, receiver, name,
6343 value, lang_mode); 6346 value, lang_mode);
6344 } 6347 }
6348 } // anonymous namespace
6345 6349
6346 void Generate_StoreIC_SlowSloppy(CodeStubAssembler* assembler) { 6350 void Builtins::Generate_StoreIC_SlowSloppy(CodeStubAssembler* assembler) {
6347 Generate_StoreIC_Slow(assembler, SLOPPY); 6351 Generate_StoreIC_Slow(assembler, SLOPPY);
6348 } 6352 }
6349 6353
6350 void Generate_StoreIC_SlowStrict(CodeStubAssembler* assembler) { 6354 void Builtins::Generate_StoreIC_SlowStrict(CodeStubAssembler* assembler) {
6351 Generate_StoreIC_Slow(assembler, STRICT); 6355 Generate_StoreIC_Slow(assembler, STRICT);
6352 } 6356 }
6353 6357
6358 namespace {
6354 // 7.1.1.1 OrdinaryToPrimitive ( O, hint ) 6359 // 7.1.1.1 OrdinaryToPrimitive ( O, hint )
6355 void Generate_OrdinaryToPrimitive(CodeStubAssembler* assembler, 6360 void Generate_OrdinaryToPrimitive(CodeStubAssembler* assembler,
6356 OrdinaryToPrimitiveHint hint) { 6361 OrdinaryToPrimitiveHint hint) {
6357 typedef CodeStubAssembler::Label Label; 6362 typedef CodeStubAssembler::Label Label;
6358 typedef compiler::Node Node; 6363 typedef compiler::Node Node;
6359 typedef CodeStubAssembler::Variable Variable; 6364 typedef CodeStubAssembler::Variable Variable;
6360 6365
6361 Node* input = assembler->Parameter(0); 6366 Node* input = assembler->Parameter(0);
6362 Node* context = assembler->Parameter(1); 6367 Node* context = assembler->Parameter(1);
6363 6368
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
6414 // Just continue with the next {name} if the {method} is not callable. 6419 // Just continue with the next {name} if the {method} is not callable.
6415 assembler->Goto(&if_methodisnotcallable); 6420 assembler->Goto(&if_methodisnotcallable);
6416 assembler->Bind(&if_methodisnotcallable); 6421 assembler->Bind(&if_methodisnotcallable);
6417 } 6422 }
6418 6423
6419 assembler->TailCallRuntime(Runtime::kThrowCannotConvertToPrimitive, context); 6424 assembler->TailCallRuntime(Runtime::kThrowCannotConvertToPrimitive, context);
6420 6425
6421 assembler->Bind(&return_result); 6426 assembler->Bind(&return_result);
6422 assembler->Return(var_result.value()); 6427 assembler->Return(var_result.value());
6423 } 6428 }
6429 } // anonymous namespace
6424 6430
6425 void Generate_OrdinaryToPrimitive_Number(CodeStubAssembler* assembler) { 6431 void Builtins::Generate_OrdinaryToPrimitive_Number(
6432 CodeStubAssembler* assembler) {
6426 Generate_OrdinaryToPrimitive(assembler, OrdinaryToPrimitiveHint::kNumber); 6433 Generate_OrdinaryToPrimitive(assembler, OrdinaryToPrimitiveHint::kNumber);
6427 } 6434 }
6428 6435
6429 void Generate_OrdinaryToPrimitive_String(CodeStubAssembler* assembler) { 6436 void Builtins::Generate_OrdinaryToPrimitive_String(
6437 CodeStubAssembler* assembler) {
6430 Generate_OrdinaryToPrimitive(assembler, OrdinaryToPrimitiveHint::kString); 6438 Generate_OrdinaryToPrimitive(assembler, OrdinaryToPrimitiveHint::kString);
6431 } 6439 }
6432 6440
6441 namespace {
6433 // ES6 section 7.1.1 ToPrimitive ( input [ , PreferredType ] ) 6442 // ES6 section 7.1.1 ToPrimitive ( input [ , PreferredType ] )
6434 void Generate_NonPrimitiveToPrimitive(CodeStubAssembler* assembler, 6443 void Generate_NonPrimitiveToPrimitive(CodeStubAssembler* assembler,
6435 ToPrimitiveHint hint) { 6444 ToPrimitiveHint hint) {
6436 typedef CodeStubAssembler::Label Label; 6445 typedef CodeStubAssembler::Label Label;
6437 typedef compiler::Node Node; 6446 typedef compiler::Node Node;
6438 6447
6439 Node* input = assembler->Parameter(0); 6448 Node* input = assembler->Parameter(0);
6440 Node* context = assembler->Parameter(1); 6449 Node* context = assembler->Parameter(1);
6441 6450
6442 // Lookup the @@toPrimitive property on the {input}. 6451 // Lookup the @@toPrimitive property on the {input}.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
6491 // Convert using the OrdinaryToPrimitive algorithm instead. 6500 // Convert using the OrdinaryToPrimitive algorithm instead.
6492 assembler->Bind(&ordinary_to_primitive); 6501 assembler->Bind(&ordinary_to_primitive);
6493 { 6502 {
6494 Callable callable = CodeFactory::OrdinaryToPrimitive( 6503 Callable callable = CodeFactory::OrdinaryToPrimitive(
6495 assembler->isolate(), (hint == ToPrimitiveHint::kString) 6504 assembler->isolate(), (hint == ToPrimitiveHint::kString)
6496 ? OrdinaryToPrimitiveHint::kString 6505 ? OrdinaryToPrimitiveHint::kString
6497 : OrdinaryToPrimitiveHint::kNumber); 6506 : OrdinaryToPrimitiveHint::kNumber);
6498 assembler->TailCallStub(callable, context, input); 6507 assembler->TailCallStub(callable, context, input);
6499 } 6508 }
6500 } 6509 }
6510 } // anonymous namespace
6501 6511
6502 void Generate_NonPrimitiveToPrimitive_Default(CodeStubAssembler* assembler) { 6512 void Builtins::Generate_NonPrimitiveToPrimitive_Default(
6513 CodeStubAssembler* assembler) {
6503 Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kDefault); 6514 Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kDefault);
6504 } 6515 }
6505 6516
6506 void Generate_NonPrimitiveToPrimitive_Number(CodeStubAssembler* assembler) { 6517 void Builtins::Generate_NonPrimitiveToPrimitive_Number(
6518 CodeStubAssembler* assembler) {
6507 Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kNumber); 6519 Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kNumber);
6508 } 6520 }
6509 6521
6510 void Generate_NonPrimitiveToPrimitive_String(CodeStubAssembler* assembler) { 6522 void Builtins::Generate_NonPrimitiveToPrimitive_String(
6523 CodeStubAssembler* assembler) {
6511 Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kString); 6524 Generate_NonPrimitiveToPrimitive(assembler, ToPrimitiveHint::kString);
6512 } 6525 }
6513 6526
6514 // ES6 section 7.1.3 ToNumber ( argument ) 6527 // ES6 section 7.1.3 ToNumber ( argument )
6515 void Generate_NonNumberToNumber(CodeStubAssembler* assembler) { 6528 void Builtins::Generate_NonNumberToNumber(CodeStubAssembler* assembler) {
6516 typedef CodeStubAssembler::Label Label; 6529 typedef CodeStubAssembler::Label Label;
6517 typedef compiler::Node Node; 6530 typedef compiler::Node Node;
6518 typedef CodeStubAssembler::Variable Variable; 6531 typedef CodeStubAssembler::Variable Variable;
6519 6532
6520 Node* input = assembler->Parameter(0); 6533 Node* input = assembler->Parameter(0);
6521 Node* context = assembler->Parameter(1); 6534 Node* context = assembler->Parameter(1);
6522 6535
6523 // We might need to loop once here due to ToPrimitive conversions. 6536 // We might need to loop once here due to ToPrimitive conversions.
6524 Variable var_input(assembler, MachineRepresentation::kTagged); 6537 Variable var_input(assembler, MachineRepresentation::kTagged);
6525 Label loop(assembler, &var_input); 6538 Label loop(assembler, &var_input);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
6602 // Note: We cannot tail call to the runtime here, as js-to-wasm 6615 // Note: We cannot tail call to the runtime here, as js-to-wasm
6603 // trampolines also use this code currently, and they declare all 6616 // trampolines also use this code currently, and they declare all
6604 // outgoing parameters as untagged, while we would push a tagged 6617 // outgoing parameters as untagged, while we would push a tagged
6605 // object here. 6618 // object here.
6606 Node* result = assembler->CallRuntime(Runtime::kToNumber, context, input); 6619 Node* result = assembler->CallRuntime(Runtime::kToNumber, context, input);
6607 assembler->Return(result); 6620 assembler->Return(result);
6608 } 6621 }
6609 } 6622 }
6610 } 6623 }
6611 6624
6612 void Generate_KeyedStoreIC_Slow(MacroAssembler* masm) { 6625 void Builtins::Generate_KeyedStoreIC_Slow(MacroAssembler* masm) {
6613 ElementHandlerCompiler::GenerateStoreSlow(masm); 6626 ElementHandlerCompiler::GenerateStoreSlow(masm);
6614 } 6627 }
6615 6628
6616 void Generate_StoreIC_Setter_ForDeopt(MacroAssembler* masm) { 6629 void Builtins::Generate_StoreIC_Setter_ForDeopt(MacroAssembler* masm) {
6617 NamedStoreHandlerCompiler::GenerateStoreViaSetterForDeopt(masm); 6630 NamedStoreHandlerCompiler::GenerateStoreViaSetterForDeopt(masm);
6618 } 6631 }
6619 6632
6620 void Generate_KeyedStoreIC_Megamorphic(MacroAssembler* masm) { 6633 void Builtins::Generate_KeyedStoreIC_Megamorphic(MacroAssembler* masm) {
6621 KeyedStoreIC::GenerateMegamorphic(masm, SLOPPY); 6634 KeyedStoreIC::GenerateMegamorphic(masm, SLOPPY);
6622 } 6635 }
6623 6636
6624 void Generate_KeyedStoreIC_Megamorphic_Strict(MacroAssembler* masm) { 6637 void Builtins::Generate_KeyedStoreIC_Megamorphic_Strict(MacroAssembler* masm) {
6625 KeyedStoreIC::GenerateMegamorphic(masm, STRICT); 6638 KeyedStoreIC::GenerateMegamorphic(masm, STRICT);
6626 } 6639 }
6627 6640
6628 void Generate_KeyedStoreIC_Miss(MacroAssembler* masm) { 6641 void Builtins::Generate_KeyedStoreIC_Miss(MacroAssembler* masm) {
6629 KeyedStoreIC::GenerateMiss(masm); 6642 KeyedStoreIC::GenerateMiss(masm);
6630 } 6643 }
6631 6644
6632 void Generate_Return_DebugBreak(MacroAssembler* masm) { 6645 void Builtins::Generate_Return_DebugBreak(MacroAssembler* masm) {
6633 DebugCodegen::GenerateDebugBreakStub(masm, 6646 DebugCodegen::GenerateDebugBreakStub(masm,
6634 DebugCodegen::SAVE_RESULT_REGISTER); 6647 DebugCodegen::SAVE_RESULT_REGISTER);
6635 } 6648 }
6636 6649
6637 void Generate_Slot_DebugBreak(MacroAssembler* masm) { 6650 void Builtins::Generate_Slot_DebugBreak(MacroAssembler* masm) {
6638 DebugCodegen::GenerateDebugBreakStub(masm, 6651 DebugCodegen::GenerateDebugBreakStub(masm,
6639 DebugCodegen::IGNORE_RESULT_REGISTER); 6652 DebugCodegen::IGNORE_RESULT_REGISTER);
6640 } 6653 }
6641 6654
6642 void Generate_FrameDropper_LiveEdit(MacroAssembler* masm) { 6655 void Builtins::Generate_FrameDropper_LiveEdit(MacroAssembler* masm) {
6643 DebugCodegen::GenerateFrameDropperLiveEdit(masm); 6656 DebugCodegen::GenerateFrameDropperLiveEdit(masm);
6644 } 6657 }
6645 6658
6646 } // namespace
6647
6648 Builtins::Builtins() : initialized_(false) { 6659 Builtins::Builtins() : initialized_(false) {
6649 memset(builtins_, 0, sizeof(builtins_[0]) * builtin_count); 6660 memset(builtins_, 0, sizeof(builtins_[0]) * builtin_count);
6650 } 6661 }
6651 6662
6652 Builtins::~Builtins() {} 6663 Builtins::~Builtins() {}
6653 6664
6654 namespace { 6665 namespace {
6655 void PostBuildProfileAndTracing(Isolate* isolate, Code* code, 6666 void PostBuildProfileAndTracing(Isolate* isolate, Code* code,
6656 const char* name) { 6667 const char* name) {
6657 PROFILE(isolate, CodeCreateEvent(CodeEventListener::BUILTIN_TAG, 6668 PROFILE(isolate, CodeCreateEvent(CodeEventListener::BUILTIN_TAG,
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
7062 a->Bind(&u32); 7073 a->Bind(&u32);
7063 a->AtomicStore(MachineRepresentation::kWord32, backing_store, 7074 a->AtomicStore(MachineRepresentation::kWord32, backing_store,
7064 a->WordShl(index_word, 2), value_word32); 7075 a->WordShl(index_word, 2), value_word32);
7065 a->Return(value_integer); 7076 a->Return(value_integer);
7066 7077
7067 // This shouldn't happen, we've already validated the type. 7078 // This shouldn't happen, we've already validated the type.
7068 a->Bind(&other); 7079 a->Bind(&other);
7069 a->Return(a->Int32Constant(0)); 7080 a->Return(a->Int32Constant(0));
7070 } 7081 }
7071 7082
7083 void Builtins::Generate_CallFunction_ReceiverIsNullOrUndefined(
7084 MacroAssembler* masm) {
7085 Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined,
7086 TailCallMode::kDisallow);
7087 }
7088
7089 void Builtins::Generate_CallFunction_ReceiverIsNotNullOrUndefined(
7090 MacroAssembler* masm) {
7091 Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined,
7092 TailCallMode::kDisallow);
7093 }
7094
7095 void Builtins::Generate_CallFunction_ReceiverIsAny(MacroAssembler* masm) {
7096 Generate_CallFunction(masm, ConvertReceiverMode::kAny,
7097 TailCallMode::kDisallow);
7098 }
7099
7100 void Builtins::Generate_TailCallFunction_ReceiverIsNullOrUndefined(
7101 MacroAssembler* masm) {
7102 Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined,
7103 TailCallMode::kAllow);
7104 }
7105
7106 void Builtins::Generate_TailCallFunction_ReceiverIsNotNullOrUndefined(
7107 MacroAssembler* masm) {
7108 Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined,
7109 TailCallMode::kAllow);
7110 }
7111
7112 void Builtins::Generate_TailCallFunction_ReceiverIsAny(MacroAssembler* masm) {
7113 Generate_CallFunction(masm, ConvertReceiverMode::kAny, TailCallMode::kAllow);
7114 }
7115
7116 void Builtins::Generate_CallBoundFunction(MacroAssembler* masm) {
7117 Generate_CallBoundFunctionImpl(masm, TailCallMode::kDisallow);
7118 }
7119
7120 void Builtins::Generate_TailCallBoundFunction(MacroAssembler* masm) {
7121 Generate_CallBoundFunctionImpl(masm, TailCallMode::kAllow);
7122 }
7123
7124 void Builtins::Generate_Call_ReceiverIsNullOrUndefined(MacroAssembler* masm) {
7125 Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined,
7126 TailCallMode::kDisallow);
7127 }
7128
7129 void Builtins::Generate_Call_ReceiverIsNotNullOrUndefined(
7130 MacroAssembler* masm) {
7131 Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined,
7132 TailCallMode::kDisallow);
7133 }
7134
7135 void Builtins::Generate_Call_ReceiverIsAny(MacroAssembler* masm) {
7136 Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kDisallow);
7137 }
7138
7139 void Builtins::Generate_TailCall_ReceiverIsNullOrUndefined(
7140 MacroAssembler* masm) {
7141 Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined,
7142 TailCallMode::kAllow);
7143 }
7144
7145 void Builtins::Generate_TailCall_ReceiverIsNotNullOrUndefined(
7146 MacroAssembler* masm) {
7147 Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined,
7148 TailCallMode::kAllow);
7149 }
7150
7151 void Builtins::Generate_TailCall_ReceiverIsAny(MacroAssembler* masm) {
7152 Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kAllow);
7153 }
7154
7155 void Builtins::Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) {
7156 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kDisallow,
7157 CallableType::kAny);
7158 }
7159 void Builtins::Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) {
7160 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow,
7161 CallableType::kAny);
7162 }
7163
7164 void Builtins::Generate_InterpreterPushArgsAndCallFunction(
7165 MacroAssembler* masm) {
7166 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kDisallow,
7167 CallableType::kJSFunction);
7168 }
7169
7170 void Builtins::Generate_InterpreterPushArgsAndTailCallFunction(
7171 MacroAssembler* masm) {
7172 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow,
7173 CallableType::kJSFunction);
7174 }
7175
7176 void Builtins::Generate_MathMax(MacroAssembler* masm) {
7177 Generate_MathMaxMin(masm, MathMaxMinKind::kMax);
7178 }
7179
7180 void Builtins::Generate_MathMin(MacroAssembler* masm) {
7181 Generate_MathMaxMin(masm, MathMaxMinKind::kMin);
7182 }
7183
7072 #define DEFINE_BUILTIN_ACCESSOR(Name, ...) \ 7184 #define DEFINE_BUILTIN_ACCESSOR(Name, ...) \
7073 Handle<Code> Builtins::Name() { \ 7185 Handle<Code> Builtins::Name() { \
7074 Code** code_address = reinterpret_cast<Code**>(builtin_address(k##Name)); \ 7186 Code** code_address = reinterpret_cast<Code**>(builtin_address(k##Name)); \
7075 return Handle<Code>(code_address); \ 7187 return Handle<Code>(code_address); \
7076 } 7188 }
7077 BUILTIN_LIST_ALL(DEFINE_BUILTIN_ACCESSOR) 7189 BUILTIN_LIST_ALL(DEFINE_BUILTIN_ACCESSOR)
7078 #undef DEFINE_BUILTIN_ACCESSOR 7190 #undef DEFINE_BUILTIN_ACCESSOR
7079 7191
7080 } // namespace internal 7192 } // namespace internal
7081 } // namespace v8 7193 } // namespace v8
OLDNEW
« no previous file with comments | « src/builtins/builtins.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698