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

Side by Side Diff: src/liveedit.cc

Issue 23708030: Get rid of most uses of 'Temporary macro' HEAP (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: nits Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/jsregexp.h ('k') | src/mark-compact-inl.h » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1226 1226
1227 // Returns true if an instance of candidate were inlined into function's code. 1227 // Returns true if an instance of candidate were inlined into function's code.
1228 static bool IsInlined(JSFunction* function, SharedFunctionInfo* candidate) { 1228 static bool IsInlined(JSFunction* function, SharedFunctionInfo* candidate) {
1229 DisallowHeapAllocation no_gc; 1229 DisallowHeapAllocation no_gc;
1230 1230
1231 if (function->code()->kind() != Code::OPTIMIZED_FUNCTION) return false; 1231 if (function->code()->kind() != Code::OPTIMIZED_FUNCTION) return false;
1232 1232
1233 DeoptimizationInputData* data = 1233 DeoptimizationInputData* data =
1234 DeoptimizationInputData::cast(function->code()->deoptimization_data()); 1234 DeoptimizationInputData::cast(function->code()->deoptimization_data());
1235 1235
1236 if (data == HEAP->empty_fixed_array()) return false; 1236 if (data == function->GetIsolate()->heap()->empty_fixed_array()) {
1237 return false;
1238 }
1237 1239
1238 FixedArray* literals = data->LiteralArray(); 1240 FixedArray* literals = data->LiteralArray();
1239 1241
1240 int inlined_count = data->InlinedFunctionCount()->value(); 1242 int inlined_count = data->InlinedFunctionCount()->value();
1241 for (int i = 0; i < inlined_count; ++i) { 1243 for (int i = 0; i < inlined_count; ++i) {
1242 JSFunction* inlined = JSFunction::cast(literals->get(i)); 1244 JSFunction* inlined = JSFunction::cast(literals->get(i));
1243 if (inlined->shared() == candidate) return true; 1245 if (inlined->shared() == candidate) return true;
1244 } 1246 }
1245 1247
1246 return false; 1248 return false;
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1542 position_change_array); 1544 position_change_array);
1543 int new_function_end = TranslatePosition(info->end_position(), 1545 int new_function_end = TranslatePosition(info->end_position(),
1544 position_change_array); 1546 position_change_array);
1545 int new_function_token_pos = 1547 int new_function_token_pos =
1546 TranslatePosition(info->function_token_position(), position_change_array); 1548 TranslatePosition(info->function_token_position(), position_change_array);
1547 1549
1548 info->set_start_position(new_function_start); 1550 info->set_start_position(new_function_start);
1549 info->set_end_position(new_function_end); 1551 info->set_end_position(new_function_end);
1550 info->set_function_token_position(new_function_token_pos); 1552 info->set_function_token_position(new_function_token_pos);
1551 1553
1552 HEAP->EnsureHeapIsIterable(); 1554 info->GetIsolate()->heap()->EnsureHeapIsIterable();
1553 1555
1554 if (IsJSFunctionCode(info->code())) { 1556 if (IsJSFunctionCode(info->code())) {
1555 // Patch relocation info section of the code. 1557 // Patch relocation info section of the code.
1556 Handle<Code> patched_code = PatchPositionsInCode(Handle<Code>(info->code()), 1558 Handle<Code> patched_code = PatchPositionsInCode(Handle<Code>(info->code()),
1557 position_change_array); 1559 position_change_array);
1558 if (*patched_code != info->code()) { 1560 if (*patched_code != info->code()) {
1559 // Replace all references to the code across the heap. In particular, 1561 // Replace all references to the code across the heap. In particular,
1560 // some stubs may refer to this code and this code may be being executed 1562 // some stubs may refer to this code and this code may be being executed
1561 // on stack (it is safe to substitute the code object on stack, because 1563 // on stack (it is safe to substitute the code object on stack, because
1562 // we only change the structure of rinfo and leave instructions 1564 // we only change the structure of rinfo and leave instructions
1563 // untouched). 1565 // untouched).
1564 ReplaceCodeObject(Handle<Code>(info->code()), patched_code); 1566 ReplaceCodeObject(Handle<Code>(info->code()), patched_code);
1565 } 1567 }
1566 } 1568 }
1567 1569
1568 return HEAP->undefined_value(); 1570 return info->GetIsolate()->heap()->undefined_value();
1569 } 1571 }
1570 1572
1571 1573
1572 static Handle<Script> CreateScriptCopy(Handle<Script> original) { 1574 static Handle<Script> CreateScriptCopy(Handle<Script> original) {
1573 Isolate* isolate = original->GetIsolate(); 1575 Isolate* isolate = original->GetIsolate();
1574 1576
1575 Handle<String> original_source(String::cast(original->source())); 1577 Handle<String> original_source(String::cast(original->source()));
1576 Handle<Script> copy = isolate->factory()->NewScript(original_source); 1578 Handle<Script> copy = isolate->factory()->NewScript(original_source);
1577 1579
1578 copy->set_name(original->name()); 1580 copy->set_name(original->name());
(...skipping 25 matching lines...) Expand all
1604 old_script_object = old_script; 1606 old_script_object = old_script;
1605 isolate->debugger()->OnAfterCompile( 1607 isolate->debugger()->OnAfterCompile(
1606 old_script, Debugger::SEND_WHEN_DEBUGGING); 1608 old_script, Debugger::SEND_WHEN_DEBUGGING);
1607 } else { 1609 } else {
1608 old_script_object = isolate->factory()->null_value(); 1610 old_script_object = isolate->factory()->null_value();
1609 } 1611 }
1610 1612
1611 original_script->set_source(*new_source); 1613 original_script->set_source(*new_source);
1612 1614
1613 // Drop line ends so that they will be recalculated. 1615 // Drop line ends so that they will be recalculated.
1614 original_script->set_line_ends(HEAP->undefined_value()); 1616 original_script->set_line_ends(isolate->heap()->undefined_value());
1615 1617
1616 return *old_script_object; 1618 return *old_script_object;
1617 } 1619 }
1618 1620
1619 1621
1620 1622
1621 void LiveEdit::ReplaceRefToNestedFunction( 1623 void LiveEdit::ReplaceRefToNestedFunction(
1622 Handle<JSValue> parent_function_wrapper, 1624 Handle<JSValue> parent_function_wrapper,
1623 Handle<JSValue> orig_function_wrapper, 1625 Handle<JSValue> orig_function_wrapper,
1624 Handle<JSValue> subst_function_wrapper) { 1626 Handle<JSValue> subst_function_wrapper) {
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
2152 2154
2153 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) { 2155 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) {
2154 return false; 2156 return false;
2155 } 2157 }
2156 2158
2157 #endif // ENABLE_DEBUGGER_SUPPORT 2159 #endif // ENABLE_DEBUGGER_SUPPORT
2158 2160
2159 2161
2160 2162
2161 } } // namespace v8::internal 2163 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/jsregexp.h ('k') | src/mark-compact-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698