| Index: src/full-codegen.cc
|
| diff --git a/src/full-codegen.cc b/src/full-codegen.cc
|
| index 16bb6c0d01330e73bacb096ed5d70619ed615078..165d007571f227460fcc3ea2ab53b4f3e6475e96 100644
|
| --- a/src/full-codegen.cc
|
| +++ b/src/full-codegen.cc
|
| @@ -386,15 +386,6 @@ unsigned FullCodeGenerator::EmitBackEdgeTable() {
|
| }
|
|
|
|
|
| -void FullCodeGenerator::InitializeFeedbackVector() {
|
| - int length = info_->function()->slot_count();
|
| - ASSERT_EQ(isolate()->heap()->the_hole_value(),
|
| - *TypeFeedbackInfo::UninitializedSentinel(isolate()));
|
| - feedback_vector_ = isolate()->factory()->NewFixedArrayWithHoles(length,
|
| - TENURED);
|
| -}
|
| -
|
| -
|
| void FullCodeGenerator::PopulateDeoptimizationData(Handle<Code> code) {
|
| // Fill in the deoptimization information.
|
| ASSERT(info_->HasDeoptimizationSupport() || bailout_entries_.is_empty());
|
| @@ -413,7 +404,6 @@ void FullCodeGenerator::PopulateDeoptimizationData(Handle<Code> code) {
|
| void FullCodeGenerator::PopulateTypeFeedbackInfo(Handle<Code> code) {
|
| Handle<TypeFeedbackInfo> info = isolate()->factory()->NewTypeFeedbackInfo();
|
| info->set_ic_total_count(ic_total_count_);
|
| - info->set_feedback_vector(*FeedbackVector());
|
| ASSERT(!isolate()->heap()->InNewSpace(*info));
|
| code->set_type_feedback_info(*info);
|
| }
|
| @@ -812,10 +802,10 @@ void FullCodeGenerator::VisitModuleUrl(ModuleUrl* module) {
|
|
|
|
|
| int FullCodeGenerator::DeclareGlobalsFlags() {
|
| - ASSERT(DeclareGlobalsLanguageMode::is_valid(language_mode()));
|
| + ASSERT(DeclareGlobalsStrictMode::is_valid(strict_mode()));
|
| return DeclareGlobalsEvalFlag::encode(is_eval()) |
|
| DeclareGlobalsNativeFlag::encode(is_native()) |
|
| - DeclareGlobalsLanguageMode::encode(language_mode());
|
| + DeclareGlobalsStrictMode::encode(strict_mode());
|
| }
|
|
|
|
|
| @@ -905,7 +895,6 @@ void FullCodeGenerator::SetSourcePosition(int pos) {
|
| const FullCodeGenerator::InlineFunctionGenerator
|
| FullCodeGenerator::kInlineFunctionGenerators[] = {
|
| INLINE_FUNCTION_LIST(INLINE_FUNCTION_GENERATOR_ADDRESS)
|
| - INLINE_RUNTIME_FUNCTION_LIST(INLINE_FUNCTION_GENERATOR_ADDRESS)
|
| };
|
| #undef INLINE_FUNCTION_GENERATOR_ADDRESS
|
|
|
| @@ -950,6 +939,34 @@ void FullCodeGenerator::EmitDebugBreakInOptimizedCode(CallRuntime* expr) {
|
| }
|
|
|
|
|
| +void FullCodeGenerator::EmitDoubleHi(CallRuntime* expr) {
|
| + ZoneList<Expression*>* args = expr->arguments();
|
| + ASSERT(args->length() == 1);
|
| + VisitForStackValue(args->at(0));
|
| + masm()->CallRuntime(Runtime::kDoubleHi, 1);
|
| + context()->Plug(result_register());
|
| +}
|
| +
|
| +
|
| +void FullCodeGenerator::EmitDoubleLo(CallRuntime* expr) {
|
| + ZoneList<Expression*>* args = expr->arguments();
|
| + ASSERT(args->length() == 1);
|
| + VisitForStackValue(args->at(0));
|
| + masm()->CallRuntime(Runtime::kDoubleLo, 1);
|
| + context()->Plug(result_register());
|
| +}
|
| +
|
| +
|
| +void FullCodeGenerator::EmitConstructDouble(CallRuntime* expr) {
|
| + ZoneList<Expression*>* args = expr->arguments();
|
| + ASSERT(args->length() == 2);
|
| + VisitForStackValue(args->at(0));
|
| + VisitForStackValue(args->at(1));
|
| + masm()->CallRuntime(Runtime::kConstructDouble, 2);
|
| + context()->Plug(result_register());
|
| +}
|
| +
|
| +
|
| void FullCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) {
|
| switch (expr->op()) {
|
| case Token::COMMA:
|
| @@ -1588,7 +1605,8 @@ void FullCodeGenerator::VisitNativeFunctionLiteral(
|
| bool is_generator = false;
|
| Handle<SharedFunctionInfo> shared =
|
| isolate()->factory()->NewSharedFunctionInfo(name, literals, is_generator,
|
| - code, Handle<ScopeInfo>(fun->shared()->scope_info()));
|
| + code, Handle<ScopeInfo>(fun->shared()->scope_info()),
|
| + Handle<FixedArray>(fun->shared()->feedback_vector()));
|
| shared->set_construct_stub(*construct_stub);
|
|
|
| // Copy the function data to the shared function info.
|
|
|