| Index: src/factory.cc
|
| ===================================================================
|
| --- src/factory.cc (revision 1472)
|
| +++ src/factory.cc (working copy)
|
| @@ -153,17 +153,32 @@
|
|
|
|
|
| Handle<Script> Factory::NewScript(Handle<String> source) {
|
| - static uint32_t next_id = 1;
|
| -
|
| + // Generate id for this script.
|
| + int id;
|
| + if (Heap::last_script_id()->IsUndefined()) {
|
| + // Script ids start from one.
|
| + id = 1;
|
| + } else {
|
| + // Increment id, wrap when positive smi is exhausted.
|
| + id = Smi::cast(Heap::last_script_id())->value();
|
| + id++;
|
| + if (!Smi::IsValid(id)) {
|
| + id = 0;
|
| + }
|
| + }
|
| + Heap::SetLastScriptId(Smi::FromInt(id));
|
| +
|
| + // Create and initialize script object.
|
| Handle<Script> script = Handle<Script>::cast(NewStruct(SCRIPT_TYPE));
|
| script->set_source(*source);
|
| script->set_name(Heap::undefined_value());
|
| - script->set_id(*Factory::NewNumberFromUint(next_id++));
|
| + script->set_id(Heap::last_script_id());
|
| script->set_line_offset(Smi::FromInt(0));
|
| script->set_column_offset(Smi::FromInt(0));
|
| script->set_type(Smi::FromInt(SCRIPT_TYPE_NORMAL));
|
| script->set_wrapper(*Factory::NewProxy(0, TENURED));
|
| script->set_line_ends(Heap::undefined_value());
|
| +
|
| return script;
|
| }
|
|
|
|
|