Revision: 22307
Author: [email protected]
Date: Wed Jul 9 14:50:23 2014 UTC
Log: Parser / Scanner: Minor refactorings to make streaming scripts
work easier.
1) Call DeserializeScopeChain only if it's going to do something
non-trivial. And we only need to internalize the AstValueFactory in those
cases.
2) BufferedUtf16CharacterStream::FillBuffer doesn't need the length
argument. The length is always kBufferSize and the subclasses can just read
it
(it's protected).
[email protected]
BUG=
Review URL: https://codereview.chromium.org/381613003
http://code.google.com/p/v8/source/detail?r=22307
Modified:
/branches/bleeding_edge/src/parser.cc
/branches/bleeding_edge/src/scanner-character-streams.cc
/branches/bleeding_edge/src/scanner-character-streams.h
=======================================
--- /branches/bleeding_edge/src/parser.cc Wed Jul 9 11:35:05 2014 UTC
+++ /branches/bleeding_edge/src/parser.cc Wed Jul 9 14:50:23 2014 UTC
@@ -859,7 +859,7 @@
FunctionLiteral* result = NULL;
{ Scope* scope = NewScope(scope_, GLOBAL_SCOPE);
info->SetGlobalScope(scope);
- if (!info->context().is_null()) {
+ if (!info->context().is_null() && !info->context()->IsNativeContext())
{
scope = Scope::DeserializeScopeChain(*info->context(), scope,
zone());
// The Scope is backed up by ScopeInfo (which is in the V8 heap);
this
// means the Parser cannot operate independent of the V8 heap. Tell
the
=======================================
--- /branches/bleeding_edge/src/scanner-character-streams.cc Tue Jun 3
08:12:43 2014 UTC
+++ /branches/bleeding_edge/src/scanner-character-streams.cc Wed Jul 9
14:50:23 2014 UTC
@@ -78,7 +78,7 @@
if (buffer_cursor_ < buffer_end_) return true;
// Otherwise read a new block.
}
- unsigned length = FillBuffer(pos_, kBufferSize);
+ unsigned length = FillBuffer(pos_);
buffer_end_ = buffer_ + length;
return length > 0;
}
@@ -118,9 +118,9 @@
}
-unsigned GenericStringUtf16CharacterStream::FillBuffer(unsigned from_pos,
- unsigned length) {
+unsigned GenericStringUtf16CharacterStream::FillBuffer(unsigned from_pos) {
if (from_pos >= length_) return 0;
+ unsigned length = kBufferSize;
if (from_pos + length > length_) {
length = length_ - from_pos;
}
@@ -155,8 +155,7 @@
}
-unsigned Utf8ToUtf16CharacterStream::FillBuffer(unsigned char_position,
- unsigned length) {
+unsigned Utf8ToUtf16CharacterStream::FillBuffer(unsigned char_position) {
static const unibrow::uchar kMaxUtf16Character = 0xffff;
SetRawPosition(char_position);
if (raw_character_position_ != char_position) {
@@ -165,7 +164,7 @@
return 0u;
}
unsigned i = 0;
- while (i < length - 1) {
+ while (i < kBufferSize - 1) {
if (raw_data_pos_ == raw_data_length_) break;
unibrow::uchar c = raw_data_[raw_data_pos_];
if (c <= unibrow::Utf8::kMaxOneByteChar) {
=======================================
--- /branches/bleeding_edge/src/scanner-character-streams.h Tue Jun 3
08:12:43 2014 UTC
+++ /branches/bleeding_edge/src/scanner-character-streams.h Wed Jul 9
14:50:23 2014 UTC
@@ -29,7 +29,7 @@
virtual void SlowPushBack(uc16 character);
virtual unsigned BufferSeekForward(unsigned delta) = 0;
- virtual unsigned FillBuffer(unsigned position, unsigned length) = 0;
+ virtual unsigned FillBuffer(unsigned position) = 0;
const uc16* pushback_limit_;
uc16 buffer_[kBufferSize];
@@ -46,7 +46,7 @@
protected:
virtual unsigned BufferSeekForward(unsigned delta);
- virtual unsigned FillBuffer(unsigned position, unsigned length);
+ virtual unsigned FillBuffer(unsigned position);
Handle<String> string_;
unsigned length_;
@@ -61,7 +61,7 @@
protected:
virtual unsigned BufferSeekForward(unsigned delta);
- virtual unsigned FillBuffer(unsigned char_position, unsigned length);
+ virtual unsigned FillBuffer(unsigned char_position);
void SetRawPosition(unsigned char_position);
const byte* raw_data_;
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.