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

Unified Diff: src/code-stubs.cc

Issue 2341743003: [interpreter] Inline FastCloneShallowArrayStub into bytecode handler (Closed)
Patch Set: compile issues Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: src/code-stubs.cc
diff --git a/src/code-stubs.cc b/src/code-stubs.cc
index 27bcbae26c3162f1fd7c1b85b0ef6e961d957616..11bb8e8f120af25a5f43e1da2e1bdb7e83ef760c 100644
--- a/src/code-stubs.cc
+++ b/src/code-stubs.cc
@@ -5704,15 +5704,15 @@ compiler::Node* NonEmptyShallowClone(CodeStubAssembler* assembler,
// static
compiler::Node* FastCloneShallowArrayStub::Generate(
CodeStubAssembler* assembler, compiler::Node* closure,
- compiler::Node* literal_index, compiler::Node* constant_elements,
- compiler::Node* context, AllocationSiteMode allocation_site_mode) {
+ compiler::Node* literal_index, compiler::Node* context,
+ AllocationSiteMode allocation_site_mode,
rmcilroy 2016/09/16 08:52:26 nit - allocation_site_mode at the end of parameter
klaasb 2016/09/19 13:53:57 Done.
+ CodeStubAssembler::Label* call_runtime) {
typedef CodeStubAssembler::Label Label;
typedef CodeStubAssembler::Variable Variable;
typedef compiler::Node Node;
- Label call_runtime(assembler, Label::kDeferred), zero_capacity(assembler),
- cow_elements(assembler), fast_elements(assembler),
- return_result(assembler);
+ Label zero_capacity(assembler), cow_elements(assembler),
+ fast_elements(assembler), return_result(assembler);
Variable result(assembler, MachineRepresentation::kTagged);
Node* undefined = assembler->UndefinedConstant();
@@ -5725,7 +5725,7 @@ compiler::Node* FastCloneShallowArrayStub::Generate(
CodeStubAssembler::SMI_PARAMETERS);
assembler->GotoIf(assembler->WordEqual(allocation_site, undefined),
- &call_runtime);
+ call_runtime);
Node* boilerplate = assembler->LoadObjectField(
allocation_site, AllocationSite::kTransitionInfoOffset);
@@ -5812,21 +5812,6 @@ compiler::Node* FastCloneShallowArrayStub::Generate(
assembler->Goto(&return_result);
}
- assembler->Bind(&call_runtime);
- {
- assembler->Comment("call runtime");
- Node* flags = assembler->SmiConstant(
- Smi::FromInt(ArrayLiteral::kShallowElements |
- (allocation_site_mode == TRACK_ALLOCATION_SITE
- ? 0
- : ArrayLiteral::kDisableMementos)));
- Node* array =
- assembler->CallRuntime(Runtime::kCreateArrayLiteral, context, closure,
- literal_index, constant_elements, flags);
- result.Bind(array);
- assembler->Goto(&return_result);
- }
-
assembler->Bind(&return_result);
return result.value();
}
@@ -5834,14 +5819,27 @@ compiler::Node* FastCloneShallowArrayStub::Generate(
void FastCloneShallowArrayStub::GenerateAssembly(
CodeStubAssembler* assembler) const {
typedef compiler::Node Node;
+ typedef CodeStubAssembler::Label Label;
Node* closure = assembler->Parameter(Descriptor::kClosure);
Node* literal_index = assembler->Parameter(Descriptor::kLiteralIndex);
Node* constant_elements = assembler->Parameter(Descriptor::kConstantElements);
Node* context = assembler->Parameter(Descriptor::kContext);
+ Label call_runtime(assembler, Label::kDeferred);
+ assembler->Return(Generate(assembler, closure, literal_index, context,
+ allocation_site_mode(), &call_runtime));
- assembler->Return(Generate(assembler, closure, literal_index,
- constant_elements, context,
- allocation_site_mode()));
+ assembler->Bind(&call_runtime);
+ {
+ assembler->Comment("call runtime");
+ Node* flags = assembler->SmiConstant(
+ Smi::FromInt(ArrayLiteral::kShallowElements |
+ (allocation_site_mode() == TRACK_ALLOCATION_SITE
+ ? 0
+ : ArrayLiteral::kDisableMementos)));
+ assembler->Return(assembler->CallRuntime(Runtime::kCreateArrayLiteral,
+ context, closure, literal_index,
+ constant_elements, flags));
+ }
}
void CreateAllocationSiteStub::GenerateAheadOfTime(Isolate* isolate) {

Powered by Google App Engine
This is Rietveld 408576698