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

Side by Side Diff: src/code-stub-assembler.cc

Issue 2665143002: [csa] Universally use ParameterMode in BuildFastFixedArrayForEach (Closed)
Patch Set: Created 3 years, 10 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/code-stub-assembler.h ('k') | src/ic/accessor-assembler.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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 #include "src/code-stub-assembler.h" 4 #include "src/code-stub-assembler.h"
5 #include "src/code-factory.h" 5 #include "src/code-factory.h"
6 #include "src/frames-inl.h" 6 #include "src/frames-inl.h"
7 #include "src/frames.h" 7 #include "src/frames.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 1979 matching lines...) Expand 10 before | Expand all | Expand 10 after
1990 IntPtrSub(IntPtrAdd(object, size), IntPtrConstant(kHeapObjectTag)); 1990 IntPtrSub(IntPtrAdd(object, size), IntPtrConstant(kHeapObjectTag));
1991 StoreFieldsNoWriteBarrier(start_address, end_address, filler); 1991 StoreFieldsNoWriteBarrier(start_address, end_address, filler);
1992 } 1992 }
1993 1993
1994 void CodeStubAssembler::StoreFieldsNoWriteBarrier(Node* start_address, 1994 void CodeStubAssembler::StoreFieldsNoWriteBarrier(Node* start_address,
1995 Node* end_address, 1995 Node* end_address,
1996 Node* value) { 1996 Node* value) {
1997 Comment("StoreFieldsNoWriteBarrier"); 1997 Comment("StoreFieldsNoWriteBarrier");
1998 CSA_ASSERT(this, WordIsWordAligned(start_address)); 1998 CSA_ASSERT(this, WordIsWordAligned(start_address));
1999 CSA_ASSERT(this, WordIsWordAligned(end_address)); 1999 CSA_ASSERT(this, WordIsWordAligned(end_address));
2000 BuildFastLoop( 2000 BuildFastLoop(start_address, end_address,
2001 MachineType::PointerRepresentation(), start_address, end_address, 2001 [this, value](Node* current) {
2002 [this, value](Node* current) { 2002 StoreNoWriteBarrier(MachineRepresentation::kTagged, current,
2003 StoreNoWriteBarrier(MachineRepresentation::kTagged, current, value); 2003 value);
2004 }, 2004 },
2005 kPointerSize, IndexAdvanceMode::kPost); 2005 kPointerSize, INTPTR_PARAMETERS, IndexAdvanceMode::kPost);
2006 } 2006 }
2007 2007
2008 Node* CodeStubAssembler::AllocateUninitializedJSArrayWithoutElements( 2008 Node* CodeStubAssembler::AllocateUninitializedJSArrayWithoutElements(
2009 ElementsKind kind, Node* array_map, Node* length, Node* allocation_site) { 2009 ElementsKind kind, Node* array_map, Node* length, Node* allocation_site) {
2010 Comment("begin allocation of JSArray without elements"); 2010 Comment("begin allocation of JSArray without elements");
2011 int base_size = JSArray::kSize; 2011 int base_size = JSArray::kSize;
2012 if (allocation_site != nullptr) { 2012 if (allocation_site != nullptr) {
2013 base_size += AllocationMemento::kSize; 2013 base_size += AllocationMemento::kSize;
2014 } 2014 }
2015 2015
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
2335 Smi* to_index_smi = nullptr; 2335 Smi* to_index_smi = nullptr;
2336 Smi* from_index_smi = nullptr; 2336 Smi* from_index_smi = nullptr;
2337 bool index_same = (from_encoding == to_encoding) && 2337 bool index_same = (from_encoding == to_encoding) &&
2338 (from_index == to_index || 2338 (from_index == to_index ||
2339 (ToInt32Constant(from_index, from_index_constant) && 2339 (ToInt32Constant(from_index, from_index_constant) &&
2340 ToInt32Constant(to_index, to_index_constant) && 2340 ToInt32Constant(to_index, to_index_constant) &&
2341 from_index_constant == to_index_constant) || 2341 from_index_constant == to_index_constant) ||
2342 (ToSmiConstant(from_index, from_index_smi) && 2342 (ToSmiConstant(from_index, from_index_smi) &&
2343 ToSmiConstant(to_index, to_index_smi) && 2343 ToSmiConstant(to_index, to_index_smi) &&
2344 to_index_smi == from_index_smi)); 2344 to_index_smi == from_index_smi));
2345 BuildFastLoop(vars, MachineType::PointerRepresentation(), from_offset, 2345 BuildFastLoop(vars, from_offset, limit_offset,
2346 limit_offset,
2347 [this, from_string, to_string, &current_to_offset, to_increment, 2346 [this, from_string, to_string, &current_to_offset, to_increment,
2348 type, rep, index_same](Node* offset) { 2347 type, rep, index_same](Node* offset) {
2349 Node* value = Load(type, from_string, offset); 2348 Node* value = Load(type, from_string, offset);
2350 StoreNoWriteBarrier( 2349 StoreNoWriteBarrier(
2351 rep, to_string, 2350 rep, to_string,
2352 index_same ? offset : current_to_offset.value(), value); 2351 index_same ? offset : current_to_offset.value(), value);
2353 if (!index_same) { 2352 if (!index_same) {
2354 Increment(current_to_offset, to_increment); 2353 Increment(current_to_offset, to_increment);
2355 } 2354 }
2356 }, 2355 },
2357 from_increment, IndexAdvanceMode::kPost); 2356 from_increment, INTPTR_PARAMETERS, IndexAdvanceMode::kPost);
Igor Sheludko 2017/02/01 17:12:53 mode
danno 2017/02/01 17:33:43 As discussed, this is correct as-is.
2358 } 2357 }
2359 2358
2360 Node* CodeStubAssembler::LoadElementAndPrepareForStore(Node* array, 2359 Node* CodeStubAssembler::LoadElementAndPrepareForStore(Node* array,
2361 Node* offset, 2360 Node* offset,
2362 ElementsKind from_kind, 2361 ElementsKind from_kind,
2363 ElementsKind to_kind, 2362 ElementsKind to_kind,
2364 Label* if_hole) { 2363 Label* if_hole) {
2365 if (IsFastDoubleElementsKind(from_kind)) { 2364 if (IsFastDoubleElementsKind(from_kind)) {
2366 Node* value = 2365 Node* value =
2367 LoadDoubleWithHoleCheck(array, offset, if_hole, MachineType::Float64()); 2366 LoadDoubleWithHoleCheck(array, offset, if_hole, MachineType::Float64());
(...skipping 1391 matching lines...) Expand 10 before | Expand all | Expand 10 after
3759 Node* const search_range_length = SmiUntag(SmiSub(length, from)); 3758 Node* const search_range_length = SmiUntag(SmiSub(length, from));
3760 3759
3761 const int offset = SeqOneByteString::kHeaderSize - kHeapObjectTag; 3760 const int offset = SeqOneByteString::kHeaderSize - kHeapObjectTag;
3762 Node* const begin = IntPtrConstant(offset); 3761 Node* const begin = IntPtrConstant(offset);
3763 Node* const cursor = IntPtrAdd(begin, SmiUntag(from)); 3762 Node* const cursor = IntPtrAdd(begin, SmiUntag(from));
3764 Node* const end = IntPtrAdd(cursor, search_range_length); 3763 Node* const end = IntPtrAdd(cursor, search_range_length);
3765 3764
3766 var_result.Bind(SmiConstant(Smi::FromInt(-1))); 3765 var_result.Bind(SmiConstant(Smi::FromInt(-1)));
3767 3766
3768 BuildFastLoop( 3767 BuildFastLoop(
3769 MachineType::PointerRepresentation(), cursor, end, 3768 cursor, end,
3770 [this, string, needle_char, begin, &var_result, &out](Node* cursor) { 3769 [this, string, needle_char, begin, &var_result, &out](Node* cursor) {
3771 Label next(this); 3770 Label next(this);
3772 Node* value = Load(MachineType::Uint8(), string, cursor); 3771 Node* value = Load(MachineType::Uint8(), string, cursor);
3773 GotoUnless(Word32Equal(value, needle_char), &next); 3772 GotoUnless(Word32Equal(value, needle_char), &next);
3774 3773
3775 // Found a match. 3774 // Found a match.
3776 Node* index = SmiTag(IntPtrSub(cursor, begin)); 3775 Node* index = SmiTag(IntPtrSub(cursor, begin));
3777 var_result.Bind(index); 3776 var_result.Bind(index);
3778 Goto(&out); 3777 Goto(&out);
3779 3778
3780 Bind(&next); 3779 Bind(&next);
3781 }, 3780 },
3782 1, IndexAdvanceMode::kPost); 3781 1, INTPTR_PARAMETERS, IndexAdvanceMode::kPost);
3783 Goto(&out); 3782 Goto(&out);
3784 3783
3785 Bind(&runtime); 3784 Bind(&runtime);
3786 { 3785 {
3787 Node* const pattern = StringFromCharCode(needle_char); 3786 Node* const pattern = StringFromCharCode(needle_char);
3788 Node* const result = 3787 Node* const result =
3789 CallRuntime(Runtime::kStringIndexOf, context, string, pattern, from); 3788 CallRuntime(Runtime::kStringIndexOf, context, string, pattern, from);
3790 var_result.Bind(result); 3789 var_result.Bind(result);
3791 Goto(&out); 3790 Goto(&out);
3792 } 3791 }
(...skipping 992 matching lines...) Expand 10 before | Expand all | Expand 10 after
4785 4784
4786 void CodeStubAssembler::DescriptorLookupLinear(Node* unique_name, 4785 void CodeStubAssembler::DescriptorLookupLinear(Node* unique_name,
4787 Node* descriptors, Node* nof, 4786 Node* descriptors, Node* nof,
4788 Label* if_found, 4787 Label* if_found,
4789 Variable* var_name_index, 4788 Variable* var_name_index,
4790 Label* if_not_found) { 4789 Label* if_not_found) {
4791 Node* first_inclusive = IntPtrConstant(DescriptorArray::ToKeyIndex(0)); 4790 Node* first_inclusive = IntPtrConstant(DescriptorArray::ToKeyIndex(0));
4792 Node* factor = IntPtrConstant(DescriptorArray::kDescriptorSize); 4791 Node* factor = IntPtrConstant(DescriptorArray::kDescriptorSize);
4793 Node* last_exclusive = IntPtrAdd(first_inclusive, IntPtrMul(nof, factor)); 4792 Node* last_exclusive = IntPtrAdd(first_inclusive, IntPtrMul(nof, factor));
4794 4793
4795 BuildFastLoop( 4794 BuildFastLoop(last_exclusive, first_inclusive,
4796 MachineType::PointerRepresentation(), last_exclusive, first_inclusive, 4795 [this, descriptors, unique_name, if_found,
4797 [this, descriptors, unique_name, if_found, 4796 var_name_index](Node* name_index) {
4798 var_name_index](Node* name_index) { 4797 Node* candidate_name =
4799 Node* candidate_name = LoadFixedArrayElement(descriptors, name_index); 4798 LoadFixedArrayElement(descriptors, name_index);
4800 var_name_index->Bind(name_index); 4799 var_name_index->Bind(name_index);
4801 GotoIf(WordEqual(candidate_name, unique_name), if_found); 4800 GotoIf(WordEqual(candidate_name, unique_name), if_found);
4802 }, 4801 },
4803 -DescriptorArray::kDescriptorSize, IndexAdvanceMode::kPre); 4802 -DescriptorArray::kDescriptorSize, INTPTR_PARAMETERS,
4803 IndexAdvanceMode::kPre);
4804 Goto(if_not_found); 4804 Goto(if_not_found);
4805 } 4805 }
4806 4806
4807 void CodeStubAssembler::TryLookupProperty( 4807 void CodeStubAssembler::TryLookupProperty(
4808 Node* object, Node* map, Node* instance_type, Node* unique_name, 4808 Node* object, Node* map, Node* instance_type, Node* unique_name,
4809 Label* if_found_fast, Label* if_found_dict, Label* if_found_global, 4809 Label* if_found_fast, Label* if_found_dict, Label* if_found_global,
4810 Variable* var_meta_storage, Variable* var_name_index, Label* if_not_found, 4810 Variable* var_meta_storage, Variable* var_name_index, Label* if_not_found,
4811 Label* if_bailout) { 4811 Label* if_bailout) {
4812 DCHECK_EQ(MachineRepresentation::kTagged, var_meta_storage->rep()); 4812 DCHECK_EQ(MachineRepresentation::kTagged, var_meta_storage->rep());
4813 DCHECK_EQ(MachineType::PointerRepresentation(), var_name_index->rep()); 4813 DCHECK_EQ(MachineType::PointerRepresentation(), var_name_index->rep());
(...skipping 1438 matching lines...) Expand 10 before | Expand all | Expand 10 after
6252 StoreObjectFieldRoot(cell, WeakCell::kNextOffset, 6252 StoreObjectFieldRoot(cell, WeakCell::kNextOffset,
6253 Heap::kTheHoleValueRootIndex); 6253 Heap::kTheHoleValueRootIndex);
6254 6254
6255 // Store the WeakCell in the feedback vector. 6255 // Store the WeakCell in the feedback vector.
6256 StoreFixedArrayElement(feedback_vector, slot, cell, UPDATE_WRITE_BARRIER, 0, 6256 StoreFixedArrayElement(feedback_vector, slot, cell, UPDATE_WRITE_BARRIER, 0,
6257 CodeStubAssembler::SMI_PARAMETERS); 6257 CodeStubAssembler::SMI_PARAMETERS);
6258 return cell; 6258 return cell;
6259 } 6259 }
6260 6260
6261 Node* CodeStubAssembler::BuildFastLoop( 6261 Node* CodeStubAssembler::BuildFastLoop(
6262 const CodeStubAssembler::VariableList& vars, 6262 const CodeStubAssembler::VariableList& vars, Node* start_index,
6263 MachineRepresentation index_rep, Node* start_index, Node* end_index, 6263 Node* end_index, const FastLoopBody& body, int increment,
6264 const FastLoopBody& body, int increment, IndexAdvanceMode mode) { 6264 ParameterMode parameter_mode, IndexAdvanceMode advance_mode) {
6265 MachineRepresentation index_rep = (parameter_mode == INTPTR_PARAMETERS)
6266 ? MachineType::PointerRepresentation()
6267 : MachineRepresentation::kTaggedSigned;
6265 Variable var(this, index_rep, start_index); 6268 Variable var(this, index_rep, start_index);
6266 VariableList vars_copy(vars, zone()); 6269 VariableList vars_copy(vars, zone());
6267 vars_copy.Add(&var, zone()); 6270 vars_copy.Add(&var, zone());
6268 Label loop(this, vars_copy); 6271 Label loop(this, vars_copy);
6269 Label after_loop(this); 6272 Label after_loop(this);
6270 // Introduce an explicit second check of the termination condition before the 6273 // Introduce an explicit second check of the termination condition before the
6271 // loop that helps turbofan generate better code. If there's only a single 6274 // loop that helps turbofan generate better code. If there's only a single
6272 // check, then the CodeStubAssembler forces it to be at the beginning of the 6275 // check, then the CodeStubAssembler forces it to be at the beginning of the
6273 // loop requiring a backwards branch at the end of the loop (it's not possible 6276 // loop requiring a backwards branch at the end of the loop (it's not possible
6274 // to force the loop header check at the end of the loop and branch forward to 6277 // to force the loop header check at the end of the loop and branch forward to
6275 // it from the pre-header). The extra branch is slower in the case that the 6278 // it from the pre-header). The extra branch is slower in the case that the
6276 // loop actually iterates. 6279 // loop actually iterates.
6277 Branch(WordEqual(var.value(), end_index), &after_loop, &loop); 6280 Branch(WordEqual(var.value(), end_index), &after_loop, &loop);
6278 Bind(&loop); 6281 Bind(&loop);
6279 { 6282 {
6280 if (mode == IndexAdvanceMode::kPre) { 6283 if (advance_mode == IndexAdvanceMode::kPre) {
6281 Increment(var, increment); 6284 Increment(var, increment, parameter_mode);
6282 } 6285 }
6283 body(var.value()); 6286 body(var.value());
6284 if (mode == IndexAdvanceMode::kPost) { 6287 if (advance_mode == IndexAdvanceMode::kPost) {
6285 Increment(var, increment); 6288 Increment(var, increment, parameter_mode);
6286 } 6289 }
6287 Branch(WordNotEqual(var.value(), end_index), &loop, &after_loop); 6290 Branch(WordNotEqual(var.value(), end_index), &loop, &after_loop);
6288 } 6291 }
6289 Bind(&after_loop); 6292 Bind(&after_loop);
6290 return var.value(); 6293 return var.value();
6291 } 6294 }
6292 6295
6293 void CodeStubAssembler::BuildFastFixedArrayForEach( 6296 void CodeStubAssembler::BuildFastFixedArrayForEach(
6294 const CodeStubAssembler::VariableList& vars, Node* fixed_array, 6297 const CodeStubAssembler::VariableList& vars, Node* fixed_array,
6295 ElementsKind kind, Node* first_element_inclusive, 6298 ElementsKind kind, Node* first_element_inclusive,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
6328 Node* start = 6331 Node* start =
6329 ElementOffsetFromIndex(first_element_inclusive, kind, mode, 6332 ElementOffsetFromIndex(first_element_inclusive, kind, mode,
6330 FixedArray::kHeaderSize - kHeapObjectTag); 6333 FixedArray::kHeaderSize - kHeapObjectTag);
6331 Node* limit = 6334 Node* limit =
6332 ElementOffsetFromIndex(last_element_exclusive, kind, mode, 6335 ElementOffsetFromIndex(last_element_exclusive, kind, mode,
6333 FixedArray::kHeaderSize - kHeapObjectTag); 6336 FixedArray::kHeaderSize - kHeapObjectTag);
6334 if (direction == ForEachDirection::kReverse) std::swap(start, limit); 6337 if (direction == ForEachDirection::kReverse) std::swap(start, limit);
6335 6338
6336 int increment = IsFastDoubleElementsKind(kind) ? kDoubleSize : kPointerSize; 6339 int increment = IsFastDoubleElementsKind(kind) ? kDoubleSize : kPointerSize;
6337 BuildFastLoop( 6340 BuildFastLoop(
6338 vars, MachineType::PointerRepresentation(), start, limit, 6341 vars, start, limit,
6339 [fixed_array, &body](Node* offset) { body(fixed_array, offset); }, 6342 [fixed_array, &body](Node* offset) { body(fixed_array, offset); },
6340 direction == ForEachDirection::kReverse ? -increment : increment, 6343 direction == ForEachDirection::kReverse ? -increment : increment,
6344 INTPTR_PARAMETERS,
Igor Sheludko 2017/02/01 17:12:53 mode
danno 2017/02/01 17:33:43 As discussed, this is correct as-is.
6341 direction == ForEachDirection::kReverse ? IndexAdvanceMode::kPre 6345 direction == ForEachDirection::kReverse ? IndexAdvanceMode::kPre
6342 : IndexAdvanceMode::kPost); 6346 : IndexAdvanceMode::kPost);
6343 } 6347 }
6344 6348
6345 void CodeStubAssembler::InitializeFieldsWithRoot( 6349 void CodeStubAssembler::InitializeFieldsWithRoot(
6346 Node* object, Node* start_offset, Node* end_offset, 6350 Node* object, Node* start_offset, Node* end_offset,
6347 Heap::RootListIndex root_index) { 6351 Heap::RootListIndex root_index) {
6348 start_offset = IntPtrAdd(start_offset, IntPtrConstant(-kHeapObjectTag)); 6352 start_offset = IntPtrAdd(start_offset, IntPtrConstant(-kHeapObjectTag));
6349 end_offset = IntPtrAdd(end_offset, IntPtrConstant(-kHeapObjectTag)); 6353 end_offset = IntPtrAdd(end_offset, IntPtrConstant(-kHeapObjectTag));
6350 Node* root_value = LoadRoot(root_index); 6354 Node* root_value = LoadRoot(root_index);
6351 BuildFastLoop(MachineType::PointerRepresentation(), end_offset, start_offset, 6355 BuildFastLoop(end_offset, start_offset,
6352 [this, object, root_value](Node* current) { 6356 [this, object, root_value](Node* current) {
6353 StoreNoWriteBarrier(MachineRepresentation::kTagged, object, 6357 StoreNoWriteBarrier(MachineRepresentation::kTagged, object,
6354 current, root_value); 6358 current, root_value);
6355 }, 6359 },
6356 -kPointerSize, CodeStubAssembler::IndexAdvanceMode::kPre); 6360 -kPointerSize, INTPTR_PARAMETERS,
6361 CodeStubAssembler::IndexAdvanceMode::kPre);
6357 } 6362 }
6358 6363
6359 void CodeStubAssembler::BranchIfNumericRelationalComparison( 6364 void CodeStubAssembler::BranchIfNumericRelationalComparison(
6360 RelationalComparisonMode mode, Node* lhs, Node* rhs, Label* if_true, 6365 RelationalComparisonMode mode, Node* lhs, Node* rhs, Label* if_true,
6361 Label* if_false) { 6366 Label* if_false) {
6362 Label end(this); 6367 Label end(this);
6363 Variable result(this, MachineRepresentation::kTagged); 6368 Variable result(this, MachineRepresentation::kTagged);
6364 6369
6365 // Shared entry for floating point comparison. 6370 // Shared entry for floating point comparison.
6366 Label do_fcmp(this); 6371 Label do_fcmp(this);
(...skipping 1907 matching lines...) Expand 10 before | Expand all | Expand 10 after
8274 if (last == nullptr) { 8279 if (last == nullptr) {
8275 DCHECK_EQ(mode, argc_mode_); 8280 DCHECK_EQ(mode, argc_mode_);
8276 last = argc_; 8281 last = argc_;
8277 } 8282 }
8278 Node* start = assembler_->IntPtrSub( 8283 Node* start = assembler_->IntPtrSub(
8279 arguments_, 8284 arguments_,
8280 assembler_->ElementOffsetFromIndex(first, FAST_ELEMENTS, mode)); 8285 assembler_->ElementOffsetFromIndex(first, FAST_ELEMENTS, mode));
8281 Node* end = assembler_->IntPtrSub( 8286 Node* end = assembler_->IntPtrSub(
8282 arguments_, 8287 arguments_,
8283 assembler_->ElementOffsetFromIndex(last, FAST_ELEMENTS, mode)); 8288 assembler_->ElementOffsetFromIndex(last, FAST_ELEMENTS, mode));
8284 assembler_->BuildFastLoop( 8289 assembler_->BuildFastLoop(vars, start, end,
8285 vars, MachineType::PointerRepresentation(), start, end, 8290 [this, &body](Node* current) {
8286 [this, &body](Node* current) { 8291 Node* arg = assembler_->Load(
8287 Node* arg = assembler_->Load(MachineType::AnyTagged(), current); 8292 MachineType::AnyTagged(), current);
8288 body(arg); 8293 body(arg);
8289 }, 8294 },
8290 -kPointerSize, CodeStubAssembler::IndexAdvanceMode::kPost); 8295 -kPointerSize, CodeStubAssembler::INTPTR_PARAMETERS,
8296 CodeStubAssembler::IndexAdvanceMode::kPost);
8291 } 8297 }
8292 8298
8293 void CodeStubArguments::PopAndReturn(Node* value) { 8299 void CodeStubArguments::PopAndReturn(Node* value) {
8294 assembler_->PopAndReturn( 8300 assembler_->PopAndReturn(
8295 assembler_->IntPtrAdd(argc_, assembler_->IntPtrConstant(1)), value); 8301 assembler_->IntPtrAdd(argc_, assembler_->IntPtrConstant(1)), value);
8296 } 8302 }
8297 8303
8298 Node* CodeStubAssembler::IsFastElementsKind(Node* elements_kind) { 8304 Node* CodeStubAssembler::IsFastElementsKind(Node* elements_kind) {
8299 return Uint32LessThanOrEqual(elements_kind, 8305 return Uint32LessThanOrEqual(elements_kind,
8300 Int32Constant(LAST_FAST_ELEMENTS_KIND)); 8306 Int32Constant(LAST_FAST_ELEMENTS_KIND));
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
8398 formatted.c_str(), TENURED); 8404 formatted.c_str(), TENURED);
8399 CallRuntime(Runtime::kGlobalPrint, NoContextConstant(), 8405 CallRuntime(Runtime::kGlobalPrint, NoContextConstant(),
8400 HeapConstant(string)); 8406 HeapConstant(string));
8401 } 8407 }
8402 CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value); 8408 CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value);
8403 #endif 8409 #endif
8404 } 8410 }
8405 8411
8406 } // namespace internal 8412 } // namespace internal
8407 } // namespace v8 8413 } // namespace v8
OLDNEW
« no previous file with comments | « src/code-stub-assembler.h ('k') | src/ic/accessor-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698