summaryrefslogtreecommitdiff
path: root/vm_opts.h
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-08-21 20:47:53 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-08-21 20:47:53 +0000
commit7cf523c7db67c22ffc09b38a9c5bea057f578db2 (patch)
tree93119a59a19abdd3a1d931fc27c5828b234418e8 /vm_opts.h
parent42c3a67748da667cb87afd7928718c537cdd8201 (diff)
downloadruby-7cf523c7db67c22ffc09b38a9c5bea057f578db2.tar.gz
* vm_opts.h, iseq.c, iseq.h: add compile option to force frozen
string literals. [Feature #11473] This addition is not specification change, but to try frozen string literal world discussed on [Feature #11473]. You can try frozen string literal world using this magical line: RubyVM::InstructionSequence.compile_option = {frozen_string_literal: true} Note that this is a global compilation option, so that you need to compile another script like that: p 'foo'.frozen? #=> false RubyVM::InstructionSequence.compile_option = {frozen_string_literal: true} p 'foo'.frozen? #=> false, because this line is already compiled. p eval("'foo'.frozen?") #=> true Details: * String literals are deduped by rb_fstring(). * Dynamic string literals ("...#{xyz}...") is now only frozen, not deduped. Maybe you have other ideas. Now, please do not use this option on your productions :) Of course, current specification can be changed. * compile.c: ditto. * test/ruby/test_iseq.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_opts.h')
-rw-r--r--vm_opts.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/vm_opts.h b/vm_opts.h
index b67e2543e7..ad81208e80 100644
--- a/vm_opts.h
+++ b/vm_opts.h
@@ -23,7 +23,7 @@
#define OPT_PEEPHOLE_OPTIMIZATION 1
#define OPT_SPECIALISED_INSTRUCTION 1
#define OPT_INLINE_CONST_CACHE 1
-
+#define OPT_FROZEN_STRING_LITERAL 0
/* Build Options.
* You can't change these options at runtime.