V8 Project
v8::internal::TokenizingLineArrayCompareOutput Class Reference
+ Inheritance diagram for v8::internal::TokenizingLineArrayCompareOutput:
+ Collaboration diagram for v8::internal::TokenizingLineArrayCompareOutput:

Public Member Functions

 TokenizingLineArrayCompareOutput (LineEndsWrapper line_ends1, LineEndsWrapper line_ends2, Handle< String > s1, Handle< String > s2)
 
void AddChunk (int line_pos1, int line_pos2, int line_len1, int line_len2)
 
void SetSubrange1 (int offset, int len)
 
void SetSubrange2 (int offset, int len)
 
Handle< JSArrayGetResult ()
 

Private Attributes

CompareOutputArrayWriter array_writer_
 
LineEndsWrapper line_ends1_
 
LineEndsWrapper line_ends2_
 
Handle< Strings1_
 
Handle< Strings2_
 
int subrange_offset1_
 
int subrange_offset2_
 

Static Private Attributes

static const int CHUNK_LEN_LIMIT = 800
 

Additional Inherited Members

- Protected Member Functions inherited from v8::internal::Comparator::Output
virtual ~Output ()
 

Detailed Description

Definition at line 499 of file liveedit.cc.

Constructor & Destructor Documentation

◆ TokenizingLineArrayCompareOutput()

v8::internal::TokenizingLineArrayCompareOutput::TokenizingLineArrayCompareOutput ( LineEndsWrapper  line_ends1,
LineEndsWrapper  line_ends2,
Handle< String s1,
Handle< String s2 
)
inline

Definition at line 501 of file liveedit.cc.

Member Function Documentation

◆ AddChunk()

void v8::internal::TokenizingLineArrayCompareOutput::AddChunk ( int  line_pos1,
int  line_pos2,
int  line_len1,
int  line_len2 
)
inlinevirtual

Implements v8::internal::Comparator::Output.

Definition at line 509 of file liveedit.cc.

509  {
510  line_pos1 += subrange_offset1_;
511  line_pos2 += subrange_offset2_;
512 
513  int char_pos1 = line_ends1_.GetLineStart(line_pos1);
514  int char_pos2 = line_ends2_.GetLineStart(line_pos2);
515  int char_len1 = line_ends1_.GetLineStart(line_pos1 + line_len1) - char_pos1;
516  int char_len2 = line_ends2_.GetLineStart(line_pos2 + line_len2) - char_pos2;
517 
518  if (char_len1 < CHUNK_LEN_LIMIT && char_len2 < CHUNK_LEN_LIMIT) {
519  // Chunk is small enough to conduct a nested token-level diff.
520  HandleScope subTaskScope(s1_->GetIsolate());
521 
522  TokensCompareInput tokens_input(s1_, char_pos1, char_len1,
523  s2_, char_pos2, char_len2);
524  TokensCompareOutput tokens_output(&array_writer_, char_pos1,
525  char_pos2);
526 
527  Comparator::CalculateDifference(&tokens_input, &tokens_output);
528  } else {
529  array_writer_.WriteChunk(char_pos1, char_pos2, char_len1, char_len2);
530  }
531  }
static void CalculateDifference(Input *input, Output *result_writer)
Definition: liveedit.cc:235
void WriteChunk(int char_pos1, int char_pos2, int char_len1, int char_len2)
Definition: liveedit.cc:330
int GetLineStart(int index)
Definition: liveedit.cc:415

References array_writer_, v8::internal::Comparator::CalculateDifference(), CHUNK_LEN_LIMIT, v8::internal::LineEndsWrapper::GetLineStart(), line_ends1_, line_ends2_, s1_, s2_, subrange_offset1_, subrange_offset2_, and v8::internal::CompareOutputArrayWriter::WriteChunk().

+ Here is the call graph for this function:

◆ GetResult()

Handle<JSArray> v8::internal::TokenizingLineArrayCompareOutput::GetResult ( )
inline

Definition at line 539 of file liveedit.cc.

539  {
540  return array_writer_.GetResult();
541  }

References array_writer_, and v8::internal::CompareOutputArrayWriter::GetResult().

Referenced by v8::internal::LiveEdit::CompareStrings().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetSubrange1()

void v8::internal::TokenizingLineArrayCompareOutput::SetSubrange1 ( int  offset,
int  len 
)
inlinevirtual

Implements v8::internal::SubrangableOutput.

Definition at line 532 of file liveedit.cc.

532  {
533  subrange_offset1_ = offset;
534  }

References subrange_offset1_.

◆ SetSubrange2()

void v8::internal::TokenizingLineArrayCompareOutput::SetSubrange2 ( int  offset,
int  len 
)
inlinevirtual

Implements v8::internal::SubrangableOutput.

Definition at line 535 of file liveedit.cc.

535  {
536  subrange_offset2_ = offset;
537  }

References subrange_offset2_.

Member Data Documentation

◆ array_writer_

CompareOutputArrayWriter v8::internal::TokenizingLineArrayCompareOutput::array_writer_
private

Definition at line 546 of file liveedit.cc.

Referenced by AddChunk(), and GetResult().

◆ CHUNK_LEN_LIMIT

const int v8::internal::TokenizingLineArrayCompareOutput::CHUNK_LEN_LIMIT = 800
staticprivate

Definition at line 544 of file liveedit.cc.

Referenced by AddChunk().

◆ line_ends1_

LineEndsWrapper v8::internal::TokenizingLineArrayCompareOutput::line_ends1_
private

Definition at line 547 of file liveedit.cc.

Referenced by AddChunk().

◆ line_ends2_

LineEndsWrapper v8::internal::TokenizingLineArrayCompareOutput::line_ends2_
private

Definition at line 548 of file liveedit.cc.

Referenced by AddChunk().

◆ s1_

Handle<String> v8::internal::TokenizingLineArrayCompareOutput::s1_
private

Definition at line 549 of file liveedit.cc.

Referenced by AddChunk().

◆ s2_

Handle<String> v8::internal::TokenizingLineArrayCompareOutput::s2_
private

Definition at line 550 of file liveedit.cc.

Referenced by AddChunk().

◆ subrange_offset1_

int v8::internal::TokenizingLineArrayCompareOutput::subrange_offset1_
private

Definition at line 551 of file liveedit.cc.

Referenced by AddChunk(), and SetSubrange1().

◆ subrange_offset2_

int v8::internal::TokenizingLineArrayCompareOutput::subrange_offset2_
private

Definition at line 552 of file liveedit.cc.

Referenced by AddChunk(), and SetSubrange2().


The documentation for this class was generated from the following file: