Reviewers: Mads Ager, Description: Merge revisions 1412 and 1416 from bleeding_edge to trunk forming V8 version 1.0.3.2. Fixes issue 253 and issue 246.
Please review this at http://codereview.chromium.org/39128 SVN Base: http://v8.googlecode.com/svn/trunk/ Affected files: M src/api.cc M src/parser.cc M src/runtime.cc Index: src/api.cc =================================================================== --- src/api.cc (revision 1415) +++ src/api.cc (working copy) @@ -2185,7 +2185,7 @@ const char* v8::V8::GetVersion() { - return "1.0.3.1"; + return "1.0.3.2"; } Index: src/runtime.cc =================================================================== --- src/runtime.cc (revision 1415) +++ src/runtime.cc (working copy) @@ -2164,16 +2164,22 @@ static Object* Runtime_ToFastProperties(Arguments args) { ASSERT(args.length() == 1); - CONVERT_ARG_CHECKED(JSObject, object, 0); - object->TransformToFastProperties(0); + Handle<Object> object = args.at<Object>(0); + if (object->IsJSObject()) { + Handle<JSObject> js_object = Handle<JSObject>::cast(object); + js_object->TransformToFastProperties(0); + } return *object; } static Object* Runtime_ToSlowProperties(Arguments args) { ASSERT(args.length() == 1); - CONVERT_ARG_CHECKED(JSObject, object, 0); - object->NormalizeProperties(CLEAR_INOBJECT_PROPERTIES); + Handle<Object> object = args.at<Object>(0); + if (object->IsJSObject()) { + Handle<JSObject> js_object = Handle<JSObject>::cast(object); + js_object->NormalizeProperties(CLEAR_INOBJECT_PROPERTIES); + } return *object; } Index: src/parser.cc =================================================================== --- src/parser.cc (revision 1415) +++ src/parser.cc (working copy) @@ -3607,7 +3607,7 @@ next_pos_(0), in_(in), error_(error), - simple_(true), + simple_(false), contains_anchor_(false), captures_(NULL), is_scanned_for_captures_(false), @@ -3677,6 +3677,11 @@ if (has_more()) { ReportError(CStrVector("Unmatched ')'") CHECK_FAILED); } + // If the result of parsing is a literal string atom, and it has the + // same length as the input, then the atom is identical to the input. + if (result->IsAtom() && result->AsAtom()->length() == in()->length()) { + simple_ = true; + } return result; } @@ -3876,7 +3881,6 @@ Advance(2); break; } - simple_ = false; break; case '{': { int dummy; @@ -3933,7 +3937,6 @@ is_greedy = false; Advance(); } - simple_ = false; // Adding quantifier might *remove* look-ahead. builder.AddQuantifierToAtom(min, max, is_greedy); } } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
